If they can, I just don't see how, they don't change the Absolute timer as devices get faster. In the example they gave, it seems as devices get faster, while the Absolute timer remains the same, those faster APUs sleeps to conserve power while waiting for their time budget to expires, thus the processing speed as a whole is limited by Absolute timer.
I agree, Figure 28 clearly shows that and you can even give a thought about what the compiler does: if you specify you're compiling for PS3 the code you previously were compiling for the PDA ( you would have profiles for the FAMILY of Cell device and its generation... PS4 might be known as PS3 family, generation number 2... Cell-PS3 architecture
) what the compiler will do is schedule the tasks differently... let's say that in an apulet we have several tasks to be processed... if we can specify which Cell architecture we are compiling it for ( no it won't introduce backwards compatibility issues, thanks to the absolute timer and the fact the devices will be faster in the future instead of slower... ) we can change the amount of operations to be performed in each task ( pre-calculating data for the next task if there are not dependency problems between the two tasks with those operations )
In theory they would change the absolute timer as infact they define the absolute timer as based of a clock independent and faster thant the APUs' clock... so if next generation of Cell device C has 6 GHz, the absolute timer would increase if we go by their word ( I know your point and I agree, just stay with me...
)...
They also say though that as devices get faster the absolute timer stays the same...
See the strange issue here ?
Well, the way I think it could be is related to the wording of the patent...
More specifically they say that the processor presented in the document had the absolute timer set to that certain frequency ( higher than the APUs' frequency ) and that it won't change in next iteration of Cell processors...
So my guess would be that they could have the processor present in the patent run at a very low speed: thinking about a minimal Cell device with low clock speed and then set the absolute timer with a clock signal that is just a bit higher than this low clock speed this basic Cell device is set at.
So all Cell devices manufactured ( that prototype Cell device, we derived the absolute timer from, would never be manufactured ) would have an APU processing speed that would be faster and the absolute timer would be set according to the prototype Cell device with minimal spec configuration...
Hmm, they all could have the same clock speed for a generation or so.
This is not a stupid idea... a PDA could be running at 4 GHz if realized in 65 nm and with the much lower transistor budget than a CPU like the Broadband Engine presented in the patent... but a TV would not need such a fast chip... it would be very tiny though, even smaller than the PDA chip so who knows...
Then again, since the operations the TV Cell and the PDA Cell would do compared to PS3 would be a bit less computationally intensive and during the longer sleep time period the Cell chip would consume a very little amount of power...
Ok, let's shift gears a bit ( always wanted to say that
) and go back to the first part of my reply to your message ( in this post, after the first quote )...
I agree with you that in the header of the software Cells we have no information regarding the clock-speed or the absolute timer setting, we have no such fields to simply state it...
We have the number of required APUs to do the job... so if your Cell device doesn't have the needed number of APUs the apulet will migrate... on that we agree...
What about the speed and the absolute timer ? Well we have no information related to these items in the apulet header, but we do have that data embedded into the code itself...
It is true when we write code ( write != compile ) we do not think about the processing speed of the machine and what we worry about is synchronization of the different APUs and different parts of the task we are executing, etc...
We basically synchronize on the absolute timer... "timer fires => APU is woken up => result is expected" sounds like multi-tasking on a modern OS, but with some of its mechanism ( of the process/task/thread scheduler ) built in HW or so it seems...
As I wrote at the beginning of this message I do believe that in the code we have a way of specifying the speed of the CPU: how else could we talk about code written "for an older/slower APU" running on a "newer/faster APU"... this also implies we can write code that gets compiled in such a way we can define it as being "tailored for a newer/faster APU"...
What changes should the amount of operations you can do for each task...
If you know you are writing code for a 8 GHz Cell device and we assume the time slice given by the absolute timer has been remaining the same since the first Cell ( "the time slice given by the absolute timer will not change" ) than we will know ( and the compiler will too ) that we can fit more work in each time slice offered by the absolute timer so that we can reach a higher level of utilization for our HW ( we are not interested about power consumption, in this example, but about performance ).
How about the code that would be taking care of communication and data sharing between our beloved 2 GHz device A and 1 GHz device B ?
well that code IMHO ( and all the software Cells that are sent to device B ) would use apulets written with a certain basic spec in mind that fitst both device A and device B ( internal ) time slices...
All, unless device B is recognized to be of same speed as device A... in that case ( think about a renderfarm... ) we want that both devices run the same code ( tailored for 2 GHz )...
How could this be done ? Well Cell OS could be modular as supporting several modules with each of the modules having different purposes ( let's talk about this in the real of communicating and sharing data with other Cell devices ):
One module would be used to communicate with the PDA-Cell family, generation 1 ( the issue of implementing newer modules and to phase out the ones that are obsolete can be dealt at another time )... this will fit also generation 2, 3, etc...
( //disclaimer: no I am not assuming the first generation of Cell devices
//will share the same closk-speed for the purpose of the point
//I am arguing now )
Another module would be used to talk with the HDTV-Cell family generation 1 ( different speed compared to PDA-Cell family generation 1 )
...
and so on...
Naturally you would have the nice and lean module that would allow the device to commnicate with other devices in the same Cell family ( the OS would have it always compiled in the kernel... the other modules could be called upon request and loaded in memory )...
I apologize for the "stream of consciousness" type of post... I will try to be more organized next time