多核编程应用——硬件、进程、线程(一)

多核编程应用——硬件、进程、线程(一)

初步

  • 为什么要了解计算机的内部结构?
    由于多线程的存在,更多的系统属性变得更加重要了起来,了解处理器的内部结构有利于理解这些影响

前提1:系统的计算性能由处理器和内存的性能决定
前提2:计算性能将决定计算机执行指令的速度快慢
前提3:辅助设备的性能比处理器和内存低得多
结论1:对于代码中性能重要的部分,要避免以来这些辅助设备


多核处理器

  • 为什么使用多核处理器?
  1. 提高串行处理器的性能日益困难
  2. 采用增加硅片面积的方式,对串行处理器的性能的提升是有限的
  3. 不增加硅片面积,使用这些面积放入一个新的核心,有可能能完成两倍的工作量

线程可指代硬件线程或者软件线程
软件线程:指令流
硬件线程:执行某个软件线程的硬件资源(多核处理器有多个硬件线程),一个硬件线程支撑一个软件线程


实现

缓存是芯片上保存最近使用的数据和指令的部分
核心是芯片上负责实行指令的部分
一个芯片由缓存、核心和其他部分构成

让芯片运行多线程最简单的方式

  1. 是复制多个核心
    多个核心共享与系统其余部分的接口,意味着多个核心必须共享对系统的访问
  2. 是单核心多线程
    即使用同一个核心运行多个线程的指令。这是,运行在同一个核心上的多个线程不得不共享核心上的资源。

多数处理器采取上述两种方式结合的形式
例如,使用两个核心,每个核心支持两个线程,则整个芯片支持4个线程


通常认为硬件线程是等同的,某个软件线程的性能不由设计上的某些固定不变的属性决定,而是由正在执行的其他线程决定

当两个线程在多核处理器上运行时,既可以在同一个核心运行,也可以在不同核心运行。
当在同一个核心上运行时,必须实现资源共享,其他情况下不必共享资源。
把线程调度到单处理器不同核心上所造成的性能差异微乎其微,因为这样子不需要和其他处理器共享信息。


流水线

流水线设计:
完成单条指令需要多个步骤,例如最简单的划分:

  1. 提取
  2. 解码
  3. 执行
  4. 完成

让核心的不同部分执行不同的步骤,使其在一个指令周期内可以同时执行多条指令,称之为流水线设计。

优点:增快执行速度
缺点:出错时难以纠正。例如错误分支预测。

猜你喜欢

转载自blog.csdn.net/weixin_45206746/article/details/114040631