我对“多核”处理器概念感到困惑。
一些多核处理器,链接ARM A9 / x86,我们运行uni-OS,如linux / windows。每个核心都运作良好。
但是其他人,链接TI的C6678,我们在核心pac0上运行linux,并在每个其他核心pac上运行sys / bios,它们通过syslink进行通信。
这些多核处理器之间的架构差异是什么?
答案 0 :(得分:7)
X86通常是一个SMP系统,所有内核都相同,可以访问相同的外围设备,并且可以访问彼此的内存和缓存。缓存在核心之间保持一致,因此每个核心始终具有相同的内存视图。核心之间的通信(在这些核上运行的进程)通常只能通过信号量和互斥量等内存结构来完成。为了实现这一目标,芯片设计人员必须采用大量逻辑。
AMP是一个完全不同的野兽。核心通常拥有自己的内存“视图”,这意味着缓存不会在内核之间同步。这大大简化了芯片的设计,但通过存储器进行通信存在问题。所以通常每个核心都会运行它自己的进程,有些可能运行整个操作系统,有些只是一个裸机系统,你也可以找到配置,其中部分系统运行Linux,其他部分运行VXWorks或其他。如果任务可以很好地拆分,通常会使用AMP。以一台小型PBX和iptv机顶盒为例的路由器。一个核心可能会运行带有防火墙的Linux,只需要整天路由。下一个核心运行vxworks和一个PBX应用程序,第三个核心解码tv-stream并将其发送出去。路由核心必须在两个其他核心和局域网之间分配传入数据,但这与所有交互有关。
一般而言,SMP提供的功能不是免费提供的。首先,他们会提高产品的价格。其次,缓存同步在周期方面非常昂贵。
因此,最终您必须使用符合您需求的架构。