Content deleted Content added
Henk.muller (talk | contribs) Making it applicable to both XS1 and XS2 |
Henk.muller (talk | contribs) Adding XS2, reorganising section headings |
||
Line 107:
One three-operand opcode (EOPR, opcode 11111) is reserved for an "additional operands" prefix. Its 3 operands are used along with those of the following instruction word to produce additional 32-bit instructions with up to six operands. This is also used for rarely used three- and two-operand instructions; in such cases the EOPR specifies all three or two operands, and the following instruction word is a zero-operand instruction. (In the two-operand case, the extra opcode bit in the leading EOPR ''is'' used.)
==
===Sequential programming model===
Each thread has access to 12 general purpose registers R0...R11. In addition there are 4 special purpose registers the SP, LR (Link register - stores the return address), CP (constant pool, points to a part of memory that stores constants) and DP (data pool - points to global variables). In addition to those 16 there are another 9 registers that store the PC, kernel PC, Exception type, Exception data, and saved copies of all those in case of an exception or interrupt.<ref>{{cite web
|title=XMOS XS1 Architecture |format=PDF
Line 148 ⟶ 151:
It is up to the callee to save the link-register if it is not a leaf-function, a single instruction extends the stack and saves the link register.
===Parallel programming model===
The XS1 instruction set is designed to support both multi threading and multi-core computations. To this extent it supports channel communication (to support distributed memory computations) and barriers and locks (to support shared memory computations).
A thread initiates execution on one or more newly
Line 159 ⟶ 162:
A thread can, with a single instruction, synchronise with a group of threads using a barrier synchronisation. Alternatively a thread can synchronise using a lock, providing mutual exclusion. In order to communicate data when using barriers and locks, threads can either write data into the registers of another thread, or they can access memory of another thread (provided both threads execute on the same core). If shared memory is used, then the compiler or the programmer must ensure that there are no race conditions.
===I/O and timing instructions===
The XS1 architecture is event-driven. It has an instruction that can dispatch an external [[Event (computing)|events]] in addition to traditional [[interrupts]]. If the program chooses to use events, then the underlying processor has to expect an event and wait in a specific place so that it can be handled synchronously. If desired, I/O can be handled asynchronously using interrupts. Events and interrupts can be used on any resource that the implementation supports.
Common resources that are supported are ports (for external input and output), timers (that allow timing to a reference clock), channels (that allow communication and synchronization between threads within a core, and threads on different cores), locks (which allow controlled access to shared memory), and synchronizers (which implement barrier synchronizations between threads).
==Versions==
===XS1===
The XS1 architecture was the first xCORE architecture, defined in 2008.
===XS2===
The XS2 architecture was defined in 2014, and extends the XS1 architecture with a limited form of [[Dual Issue]] execution. The processor core comprises two lanes. The ''Resource lane'' can execute IO operations and general arithmetic. The ''Memory lane'' can execute memory operations, branches, and general arithmetic. Short resource or arithmetic instructions can be executed in the resource lane; short memory, branch, or arithmetic operations can be executed in the memory lane. Long instructions span both lanes.
In dual issue mode all pairs of instructions are aligned on a 32-bit boundary.
==Devices==
The XS1 instruction set is implemented by the [[XCore XS1-G4]], [[XCore XS1-L1]], [[XCore XS1-SU]], and [[XCore XS1-AnA]]. The former is a four-core processing node, the latter three are single and dual core processing nodes.
The XS2 instruction set is implemented by the [[xCORE200]] series processors
== References ==
|