Is the XMOS instruction set liable to change?
-
- Member++
- Posts: 31
- Joined: Thu Dec 10, 2009 10:11 pm
As far as the pipeline goes. There is never more than one instruction from any specific thread in the pipeline. One stage in the pipeline is used for memory access. For branch instructions, this stage is used to fetch the instruction(s) at the branch target if the branch is taken. There is no need for a branch target cache. The timing is the same whether or not the branch is taken.
-
- Respected Member
- Posts: 296
- Joined: Thu Dec 10, 2009 10:33 pm
Thank you David.
The lesson is clear, as a veteran cycle counter I have to foster the habit of using the available timing facilities, clocked ports, serializers etc instead. Oh, and be careful with divides.
Good to hear that branches have the same execution time whichever way they go, I'm sure I will find myself counting cycles sometimes.
Speaking of which I understand that soon there will be a tool to perform timing analysis. I'm intrigued by this idea. I have only ever worked with one compiler that could report the exact execution time of your programs. That was Lucol from Lucas Aerospace.
The lesson is clear, as a veteran cycle counter I have to foster the habit of using the available timing facilities, clocked ports, serializers etc instead. Oh, and be careful with divides.
Good to hear that branches have the same execution time whichever way they go, I'm sure I will find myself counting cycles sometimes.
Speaking of which I understand that soon there will be a tool to perform timing analysis. I'm intrigued by this idea. I have only ever worked with one compiler that could report the exact execution time of your programs. That was Lucol from Lucas Aerospace.
-
- XCore Expert
- Posts: 546
- Joined: Thu Dec 10, 2009 10:41 pm
- Location: St. Leonards-on-Sea, E. Sussex, UK.
There already is a tool for that, it's xta.exe. Download the tutorial (xtatut.pdf).
Leon
Leon
-
- XCore Addict
- Posts: 133
- Joined: Tue Dec 15, 2009 10:23 pm
I went through similar growing pains trying to get the VGA and NTSC timing up and running. Apart from non-timing critical performance optimizations, relying on clocked-ports is really the way to go! Absolutely brilliant!Heater wrote:Thank you David.
The lesson is clear, as a veteran cycle counter I have to foster the habit of using the available timing facilities, clocked ports, serializers etc instead. Oh, and be careful with divides.
Good to hear that branches have the same execution time whichever way they go, I'm sure I will find myself counting cycles sometimes.
Speaking of which I understand that soon there will be a tool to perform timing analysis. I'm intrigued by this idea. I have only ever worked with one compiler that could report the exact execution time of your programs. That was Lucol from Lucas Aerospace.
-Yvo