4 ms·
Propeller microcontroller uses dedicated cores instead of interrupts.
by anonymfus 8y ago
Propeller microcontroller uses dedicated cores instead of interrupts.
- AWildC182 8y agoIs anyone actually using those in production?
- ddingus 8y agoYes, there are commercial products. They also get used for industrial automation and data collection.
- AWildC182 8y ago....What are the products?
- ddingus 8y agohttps://forums.parallax.com/discussion/154310/parallax-needs-samples-of-your-propeller-commercial-products https://forums.parallax.com/discussion/154310/parallax-needs... There is some discussion there. It is a really great device. The two most common exceptions are price and language support. In many designs, the chip can replace several. Early on, yes. Was SPIN and PASM (assembly language, but no where as hard as one would imagine) Today, C, and other languages are well supported. It is a true multi-processor. The developer can choose freely between concurrency and parallelism as needed. Combining code objects is crazy easy too. Concurrent can be something like a video display on one core, or COG as they are known, keyboard, SD card, mouse on another. Once done, those two cores would appear much like hardware to a program running on another one. Parallel could be several cores all computing something at the same time. Doing a mandelbrot set is an example of both. Main program directs the set computation, one core outputs video, the remaining ones work a little like shaders do, all computing pixels. Interrupts could have made a few niche things a tiny bit better. Mostly they really are not needed. I had a ton of fun programming and doing some automation with this chip. It's second gen will tape out, and early revision chips already have. Real chips, back from the fab for a final round of polish and testing. On those, every single pin has DAC ADC, a smart pin processor and a variety of modes and pullups, pulldowns all configurable in softwares. It is a little like having a mini scope with good triggers on each pin. Interrupts are present, but no global ones, nor with any ability to interfere with other cores. This will keep the lego like feature of grabbing drivers and other code, and having it act like built in hardware, while at the same time making for event driven code that is easily shared and or combined with other code. Interrupts are called events and there are 16 of them, three priority levels, and that is per core, 8 cores total. People can build crazy complex things able to input signals or data, process with high speed accurate CORDIC, and stream data or signals out. Freaking playground. I have been running an FPGA dev system for a while now. That is 80 Mhz. Real chips will clock at 250 Mhz and up through about 350.
- topspin 8y agoGood answer. I had forgotten about Propeller.
- dbcurtis 8y agoWell, more like hyperthreads than cores, if I understand the Propeller correctly. The earliest implementation of hyperthreaded hardware for doing I/O that I am aware of is the CDC 6000 series, announced in 1959, if I recall correctly. The CDC 6X00 Peripheral Processor Units (PPU) were actually a single processor logic cluster, with 10 copies of the PPU state (which old-timers called "the PPU barrel"), yielding effectively 10 I/O processors that ran at 1/10 the master clock frequency of the CPU. I/O drivers were written as PPU code that actually polled the I/O device. The PPU could scribble anywhere it wanted in main memory, so the PPU did all the work of moving data from the peripheral into main, or out from mem to device. Interrupts were very simple -- the PPU computed an interrupt vector address and more-or-less just jammed it into the CPU program counter. But the net effect was that on a Cyber 6000 (later Cyber 170-series) machine, much of the I/O was delegated to the PPU's, and thus a single interrupt represented the completion of a large amount of work.
- cmrdporcupine 8y agoThe new Propeller 2 (coming summer 2019) has both multiple cores and interrupts.