多进程是指在一个计算机系统中使用两个或多个中央处理单元(CPU)。这个术语还指一个系统支持多个处理器的能力或在它们之间分配任务的能力。在这个基本主题上有许多变化,并且多处理的定义可能随上下文而变化,主要是作为CPU定义方式的函数(一个模具上的多个核心、一个包中的多个模具、一个系统单元中的多个包等)。
根据一些在线词典,多处理器是一种计算机系统,具有两个或多个处理单元(多个处理器),每个处理单元共享主存储器和外围设备,以便同时处理程序。2009年的一本教科书同样定义了多处理器系统,但注意到处理器可能共享“部分或全部系统”。STEM的内存和I/O设施”;它还将紧耦合系统作为同义词。
在操作系统级,多处理有时用于指系统中多个并发进程的执行,每个进程运行在一个单独的CPU或核心上,而不是在任何一个时刻运行一个进程。
当与此定义一起使用时,多处理有时与多任务形成对比,多任务可能会导致只使用一个处理器,但在任务(即分时系统)之间按时间片切换。然而,多处理意味着使用多个处理器对多个进程进行真正的并行执行。多进程并不一定意味着一个进程或任务同时使用多个处理器;术语并行处理通常用于表示这种情况。其他作者更喜欢指代操作系统。作为多道程序设计的系统技术,并保留术语“多道处理”,用于具有多个处理器的硬件方面。本文的其余部分仅讨论了在这种硬件意义上的多道处理。
在弗林的分类法中,如上定义的多处理器是MIMD机器,由于它们通常被认为是紧密耦合的(共享内存),因此多处理器不是MIMD机器的整个类别,它也包含消息传递多计算机系统。
历史
多道处理思想的第一个表达可能是1842年路易吉·费德里科·梅纳布雷亚(Luigi Federico Menabrea)关于查尔斯·巴贝奇(Charles Babbage)的分析引擎(由Ada Lovelace翻译)所写的:“机器可以同时发挥作用,从而产生多个结果,这将大大缩短整个过程。
重点话题
在一个多处理系统中,所有的CPU可能是相等的,或者某些CPU可能是为特殊目的而保留的。硬件和操作系统软件设计考虑的结合决定了给定系统的对称性(或不对称性)。例如,硬件或软件方面的考虑可能要求只有一个特定的CPU响应所有的硬件中断,而系统中的所有其他工作可以在CPU之间平均分布;或者,内核模式代码的执行可能仅限于一个特定的CPU,而用户模式代码可以在任何进程组合中执行。ORS。如果施加这样的限制,多处理系统通常更容易设计,但它们往往比使用所有CPU的系统效率低。
对所有CPU进行同等处理的系统称为对称多处理(SMP)系统。在所有CPU都不相等的系统中,系统资源可以分为多种方式,包括非对称多处理(ASMP)、非均匀内存访问(NUMA)多处理和集群多处理。
主从多处理器系统
在主/从多处理器系统中,主CPU由计算机控制,从CPU执行分配的任务。CPU在速度和体系结构方面可能完全不同。一些(或全部)CPU可以共享公共总线,每个CPU也可以有一个私有总线(用于私有资源),或者它们可以被隔离,除了公共通信路径。同样,CPU可以共享公共RAM和/或具有其他处理器无法访问的专用RAM。主从机的角色可以从一个CPU切换到另一个CPU。 主/从多处理器系统的早期例子是Tandy/Radio Shack TRS-80 16型台式计算机,它于1982年2月推出,运行多用户/多任务Xenix操作系统,这是微软的Unix版本(称为TRS-Xenix)。16型有3个微处理器,一个8位的Zilog Z80 CPU运行在4MHz,一个16位的Motorola 68000 CPU运行在6MHz,键盘上还有一个Intel 8021。当系统启动时,z-80是主机,Xenix启动过程初始化从机68000,然后将控制权转移到68000,CPU改变角色,z-80成为从机处理器,负责所有I/O操作,包括磁盘、通信、打印机和网络,以及键盘和当操作系统和应用程序在68000 CPU上运行时,集成监视器。Z-80还可以用于其他任务。
早期的TRS-80 II型(1979年发布)也可以被视为多处理器系统,因为它在键盘上同时具有z-80 CPU和Intel 8021[12]微处理器。8021使II型电脑成为第一个桌面电脑系统,它有一个单独的可拆卸的轻量级键盘,通过一根细而灵活的电线连接在一起,很可能是第一个使用专用微处理器的键盘,这两个属性将在几年后由苹果和IBM复制。
指令和数据流
在多处理中,处理器可用于在多个上下文中执行一个指令序列(单指令、多数据或SIMD,通常用于矢量处理)、在一个上下文中执行多个指令序列(多指令、单数据或MIST,用于故障保护系统中的冗余,有时也用于IED描述流水线处理器或超线程),或多个上下文中的多个指令序列(多个指令、多个数据或MIMD)。
处理器耦合
紧耦合多处理器系统
紧密耦合的多处理器系统包含多个在总线级连接的CPU。这些CPU可以访问中央共享内存(SMP或UMA),或者可以与本地和共享内存(SM)(NUMA)一起参与内存层次结构。IBMP690 Regata是高端SMP系统的一个例子。英特尔至强处理器主导了商用PC的多处理器市场,在2004年AMD的Opteron系列处理器发布之前,它是唯一一个主要的x86选项。两个处理器系列都有自己的板载缓存,但提供了对共享内存的访问;Xeon处理器通过公共管道,Opteron处理器通过独立的路径访问系统RAM。 芯片多处理器,也称为多核计算,涉及多个处理器放在一个芯片上,可以认为是最极端的紧密耦合多处理形式。具有多个处理器的大型机系统通常是紧密耦合的。
松耦合多处理器系统
松耦合多处理器系统(通常称为集群)基于多台独立的单处理器或双处理器商品计算机,这些计算机通过高速通信系统互连(通常使用千兆以太网)。LinuxBeowulf集群是松耦合系统的一个例子。
紧耦合系统比松耦合系统性能更好,并且在物理上比松耦合系统小,但在历史上需要更大的初始投资,并且可能迅速贬值;松耦合系统中的节点通常是廉价的商品计算机,从集群中退出后可以作为独立的机器回收。
功耗也是一个考虑因素。紧耦合系统往往比集群更节能。这是因为在紧密耦合的系统中,可以通过从一开始就将组件设计为一起工作来实现可观的经济性,而松散耦合的系统则使用不一定专门用于此类系统的组件。
松耦合系统能够在不同的系统上运行不同的操作系统或操作系统版本。