element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Internet of Things
  • Technologies
  • More
Internet of Things
Blog XMOS's New Batch: xCORE-200 !
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Internet of Things to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: shabaz
  • Date Created: 23 Mar 2015 9:41 PM Date Created
  • Views 1656 views
  • Likes 2 likes
  • Comments 6 comments
  • xmos_startkit
  • ioe
  • internet_of_everything
  • internet_of_things
  • iot
  • xcore
  • xmos
  • xcore-200
Related
Recommended

XMOS's New Batch: xCORE-200 !

shabaz
shabaz
23 Mar 2015

New Chips

XMOS have released some fresh silicon - their banner provides a hint of part of the new functionality!

It is probably the first microcontroller with GigEth capability : )

image

Performance is increased to up to 4000MIPS on a 32-core device.

Also much more memory for programs and data : ) - up to 1M SRAM and 2M flash. There is also capability to perform some DSP-like operations, as well as the ability to load multiple bytes of data in a single clock cycle (like SIMD - single instruction multiple data). And GigEth! So good it needs to be mentioned twice : )

In other words, a _lot_ of exciting features that people wanted. It appears XMOS has listened!

 

New IDE

There is also a new xTIMEcomposer (release 14) which replaces the older Eclipse with a much more modern one.

I downloaded it, to briefly try it out. Below is a screenshot of the main code view. Notice the icons on the left, they provide a quick method of switching between views. The main code view is known as the 'Edit' view.

image

It is possible to go to the Analyze view and inspect things like resource usage:

image

There is also a call graph that shows the paths through functions that code will take when particular functions execute:

image

The debug view provides the ability to monitor variables as expected:

image

This is just a quick glimpse. Other features present in previous versions of xTIMEcomposer seem to be in this new release 14 too.

 

I'll try to document some xCORE-200 findings in the next few days as I discover them...

  • Sign in to reply

Top Comments

  • shabaz
    shabaz over 10 years ago in reply to johnbeetem +2
    Hi John, I hope they do come out with a low-cost board, otherwise it would be good to create an open source board design and gerber files so we can build our own using the TQFP package versions. The xCORE…
  • shabaz
    shabaz over 10 years ago in reply to johnbeetem +2
    Hi John, This is how xCORE could be perceived (I don’t know if this is totally correct, but it is how I imagine it); this is a single “tile” in XMOS terminology, also known as a physical core by some people…
  • clem57
    clem57 over 10 years ago +1
    Looking forward to what's new! Thanks shabaz Clem
  • shabaz
    shabaz over 10 years ago in reply to johnbeetem

    Hi John,

    This is how xCORE could be perceived (I don’t know if this is totally correct, but it is how I imagine it); this is a single “tile” in XMOS terminology, also known as a physical core by some people, also known as 8 cores or 8 logical cores by XMOS:

    image

     

    Basically, I see up to 8 register sets, and they are cycled through, one set at a time, at 500MHz. This would correspond to 8 threads of operation.

     

    If the scheduler thinks that one of the threads is sleeping, then that register set is skipped usually with no penalty (but see later).

     

    At each tick of the 500MHz clock, something can be pushed onto the CPU (4 or 5 stage pipeline depending on if it is original xCORE or xCORE-200 respectively – for the rest of this discussion I’ll assume a 5-stage pipeline), and they shuffle through on the 500MHz ticks until the instruction has been totally processed through the pipeline. So, as long as there are threads awake then they can always fill up the pipeline and keep the MIPS value up. If less than 5 threads are awake, then there are unfilled gaps in the pipeline. So, for any number of awake threads between 1 and 5, it can be guaranteed that they will get instructions processed every 5 ticks of the 500MHz clock.

     

    If there are more than 5 threads, then they will processed more infrequently (just a typical round robin fashion, skipping any threads that are sleeping). A minimum guarantee can be provided of course – proportional to the number of threads. XMOS have a diagram (from this nice PDF) which shows task or thread instructions rippling through the pipeline against time (time on x-axis, pipeline can be imagined to be vertical, instructions rippling from top to bottom).

    image

     

    So, it can be seen that the dispatching function and pipeline is kept straightforward. However the scheduler is very advanced from what I can tell. It can be programmed to read external signals at defined times (e.g. at 10ns from now) – and it will wake a thread to process it. Similarly it is possible to store events like setting a pin high in 20ns from now. This is great for software defined low-layer protocols, where you might want to read or write a bit at an exact time. It means there is no need to have dedicated hardware for peripherals like UART for example. As many UARTs as desired can be instantiated in software.

     

    The other thing (shown in blue X’s because I’m not entirely sure how they are implemented at a hardware level) is the xCONNECT functionality which is used for implementing inter-process communication (IPC). It works between threads, and also across tiles or off-chip too. The physical implementation is nicely hidden in the programming environment and instead you get access to POSIX-style high-level features like the select statement to sleep and wait for an event that could come across the xCONNECT or from a timed event that was scheduled as an example.

     

    For the 16-core chips, there are two tiles, and xCONNECT is used to communicate between them. Similarly for the 32-core chips, there are 4 tiles.

     

    The explanation above works for the original xCORE chips with 4-stage pipeline too. With the xCORE-200 however, there are some advanced modifications. For example, there are two pipelines per tile. It is possible to feed them both simultaneously in a single clock cycle.This therefore provides 1000 MIPS per tile with that 500MHz clock. It is also possible to process 64-bits of data simultaneously. The scheduling now includes prioritization. The instruction set has increased. So, there are significant differences and there is a need to rethink the conceptual diagram above to incorporate these new additions (If the diagram above is useful then I’ll try to work on it further to incorporate the new xCORE-200 features).

     

    The programming language is C, but with some extensions, e.g. to make use of the timed I/O and the ability to use the channels for example. Whoever devised it clearly loved operating systems theory, because they did it using a similar philosophy. I think of it as a hardware-based OS, since the scheduling of threads is something that a (software) kernel would normally implement, and the IPC looks familiar but uses the underlying xCONNECT hardware transparently to the user. (For these reasons I think you would probably really enjoy using it ; ) We really should work on creating a small open source dev-board!).

     

    Anyway, apologies for the long explanation, I know you’re already quite familiar with a lot of the stuff mentioned and only needed the specifics for XMOS, but others may not be, so hopefully the longer explanation helps others too. Writing it also helped me get it clear in my head too.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • clem57
    clem57 over 10 years ago in reply to johnbeetem

    Add to that a message passing system between the cores asynchronous in nature. image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • johnbeetem
    johnbeetem over 10 years ago

    As is usual with XMOS, it's difficult to understand what "16 cores" or "32 cores" really means.  As I understand it, the xCORE-200 has one or more physical cores (what you'd normally think of as a "processor") and time-multiplexes 8 logical cores on each one.  Each logical core runs an independent task and has independent processor registers.  This is rather nice, because the independent tasks don't have to deal with register interlocks like you do in a high-performance pipelined single processor which makes the implementation a lot simpler and more efficient.  So that 2000 MIPS from 16 cores is really two 1000 MIPS processors with enough registers to run 16 interleaved tasks.

     

    All this interleaving must be handled by software and XMOS provides a suite of tools for that.  In addition, my understanding is that the architecture is open so people can write their own general-purpose tools or specialized tools for a limited problem domain.  This looks like a lot of fun and I'm hoping to check it out some day.

     

    Please feel free to correct my misconceptions.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz over 10 years ago in reply to johnbeetem

    Hi John,

     

    I hope they do come out with a low-cost board, otherwise it would be good to create an open source board design and gerber files so we can build our own using the TQFP package versions.

    The xCORE-200 16-core variants (2000MIPS) are available in TQFP package with built-in Flash and SRAM, which is really great and should reduce the BoM greatly.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • johnbeetem
    johnbeetem over 10 years ago

    Let us know when they come out with a cheap development board.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube