Why

xCORE multicore microcontrollers have multiple processor cores, incredibly flexible I/O, and a unique timing deterministic architecture that makes it astonishingly easy to use.

How xCORE Works

Unlike conventional microcontrollers, the xCORE multicore microcontroller is able to run multiple real-time tasks simultaneously. xCORE multicore microcontrollers supports high-level programming languages with 32bit processor cores and execute the program using RISC instructions. Each logical processor core can execute tasks running computational code, advanced DSP code, control software (including taking logic decisions and executing a state machine) or software that handles I/O operations.


Logical Processor Cores

The xCORE multicore microcontroller is made up from Tiles that contain multiple 32bit ‘logical processor cores’. [Please note: that we sometimes refer to logical processor cores as 'Threads' in some of our older documentation] Devices are currently available with 1 , 2 and 4 tiles which provide respectively 8, 16 and 32 logical processor cores. The xCORE Tile provides 500MIPs of compute (on a 500MHz device) making it much more powerful than conventional microcontroller products. The logical processor cores share processing resources and memory on the Tile, but each has separate register files. Each logical processor core gets a guaranteed slice of processing power (up to 125 MIPS on a 500MHz device), which is controlled by the unique xTIME timing and synchronization technology. The time-slicing is executed in a such a way that it is completely transparent and the logical processor cores appear as separate, parallel processors, capable of running multiple real-time tasks simultaneously. In fact it is the xTIME technology that gives xCORE its unique timing predictability and real-time responsiveness.

Devices are available at different speeds running at up to 500MHz (with 700MHz devices available soon). Each logical processor can operate at up to one quarter of the clock frequency: 125MIPS on a 500MHz device. When four logical processor cores execute simultaneously, all the cores will be able to run at 125 MIPS. When more logical processor cores execute simultaneously, the MIPS rate per core reduces, and with eight logical cores running each core has 62.5 MIPS. This gives each logical processor core roughly the equivalent compute of a conventional high performance 32bit microcontroller. One way to visualize the xCORE multicore microcontroller is to think of it as an 8-pack, 16-pack, or 32-pack of high performance 32bit microcontrollers.


Faster responding I/O

A key difference between xCORE multicore microcontrollers and conventional microcontrollers though are its unique I/O pins and xCORE-Ports that deliver much faster response times and much more capabilities. The I/O pins can be set and sampled in a single instruction. In its simplest form an OUT instruction drives a new value onto up to 32 I/O pins, and an IN instruction samples up to 32 I/O pins. More complex use allows data to be serialized and deserialized, and input ports can be asked to discard any data until a condition is met. Input and output can also be done at an exact number of clock ticks in the future, and input signals can be time-stamped to ensure real-time performance is maintained and demanding communications standards can be supported. I/O instructions are used in XMOS xSOFTip peripherals to implement a wide range of standards compliant interfaces and peripherals. I/O can be driven with events or interrupts. The event mechanism offers low latency and a predictable response time that is 100 times faster than conventional microcontrollers. Support for interrupts allows legacy code to be ported.


Scalability

The xCORE architecture allows multiple tiles to be connected in a single devices and for multiple devices to be joined together. Tiles are connected to each other using an on-chip high-speed interconnect – called xCONNECT. XMOS provides a range of devices that include a single tile with 8 logical processor cores, and devices with multiple tiles, delivering 16 and 32 logical processor cores. Within a tile, tasks running on separate logical processor can use shared memory to exchange data with other tasks. Logical processor cores can also use channels to exchange data and synchronize timing. Channels can be extended, using xCONNECT, to allow data and timing synchronization between tiles and even between separate devices. This allows you to transparently create a system with more resources—more I/O pins, more memory, or additional processing power. For guaranteed real-time performance, single cycle instructions can exchange a word of data between logical cores, implicitly synchronizing the receiver with the sender. If shared memory is used, tasks can use single cycle lock-instructions to ensure synchronization.


Timing Deterministic

The xCORE processor does not use and does not need caches, making program execution completely timing deterministic. All instructions (with the exception of divide) are single cycle and this includes complex DSP instructions such as 32bit x 32bit into 64bit precision Multiple Accumulate. The instruction buffer is pre-fetched in parallel with program flow. Communication between logical processor cores on a tile incurs no latency, and communication between tiles incurs a small latency that can be easily computed. The xCONNECT communication architecture can assign links to different networks in order to ensure Quality of Service.

An I/O pin input- or output-operation takes a single clock cycle. Logical processor cores can program the I/O Ports to wait for any number of possible events (inputs), and each logical processor (even on the slowest 400MHz device) can handle 100 million I/O events per second. This means that xCORE multicore microcontrollers respond over 100 times faster than conventional processors.

xCORE: I/O response > 100x faster