当前位置:   article > 正文

并发编程:单核、多核、超线程技术、单处理器并发原因(0)_单核 多线程 并发 问题

单核 多线程 并发 问题

1、单处理器和到多处理器的演变

     尽管单处理器仍在发展,但由于指令级并行的开发空间正在减小,再加上散热等问题限制了时钟频率的继续提高,所以单处理器发展的速度正在减缓,这最终导致了起源于在单独一个晶片设计多个内核的多处理器系统结构的出现。

    多处理器系统结构允许多个处理器执行同一个程序,共享同一个程序的代码和地址空间,并利用并行技术来提高计算效率。

    技术的进步不再指时钟速度的提升而是指并行度的提升,并行问题已经成为现代计算机科学的主要挑战。

2、单个多核CPU和多个单核CPU的认识及区别

多个单核CPU:

      成本更高,因为每个CPU都需要一定的线路电路支持,这样对主板上布局布线极为不便。并且当运行多线程任务时,多线程间通信协同合作也是一个问题。依赖总线的传输,速度较慢,且每一个线程因为运行在不同的CPU上。导致不同线程间各开一个Cache,会造成资源的浪费,同时如果线程间协作就会有冗余数据的产生,更加大了内存的开销。

单个多核CPU:

     计算机内部需要一套芯片组,一套存储,多核之间通过芯片内部总线进行通信,共享使用内存。

     可以很好地规避基本上多个单核CPU提到的所有缺点。它不需要考虑硬件上的开销以及复杂性问题,同时也可以很好地解决多线程间协同工作的问题,减少内存的开销,因为多线程程序在多核CPU中运行是共用一块内存区的,数据的传输速度比总线来的要快同时不会有冗余数据的产生。单个多核CPU的问题也是显而易见的,当多个较大程序共同运行时,内存就显得极为匮乏了,不光是Cache占用的的问题,同时还有程序的指令以及数据的替换问题。

区别:

   1、通信上的区别:多个单核CPU基于电脑主板上的总线;对于单个多核CPU基于CPU内部总线进行信息的交互。

   2、资源利用上的区别:多个单核CPU上跑一个多线程的程序,不考虑超线程,那么每一个线程就要跑在一个独立的CPU上,线程间的所有协作都要走总线,而共享数据更是有可能要在好几个Cache里同时存在。单个多核CPU上跑一个多线程的程序,那么线程间通信将比上一种情形快很多。对板上空间的占用较小,布局布线的压力也较小。

引用资料:https://blog.csdn.net/scandly_java/article/details/51263202

3、INTEL超线程技术

     常看的I7处理器4核8线程,工程师发现单一任务并不能让处理器核心达到满负荷运行,所以将其分为两个逻辑处理器,同时给它两个任务来执行,这样解决使用效率的问题。

4、 单处理器的出现并发的根本原因

      并发通常是提高运行在单处理器上的程序的性能。【在单处理器上运行的并发程序开销确实应该比该程序的所有部分都顺序执行的开销大,因为其中增加上下文切换的代价(从一个任务切换到另一个任务),表面上看,将程序的所有部分当作单个的任务运行好像是开销更小一点,并且可以节省上下文切换】

      在单处理器上使问题变得有些不同的是阻塞。如果程序中的某个任务因为该程序控制范围之外的某些条件(通常是I/O)而导致不能继续执行,那么我们就说这个任务或线程阻塞。如果没有并发,则整个程序都将停下来,直至外部条件发生变化。但是,如果使用并发来编写程序,那么当一个任务阻塞时,程序中的其他任务还可以继续执行,因此这个程序可以保持继续向前执行。

    事实上,从性能的角度看,如果没有任务会阻塞,那么在单处理器机器上使用并发就没有任何意义。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/151240?site
推荐阅读
相关标签
  

闽ICP备14008679号