MPSoC编程模型全解析
1. MPSoC通信模型
MPSoC(多核片上系统)有不同的通信模型,其中共享内存通信模型是同质MPSoC架构的特征。在这种模型中,不同CPU之间通过全局共享内存进行通信,通信是隐式的。任何CPU只需执行LOAD和STORE指令就可以读写内存中的一个字。除了公共内存,每个处理器代码可能还有一些本地内存,用于存放程序代码和不需要共享的项目。此时,MPSoC架构执行一个组织为单个软件栈的多线程应用程序。
另一种是消息传递组织,它假设在相同或不同的软件子系统上运行多个软件栈。不同子系统之间的通信通常通过消息传递进行,通信是显式的,通过I/O操作实现。CPU通过使用send和receive等原语相互发送消息进行通信。消息传递有三种类型:
- 同步:如果发送者执行发送操作,而接收者尚未执行接收操作,发送者将被阻塞,直到接收者执行接收操作。
- 缓冲或异步阻塞:当消息在接收者准备好之前发送时,消息会被缓冲,例如在邮箱中,直到接收者取出它。因此,如果接收者忙于其他事情,发送者在发送操作后可以继续执行。
- 异步非阻塞:发送者在进行通信调用后可以立即继续执行。
异构MPSoC通常结合这两种模型,以便在单个芯片上集成大量处理器。未来的异构MPSoC将由几个异构子系统组成,每个子系统可能包含大量相同的处理器,以运行特定的软件栈。
2. MPSoC编程模型概述
为了实现分布式应用程序的设计,软件社区引入并广泛研究了编程模型,以支持异构多处理器架构的高级编程。编程模型规定了并行运行的应用程序部分之间如何相互通信信息,以及有哪些同步操作可用于协调它们的活动。
常见的并行编程模型有以下几种