linux - 多核处理器之间的区别

标签 linux arm multicore sysbios

<分区>

我对“多核”处理器的概念感到困惑。

一些多核处理器,链接ARM A9/x86,我们运行uni-OS,比如linux/windows。每个内核都运行良好。

但是其他的,链接TI的C6678,我们在core pac0上运行linux,在其他每个core pacs上运行sys/bios,它们通过syslink进行通信。

这些多核处理器之间的架构差异是什么?

最佳答案

您在这里看到的是 AMP 之间的主要区别和 SMP系统。

X86 通常是一个 SMP 系统,所有内核都是平等的,可以访问相同的外围设备,并且可以访问彼此的内存和缓存。缓存在核心之间保持一致,因此每个核心始终具有相同的内存 View 。内核(在这些内核上运行的进程)之间的通信通常仅通过信号量和互斥锁等内存结构来完成。为实现这一目标,芯片设计人员必须整合大量逻辑。

AMP 是完全不同的野兽。核心通常有自己的内存“ View ”,这意味着缓存不会在核心之间同步。这大大简化了芯片的设计,但使通过内存进行的通信成为问题。所以通常每个内核都会运行它自己的进程,有些可能会运行整个操作系统,有些只是一个裸机系统,您还会发现系统的一部分运行 Linux 而其他部分运行 VXWorks 或其他东西的配置。

如果可以很好地拆分任务,通常会使用 AMP。以具有小型 PBX 和 iptv 机顶盒功能的路由器为例。一个核心可能运行带防火墙的 Linux,整天都在路由。下一个核心运行 vxworks 和一个 PBX 应用程序,第三个核心解码电视流并将其发送出去。路由核心将不得不在其他两个核心和 LAN 之间分发传入数据,但这就是所有交互。

一般来说,SMP 提供的功能并不是免费的。首先,他们会提高产品的价格。其次,缓存同步的周期成本非常高。

因此最终您将不得不使用适合您需求的架构。

关于linux - 多核处理器之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555826/

相关文章:

c++ - 鼠标按键模拟——右键和上下文菜单问题

linux - 如何统计ARM程序执行的指令数?

linux - 关于多核的 Linux Scheduler 代码在哪里?

ios - 这可能是 ios-armv7 的 llvm-gcc 的错误,我无法解释

multithreading - 如何编写无锁结构?

C# - 数据库密集型应用程序的多核线程

linux - 运行 2 在双头显卡上使用 qt-creator 在不同的显示器上

php - 如何限制我网站的 API 用户?

linux readdir - 条目 "."和 ".."总是先读吗?

c - Atmel SAM v71 XPlained - 无法与端口 C 配合使用