回答
具有多个执行单元或内核的处理器可以执行并行处理。大多数微控制器没有多个执行单元。一些体系结构支持可以从单个指令产生多个结果的SIMD(单指令/多数据)指令 - 这是一种低级形式的并行处理,类似地,DSP(数字信号处理器)和具有DSP指令的微控制器支持双或也是并行处理形式的多个MAC(乘法/累加)单元。 SIMD和MAC都主要用于数字运算和信号处理应用。高端DSP通常支持其他指令级并行执行功能。
允许并行执行的另一个低级架构功能是pipeline execution。这允许可能需要多个周期运行的指令通过同时运行相同操作的不同阶段而在每个周期产生一个结果。
大多数微控制器都可以支持多任务或多线程调度程序,该调度程序可以根据所使用的调度算法为每个任务调度执行时间,从而给出并发执行的印象。虽然这不是并行处理,并且实际上增加了开销而不是加速处理,但是在其他方面也是有用的,例如代码的功能划分,并且在基于实时优先级的基于实时优先级的调度器的情况下,对事件的时间响应。对于您在问题中给出的示例用例,这种调度形式完全合适且充分。请参阅Real-time Operating System (RTOS)
确实支持真并行处理的微控制器体系结构包括XMOS,PicoChip和Cell processor。历史上,Transputer率先在微处理器中进行并行处理。
一种在同一进程的各个操作可以同时发生(当一个不依赖于另一个的结果或使用pipeline时)的低级别实现高水平并行性的方法是实现一个在FPGA上处理 - 实质上是为了实现硬件而不是软件的处理,但是用于编程FPGA的语言与软件语言有相似之处。
一家名为Parallax的公司生产了一款名为Propeller的8核MCU,它可以进行并行处理。他们的编程语言“Spin”是有趣的,面向对象的,脚本化的,但也有内联汇编。
- 1. 并行处理实际上可能吗?
- 2. 这可以并行实现Matlabpool吗?
- 3. 什么样的数据结构可以实现并行处理
- 4. Python,如何实现并行处理
- 5. 实现服务激活并行处理
- 6. 多线程可以在单处理器系统上实现吗?
- 7. 我可以使用多处理进行并行化吗?
- 8. HSQLDB可以处理几百万行吗?
- 9. 可以使用Map Reduce和Hadoop来并行处理批处理作业吗?
- 10. 我可以将图像处理与PLINQ并行吗?
- 11. 我可以处理PostBack并进行不同的刷新吗?
- 12. NSJSONSerialization可以处理null吗?
- 13. Java可以处理Expando吗?
- 14. WCF可以处理GUID吗?
- 15. 并行处理,内部循环,我们可以访问并行度吗?
- 16. Mysql Innodb可以处理重度并行处理
- 17. ESX可以处理多个文件管理器实例吗?
- 18. sys.argv可以处理可选参数吗?
- 19. AlmostEqual2sComplement实现不处理简并案例
- 20. 在Spring批处理中,我可以在beforeStep实现中插入数据吗?
- 21. 如何以NHibernate作为ORM实现EntitySetController可查询ODATA并处理事务?
- 22. 可以重新处理现有的表格吗?
- 23. data.table函数可以实时处理日期和时间列吗?
- 24. LUIS可以用斜杠处理复合实体吗?
- 25. Oracle SQL * Loader可以处理XML吗?
- 26. DataContractJsonSerializer可以处理循环引用吗?
- 27. 可以处理多点触控吗?
- 28. JAXB可以处理java.time对象吗?
- 29. ThreadStatic IDisposable可以自动处理吗?
- 30. FDT可以处理.fla文件吗?
尽管问题可能是合理的,但您的示例用例几乎不是并行处理的典型或有用示例 - 它们是并行处理不会真正受益的任务。 – Clifford
哦,对不起,我的问题只是基于做任何平行过程的可能性。所以,我对这个问题感兴趣,因为通过了解答案,它会让我思考我可以同时做的其他更多流程。它可能没有用处,但正如我所说的那样,这仅仅是一个例子。 – nciacrklo
我明白你的观点,但通常情况下,并行处理不是很有用 - 你可以通过一个简单的多任务调度程序来实现这一点(参见[RTOS](http://en.wikipedia.org/wiki/Real-time_operating_system ))。特别是因为它被标记为STM32,这正是你需要的。 – Clifford