• 多核 CPU,意味着多个 CPU,每一个核心对应着一个 CPU;

0. 主存与缓存

计算机在执行程序时,每条指令都是在 CPU 中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。

++i;// i = i + 1;
  • 当线程执行这个语句时,会先从主存当中读取i的值,然后复制一份到高速缓存当中,然后CPU执行指令对i进行加1操作,然后将数据写入高速缓存,最后将高速缓存中i最新的值刷新到主存当中。
  • 在多核CPU中,每条线程可能运行于不同的CPU中,因此每个线程运行时有自己的高速缓存(对单核CPU来说,其实也会出现这种问题,只不过是以线程调度的形式来分别执行的)。
  • 如果一个变量在多个CPU中都存在缓存(一般在多线程编程时才会出现),那么就可能存在缓存不一致的问题。

为了解决缓存不一致性问题,通常来说有以下2种解决方法:

1)通过在总线加LOCK#锁的方式
2)通过缓存一致性协议

在早期的CPU当中,是通过在总线上加LOCK#锁的形式来解决缓存不一致的问题。因为CPU和其他部件进行通信都是通过总线来进行的,如果对总线加LOCK#锁的话,也就是说阻塞了其他CPU对其他部件访问(如内存),从而使得只能有一个CPU能使用这个变量的内存。比如上面例子中 如果一个线程在执行 i = i +1,如果在执行这段代码的过程中,在总线上发出了LCOK#锁的信号,那么只有等待这段代码完全执行完毕之后,其他CPU才能从变量i所在的内存读取变量,然后进行相应的操作。这样就解决了缓存不一致的问题。

由于在锁住总线期间,其他CPU无法访问内存,导致效率低下。

所以就出现了缓存一致性协议。最出名的就是Intel 的MESI协议,MESI协议保证了每个缓存中使用的共享变量的副本是一致的。它核心的思想是:当CPU写数据时,如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发出信号通知其他CPU将该变量的缓存行置为无效状态,因此当其他CPU需要读取这个变量时,发现自己缓存中缓存该变量的缓存行是无效的,那么它就会从内存重新读取。

1. 多处理器 vs. 单处理器

  • 对于一台多处理器的机器,可以在这些处理器之间分布多个任务,从而可以极大地提高吞吐量。

    • 多处理器 web 服务器(requests/response),在为每个请求分配一个线程的程序中,可以将大量的用户请求分布到多个 CPU 上;
  • 并发通常是提高在单处理器上的程序的性能:
    • 在单处理器上运行的并发程序开销,因为增加了所为上下文切换(从一个任务切换到另一个任务)的代价,使得比程序顺序执行的开销要大;
    • 并发在单处理器上应用的意义在于:阻塞。如果使用并发来编写程序,那么当一个任务阻塞时(I/O问题),程序中的其他任务还可以继续执行,
      • 如果没有任务会发生阻塞,在单处理器上使用并发就没有任何意义;

在单处理器系统使用并发提升性能的常见示例是事件驱动的编程(event-driven,程序的运行受新的事件到来的驱使)。并发在这种情境下的一大优势在于:产生具有可响应的用户界面。比如这样一个程序,它因为将执行某些长期运行的操作,使得用户的输入会被忽略(很久以后才被执行),从而成为不可及时响应的程序。

并发与计算机体系结构相关推荐

  1. 计算机组成原理r型指令logisim实现_第一章 计算机体系结构

    需要掌握的内容: 存储程序计算机 计算机系统的多级层级结构 计算机体系结构 计算机组成 计算机实现 计算机体系结构.组成与实现三者的关系 存储程序计算机 透明性 Amdahl定律 CPU 性能公式 程 ...

  2. 计算机体系结构现状及发展论文,计算机体系结构的发展及技术问题探讨

    摘 要:本论文简要介绍了计算机的发展现状,然后对比了两种不同的体系结构,比较了这两种体系结构中存在的问题,进而提出计算机体系结构的发展趋势.[1] 关键词:计算机体系结构:冯诺依曼:RISC:CISC ...

  3. 计算机网络体系结构i层,1.2 计算机体系结构

    1 计算机体系结构的发展 概述 1964年,阿姆达尔(Amdahl)在介绍IBM360系统时指出:计算机体系结构是站在程序员的角度所看到的计算机属性,即程序员要能编写出可在机器上正确运行的程序所必须了 ...

  4. 【计算机体系结构】计算机体系结构(1) 计算机系统结构的设计基础

    文章目录 1.1 计算机系统结构的基本概念 1.1.1 计算机系统的层次结构 1.1.2 计算机系统结构 1.1.3 计算机组成与实现 1.1.4 计算机系统结构的分类 1. `Flynn` 分类法 ...

  5. 【计算机体系结构】计算机系统结构的基本概念——基本知识要点汇总

    halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言.指点 计算机系统结构的基本概念 ...

  6. 计算机体系结构在线读,计算机体系结构_arch01_intro-c1.pdf

    计算机体系结构_arch01_intro-c1.pdf 高等计算机系统结构 高等计算机系统结构 引 论 (第一讲) 程旭 2007年9月10日 北京大学微处理器研究开发中心 chengxu@ 主要教材 ...

  7. 计算机体系结构(国防科大)-第七章-多处理机

    计算机体系结构(国防科大)-第七章-多处理机 1 共享存储器体系结构 1.1 并行计算 1.2 多处理机Cache一致性 2 互联网络 2.1 互联网络的性能参数 2.2 静态连接网络 2.3 动态连 ...

  8. 《数据密集型计算和模型》第二章大数据时代的计算机体系结构复习

    <数据密集型计算和模型>第二章的有关内容.主要复习内容为:计算部件.存储部件.网络部件.软件定义部件.虚拟资源管理系统等. 文章目录 大数据时代的计算机体系结构 一.计算部件 1. 多核和 ...

  9. 【体系结构】山东大学计算机体系结构知识点清单

    涵盖所有考点,复习绝对高效,点赞+留邮箱获取pdf版本 计算机体系结构复习提纲 第一章 基本概念 1. 计算机系统的层次结构 语言实现的两种基本技术: 翻译:先把 N+1 级程序全部转换成 N 级程序 ...

最新文章

  1. @GetMapping和@PostMapping接收参数的格式
  2. SkinSharp For Visual C++
  3. mysql使用占位费付_美国大学硕士占位费怎么支付?三种支付方式任选!
  4. Qt 翻译文件的加载
  5. k8s创建Deployment报错:missing required field “selector“ in io.k8s.api.apps.v1.DeploymentSpec
  6. 大工13秋 c/c++语言程序设计 在线作业3,大工19秋《JavaScript基础教程与应用》在线作业3【满分答案】...
  7. python发布_python如何发布模块
  8. 南溪的远程桌面软件使用笔记
  9. iTOP-4412开发板基于Linux-C测试程序的编译和运行
  10. 29th, Dec 2011 求人不如求己
  11. GIMP教程 5 选择
  12. fanuc机器人码垛编程实例_FANUC 机器人码垛编程详细讲解,要收藏哦~
  13. java实现微信支付之扫码支付
  14. win10无法启用shockwave flash object的解决
  15. dwg转换pdf方法
  16. Excel 绘制正态概率图-正态性检验
  17. java for 代表什么意思_java中的for是什么意思
  18. java ice c_Java的Ice包接收中文乱码
  19. SLC NAND FLASH的物理结构
  20. 详解各种布隆过滤器原理及使用场景

热门文章

  1. mangos服务器架构
  2. 【java学习之路】(java框架)007.IoC和DI注解开发
  3. Win7 Tortoise SVN安装异常--please install the universal crt first.You can .. windows-update(Kb2999226)
  4. 设计模式(二)构建型模式
  5. Redis的持久化 RDB AOF
  6. linux salt命令 -e,Linux记录-salt命令
  7. php 微信转发朋友圈,php微信分享到朋友圈、QQ、朋友、微博
  8. SQL Server 和 Oracle 的常用函数对比
  9. 数据挖掘项目:银行信用评分卡建模分析(下篇)
  10. java jdbc 表存在_JDBC / Java – 如何检查数据库中是否存在表和列?