Linux 的 Spinlock 在 MIPS 多核处理器中的设计与实现.pdfVIP

Linux 的 Spinlock 在 MIPS 多核处理器中的设计与实现.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux 的 Spinlock 在 MIPS 多核处理 器中的设计与实现 赵 昊翔 (haoxiang@), 工程师 简介: Spinlock 在 Linux 中被广泛应用于解决多核处理器之间访问共享资源 的互斥问题,本文以 MIPS 多核处理器为例,介绍了 Spinlock 的设计与实现, 以及 Spinlock 的不足与扩展。 引言 随着科技的发展,尤其是在嵌入式领域,高性能、低功耗的处理器成为众多厂商 追逐的目标,但是由于技术和工艺的瓶颈,试图在单核处理器上达到这样的目 标 变得越发困难,于是人们提出了多核处理器的概念。多核处理器的核心思想是一 个处理器中包含若干个核(或线程),所有核(或线程)之间共享 IO、Cache、 内存等资源,对于这些资源的使用和分配由硬件来完成,用户无需关注细节,因 此每个核(或线程)对于用户来说就好像一个独立的虚拟 CPU,从用户角度来看, 这个虚拟 CPU 独占所有的外设资源。 目前比较流行的多核处理器的架构有下面几种: (1)SMP (Symmetric Multi-Processor) 这种架构的处理器由多个核组成,每个核有自己独立的 Cache,所有核共享内存 和 IO。 (2)SMT (Symmetric Multi-Thread) 这种架构的处理器的每个核由多个线程组成(此处的线程指的硬件线程,而不是 我们所说的操作系统的线程概念),每个核下的所有线程共享寄存器、 ALU (CPU 运算单元)、Cache、内存、IO 等资源,线程之于用户也像一个虚拟的 CPU。这 种架构的最大优势在于线程和线程之间的切换很快,通常一个时钟周期内就能完 成。 (3)NUMA (Non-Uniform Memory Access) 这种架构和前面两种的区别在于它不是简单的一个处理器,而是一个由多个处理 器组成的系统,每个处理器作为一个结点在该系统中存在。对于内存、IO 等资 源所有结点也是共享的。 目前比较流行的处理器架构大多都推出了多核处理器的产品,比如 Intel 的 X86 双核处理器、Freescale 的 PPC 多核处理器、SUN 的 SPARC 多核处理器、 RMI 和 Cavium 的 MIPS 多核处理器等。 MIPS 这种架构诞生于 Standford 大学,它的名字含义有双重意义,一是 “Microcomputer without Inter-locked Pipeline Stages”,另一种是 “Millions of Instructions Per Second”,它设计思想的核心是采用多级指 令流水线技术达到高效的处理速度,目前比较常用的 MIPS 采用 5 级流水线的技 术。因其性能高效、结构简单,MIPS 被誉为 RISC (Reduced Instruction Set Computing) 家族中最优美的一款处理器架构。基于 MIPS 的多核处理器因为其 低功耗、高性能从而在嵌入式市场得到了广泛的应用。 针对上述这些多核处理器的特点,Linux 提出了 Multi-Processing 的概念,它 的调度器可以将操作系统的线程均分到各个核(或硬件线程)上去执行,以此达 到并行计算的目的,从而也可以极大地提高系统的性能。 回页首 Spinlock 的思想 Linux 在推出了 Multi-Processing 之后,多核处理器的并行处理的能力得到了 极大的发挥,但是这同时也带来了一个问题,并行执行势必就存在多个核同时访 问共享资源的情况,如何能够保证一个核在访问共享资源时,该共享资源不会被 其它核所改写呢? 我们没有方法去控制对共享资源访问的有序性,但是我们有能力对共享资源采用 锁的保护机制,当某个共享资源被锁住时,只有获取该锁的 CPU 核能够操作共 享资源,其余试图访问共享资源的 CPU 核只能够等待这个锁的释放,这就是在 Linux 中被称为 Spinlock 的自旋锁保护机制。 Spinlock 的设计思想是基于一种被称为 Test-and-Set 的机制,它的操作分为 三部分: (1)INIT 初始化 lock 值。示例如下: lock := CLEAR; (2)LOCK 这个流程包括两部分:首先 CPU 核反复轮询 lock 值直到它处于空闲状态为止, 然后利用 Test-and-Set 方式尝试设置该 lock 值,Test-and-Set 的操作可以 描述成三步: (a)读取 lock 值; (b)设置 lock 值; (c)检查 lock 值是否设置成功,如果在步骤 (a)之后还存在别的对 loc

文档评论(0)

精品文库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档