而多核嵌入式世界生根,现在比较普遍。但最平易近人的风格多核均匀:所有的核心一样的。结合,在一个共享的内存配置,这变得容易,因为您可以使用一个对称多处理(SMP)开箱即用的解决方案从你最喜欢的操作系统。它将多个处理器作为一个整体就像一个处理器。它可以这样做,因为处理器都是一样的,他们都有相同的观点的内存。
但这并不是所有的系统是如何工作的。越来越多的人正在全力解决异构系统,有不同的处理器,每个可能有自己的操作系统实例运行(或甚至没有操作系统,所谓的“裸金属”)。虽然可能会有一些共享内存,它通常是处理器之间的消息传递。在大多数情况下,每个处理器都有自己的内存分配(或部分内存)私下里。
(只是为了澄清一些潜在的混淆术语,homo - /异构是指硬件架构;SMP及其对应的异步多处理(AMP)引用更多的软件体系结构,包括操作系统。SMP整个群都有一个单独的操作系统实例管理处理器,和,因此,需要一个均匀配置。但均匀配置可以作为AMP如果某些处理器运行有自己独立的操作系统实例运行。安保系统还可以包括SMP组件。至少,这是我对它的看法…)
AMP /异构系统很难管理,因为每个处理器只意识到自己。在大多数情况下,没有一个操作系统实例系统范围(不同于SMP)。所以事情容易与AMP与SMP变得困难了。
一个简单的例子是启动:谁负责确保所有处理器的同步操作吗?通常,每个处理器出现,在所谓的“屏障”,但处理器四周看了看,认为该系统稳定,准备发射和释放障碍?
大部分是系统设计的工作分配,“大师”处理器,然后你需要一个程序化的方法实现的决定。问题是,因为每个处理器的其他处理器范围,没有明显的逻辑方式一个处理器来控制别人。没有“super-process”范围的一切。
这就是导师图形与他们最近试图解决多核公告。现在,需要澄清的是,导师让很多很多东西的工具,包括硅和嵌入式系统的实现。这个声明不是关于如何创建一个多核SoC;它是关于如何实现软件现有的异构体系结构。
有三个基本组件声明,应对不同的AMP挑战:
- remoteProc:这是一组函数,允许一个处理器来控制另一个。特别是,它允许一个协调整个系统的启动顺序,一个处理器控制他人的生命周期。
- rpmsg:这允许之间的内部通信处理器(所谓的进程间(或)通信,或IPC)。下图显示了这个通过hypervisor交互,尽管没有虚拟机监控程序是必需的。他们还优化的一个MCAPI实现,可以分层。
- 改进CodeSourcery工具允许不同的可视化流程/处理器在一个清晰的和同步方式(一个挑战,如果你只是在每个核心运行gdb之类的,然后试着理解独立的结果)。
图片由导师图形
他们做了一个洁净室的实现这些功能,以确保他们可以使用专有软件没有暴露,专有软件GPL许可的限制(否则需要公开源代码,专有的东西)。
他们这对ARM处理器集成到他们的工具和可用作为裸机安装的库。他们没有一个集成版本non-ARM处理器;库可以使用,虽然他们没有除了胳膊上进行验证。这并不是说他们认为non-ARM行不通;他们似乎只觉得手臂是最重要的,这是他们花了精力的地方。(我假设如果别的炸毁了巨大的,他们会投资更多的能量…)
你可以找到更多的公告。