Hello guys,
I am working on a project whose purpose is to maximize core utilization. For that purpose we need instruction sizes of each task. From binary analysis in XMOS, we are able to get stack sizes and sizes in bytes. Is there a way to determine how many instructions it takes for XMOS to run task?
- Can be either from a tracing method ( from deadlines, times etc)
or
- Is there a way it is calculated from the results of binary analyser?
Ideas are much appreciated.
Thanks,
Best regards
Instruction size for tasks
-
- Experienced Member
- Posts: 75
- Joined: Sat May 07, 2016 11:47 am
-
Verified
- Respected Member
- Posts: 347
- Joined: Wed Jan 27, 2016 5:21 pm
Hi mozcelikors,
There are a few ways to achieve this:
- The XTA can tell you exactly how long each task will take, assuming IO is non blocking, and will produce worst case numbers for anything data dependent. Stick an endpoint either side of the task, and ask it to report
- You can stick a timer around each task and measure the task at real-time; this assumes that anything data dependent is "representative", and any IO is representative. If you have 5 tasks or fewer (Xcore200) or 4 tasks or fewer (XS1), this will give you a precise answer. Otherwise you have to order your tasks to length; the shortest 5 are correct, then you have to compensate task 6 for the bit of extra MIPS they got when the first task finished; then you have to compensate task 7 for the extra MIPS that the first two tasks left, etc.
Keep in mind - any channel communication may cause an imbalance.
Cheers,
Henk
There are a few ways to achieve this:
- The XTA can tell you exactly how long each task will take, assuming IO is non blocking, and will produce worst case numbers for anything data dependent. Stick an endpoint either side of the task, and ask it to report
- You can stick a timer around each task and measure the task at real-time; this assumes that anything data dependent is "representative", and any IO is representative. If you have 5 tasks or fewer (Xcore200) or 4 tasks or fewer (XS1), this will give you a precise answer. Otherwise you have to order your tasks to length; the shortest 5 are correct, then you have to compensate task 6 for the bit of extra MIPS they got when the first task finished; then you have to compensate task 7 for the extra MIPS that the first two tasks left, etc.
Keep in mind - any channel communication may cause an imbalance.
Cheers,
Henk
-
- Experienced Member
- Posts: 75
- Joined: Sat May 07, 2016 11:47 am
Hello again,
I am trying to see functions with the function loader in XTA. That way, I'm planning to see instruction count myself from Visualizations > Structure window.
But the thing is, I dont know it's because of a bug or if I'm doing something wrong, only some functions that does not interest me really much can be loaded from function loader (Hence, "Select Function to Analyze").
Plus, also there is no "Add Node Point" option for code referencing for instruction analysis that I saw a friend did in his MacOsX version.
Do you know how to access other functions, especially task functions in XTA? That way I want to read instruction sizes, WCET, BCET values. Thanks in advance.

(Running xTimeComposer 14.2.4 32-bit Linux)
I am trying to see functions with the function loader in XTA. That way, I'm planning to see instruction count myself from Visualizations > Structure window.
But the thing is, I dont know it's because of a bug or if I'm doing something wrong, only some functions that does not interest me really much can be loaded from function loader (Hence, "Select Function to Analyze").
Plus, also there is no "Add Node Point" option for code referencing for instruction analysis that I saw a friend did in his MacOsX version.
Do you know how to access other functions, especially task functions in XTA? That way I want to read instruction sizes, WCET, BCET values. Thanks in advance.

(Running xTimeComposer 14.2.4 32-bit Linux)