对称多处理器

计算平台介绍

Flynn于1972年提出了计算平台的Flynn分类法,主要根据指令流和数据流来分类,共分为四种类型的计算平台,如下图所示:
在这里插入图片描述

  1. 单指令流单数据流机器(SISD)
    SISD机器是一种传统的串行计算机,它的硬件不支持任何形式的并行计算,所有的指令都是串行执行。并且在某个时钟周期内,CPU只能处理一个数据流。因此这种机器被称作单指令流单数据流机器。早期的计算机都是SISD机器,如冯诺.依曼架构,如IBM PC机,早期的巨型机和许多8位的家用机等。

  2. 单指令流多数据流机器(SIMD)
    SIMD是采用一个指令流处理多个数据流。这类机器在数字信号处理、图像处理、以及多媒体信息处理等领域非常有效。
    Intel处理器实现的MMXTM、SSE(Streaming SIMD Extensions)、SSE2及SSE3扩展指令集,都能在单个时钟周期内处理多个数据单元。也就是说我们现在用的单核计算机基本上都属于SIMD机器。

  3. 多指令流单数据流机器(MISD)
    MISD是采用多个指令流来处理单个数据流。由于实际情况中,采用多指令流处理多数据流才是更有效的方法,因此MISD只是作为理论模型出现,没有投入到实际应用之中。

  4. 多指令流多数据流机器(MIMD)
    MIMD机器可以同时执行多个指令流,这些指令流分别对不同数据流进行操作。最新的多核计算平台就属于MIMD的范畴,例如Intel和AMD的双核处理器等都属于MIMD。

对称多处理器

MIMD可以根据处理器的通信进一步细化。如果每个处理器都有一个专用的存储器,则每个处理部件都是一个独立的计算机。计算机间的通信或者借助于固定的路径,或者借助于某些网络设施,这类系统称为集群系统。如果处理器共享一个公用的存储器,每个处理器都访问保存在共享存储器中的程序和数据,处理器之间通过这个存储器相互通信,则这类系统称为共享存储器多处理机系统。

共享存储器多处理机系统的一个常用分类标准是基于"如何把进程分配给处理器"。最基本的两种手段是主/从结构和对称结构。

在主/从结构中,操作系统的内核总是运行在某个特定的处理器上,其他处理器用于执行用户程序和操作系统的使用程序。主处理器负责调度进程或线程,如果一个处于运行的进程或线程需要使用系统的服务(如一次I/O调用),则它必须给主处理器发送请求,并等待服务的处理。这种方式非常简单,一个处理器控制了所有存储器和I/O资源,因此可以简化冲突的解决方案。但是这种方式也有明显的缺点:

  1. 主处理器的失败将导致整个系统的失败;
  2. 由于主处理器必须负责所有的进程调度和管理,因此可能成为性能瓶颈;

在对称多处理系统中,内核可以在任何处理器上执行,并且每个处理器可以从可用的进程或线程池中进行各自的调度工作。内核也可以由多进程或多线程构成,允许部分内核并行执行。SMP方法增加了操作系统的复杂性,它必须确保两个处理器不会选择同一个进程,并且要确保队列不会丢失,因此需要解决同步的问题。

在这里插入图片描述

在这里插入图片描述

### 对称多处理器与非对称多处理器的区别 #### 定义与架构特点 在计算机体系结构中,对称多处理器(Symmetric Multiprocessing, SMP)指的是多个相同类型的处理单元通过共享内存和操作系统资源协同工作的方式。每个CPU都具有平等的地位,在任何时刻都可以执行任意线程或进程[^2]。 相比之下,非对称多处理器(Asymmetric Multiprocessing, AMP)则指各处理单元承担特定的任务角色,它们可能拥有不同的硬件配置,并且运行着各自独立的操作系统实例或者内核模式。例如,在基于Apple Silicon的新款Mac设备上使用的SoC即为一种AMP架构,其中包含了异构计算单元,这些单元的功能定位并不完全一致[^3]。 #### 调度机制差异 对于SMP而言,所有的中央处理器都能访问整个系统的物理地址空间以及所有可用的输入/输出设施;因此,任务可以在任一空闲的核心间自由迁移并得到均衡分布。这使得实现复杂的负载平衡算法成为可能,从而提高整体性能效率。 而在AMP环境下,由于各个子系统负责专门领域内的作业处理——比如图形渲染交给GPU完成、音频解码由DSP来操作等——所以不存在跨节点间的动态重分配现象。这意味着每种类型的工作项仅能被指定给相应的专家型引擎去解决。 #### 缓存层次结构的不同 许多SMP平台具备多层次缓存设计:既有私有的L1/L2 cache服务于单个核心内部的数据读写加速需求,又存在全局性的LLC (Last Level Cache),供全部逻辑运算部件共同享用以减少对外部RAM请求频率带来的延迟影响。这种布局有助于缓解因并发争用热点数据而导致的竞争状况发生概率降低的同时也简化了编程模型复杂度。 相反地,在某些典型的AMP应用场景里,像移动终端里的big.LITTLE技术那样,则会采取更为灵活机动的做法。它允许大小不一但功耗特性各异的一组ARM Cortex-A系列CPU集群共处同一芯片之上,分别配备适合自身特性的高速缓冲池,以此达成最佳能耗比表现下的高效运作状态。 ```python # Python伪代码展示两种架构下简单的任务分发方式对比: # 对于SMP来说: def smp_task_dispatcher(task_queue): while task_queue: next_task = task_queue.pop() available_core = find_any_idle_core() # 找到任何一个闲置的核心 assign_task_to_core(next_task, available_core) # 非对称多处理器(AMP)情况: def amp_task_dispatcher(task_queue_for_each_type): for task_type in task_queue_for_each_type.keys(): specific_processor_group = get_processors_by_capability(task_type) tasks_of_this_kind = task_queue_for_each_type[task_type] while tasks_of_this_kind: suitable_core = choose_proper_core_within_group(specific_processor_group) dispatch_single_task(tasks_of_this_kind.pop(), suitable_core) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值