two more things to say ( yeah two more
):
first about my example of saving a video-stream onto a Blu-Ray disc while you are away or you are watching TV or something... what about DRM you will say ?
Well that can be dealt with: the stream might come with some code and bits here and there set so that the stream might play only in the Cell devices you registered ( this would imply that after you buy your Cell product you connect it online [even on a 56 k conenction] and it gets registered under your User_id and generating a key that would be written in those streams you save to a Blu-Ray disc ) and would not be playable after a certain date has expired or forever if you "electronically bought" the video...
Playing that Blu-Ray disc on another user device would not be allowed unless your subscription plan allowed you ( this can be encoded in the audio/video stream itself )...
Vince,
about the absolute timer... let me post all the relevant sections in the patent ( I love thinkering with this synchronization issue
):
[0139] The processors of system 101 also employ an absolute timer. The absolute timer provides a clock signal to the APUs and other elements of a PE which is both independent of, and faster than, the clock signal driving these elements. The use of this absolute timer is illustrated in FIG. 28.
[0140] As shown in this figure, the absolute timer establishes a time budget for the performance of tasks by the APUs. This time budget provides a time for completing these tasks which is longer than that necessary for the APUs' processing of the tasks. As a result, for each task, there is, within the time budget, a busy period and a standby period. All apulets are written for processing on the basis of this time budget regardless of the APUs' actual processing time or speed.
[0141] For example, for a particular APU of a PE, a particular task may be performed during busy period 2802 of time budget 2804. Since busy period 2802 is less than time budget 2804, a standby period 2806 occurs during the time budget. During this standby period, the APU goes into a sleep mode during which less power is consumed by the APU.
[0142] The results of processing a task are not expected by other APUs [edit: in the same PE I expect], or other elements of a PE, until a time budget 2804 expires. Using the time budget established by the absolute timer, therefore, the results of the APUs' processing always are coordinated regardless of the APUs' actual processing speeds.
[0143] In the future, the speed of processing by the APUs will become faster. The time budget established by the absolute timer, however, will remain the same. For example, as shown in FIG. 28, an APU in the future will execute a task in a shorter period and, therefore, will have a longer standby period. Busy period 2808, therefore, is shorter than busy period 2802, and standby period 2810 is longer than standby period 2806. However, since programs are written for processing on the basis of the same time budget established by the absolute timer, coordination of the results of processing among the APUs is maintained. As a result, faster APUs can process programs written for slower APUs without causing conflicts in the times at which the results of this processing are expected.
[0144] In lieu of an absolute timer to establish coordination among the APUs, the PU, or one or more designated APUs, can analyze the particular instructions or microcode being executed by an APU in processing an apulet for problems in the coordination of the APUs' parallel processing created by enhanced or different operating speeds. "No operation" ("NOOP") instructions can be inserted into the instructions and executed by some of the APUs to maintain the proper sequential completion of processing by the APUs expected by the apulet. By inserting these NOOPs into the instructions, the correct timing for the APUs' execution of all instructions can be maintained.
So we have two things here ( I will post this message first and I will expand on these two things in a later post, so that people can read this at least ):
a.) an
absolute timer to cordinate execution of code
across different APUs ( Software Cells, as you can see in the headers of the software Cells themselves, are allowed to require a certain number of APUs to be used for the APU program(s)/code ). The "Time Slice" is as long as all the APUs needed for "that specific task" need to finish the task.
b.) each APU (
, wel quite a shock almost... ) can parse the APU program and insert NOOPs if the code was written for a slower APU ( you would increase the standby period by inserting the NOOPs when you are executing code generated for a slower APU on a faster APU... )...
The absolute timer is always faster than the clock speed of the Cell chip we have and always tries to give us a specific time budget ( for all the APUs that perform a task the time slice given to them is longer than the time they will all be done with that task )...
I think that the solution to my problem is easier than what I expected it to be... since the absolute timer orchestrate execution across APUs on the same chip, as long as we do not go with an asynchronous design in which we clock some APU slower than others ( if we clocked them faster than the speed the code running on them was generated at it would not be a problem, put some NOOPs, but I'd stay away from asynchronous design for a while ) we should not run into troubles...
See, if we design a program for a 2 GHz Cell chip which uses in parallel 4 APUs and we try to run it on a 1 GHz Cell chip with 4 available APUs there is not going to be a problem: you see that the "finished" result coming out later than if we ran the program on a 2 GHz machine ( more thought to be put here if you were thinking about synchronization issues between several different Cell based boxes on a network link ), but it would come out first of all and it would come out
CORRECT if our plan was only to offload processing to another set of free APUs and wait until they reply that the data is available...
I mean if the program was written for a 2 GHz machine with 2 GHz APU, well the program is running now on a 1 GHz machine with 1 GHz APUs... if it takes half a time unit for step 1 on APU 1 at 2 GHz it will take half a time unit on the APU 2 thatg runs at 1 GHz as the absolute timer changes with clock speed...
( and you have some APUs that would wait for those messages... goodness, I am drooling over Cell already :lol bad Panajev bad
... I keep thinking at how versatile this architecture is [see the TCP/IP processing examples and the MPEG processing example in the patent] )...
Edit to the edit: I was going ballistic... too far...