CPU多核计算概论

为什么需要CPU多核计算:

矛盾

1.日益增长的处理能力单核处理极限瓶颈的矛盾

其中,单核CPU频率接近极限,提高主频发热现象严重,继续提高主频会带来高发热问题,导致芯片运行不正常。

单核通过提高指令形式方法会带来一些移植上的麻烦,增加流水线是很困难的,从指令上提升CPU是很困难的。

单纯提高CPU的主频,会与储存器访问速度匹配问题没如果CPU的访问速度不能匹配储存器的速度,CPU的性能很难发挥。

2.对高性能的计算需求能力越来越高

网络服务,要求高并发

游戏软件,要求高并发

嵌入式系统,要求高处理能力等等

现在多核计算将会成为发展的趋势。

多核计算的架构:

容器多核 多核计算_多核

指令数据方式

1.单指令流数据流

2.单指令流多数据流

3.多指令但数据流

4.多指令多数据流

硬件架构

1.多核CPU是将多个CPU集成在单个芯片上,每个CPU都是一个单独处理器,每个CPU和可以有独立的cache,也可以共享一个cache.

2.内存为多个CPU核心共享,CPU核心一般是对称的。

3.多核CPU编程中,要想充分发挥硬件的性能,就要采用多线程,多进程执行,使得每个CPU在同一时间有线程在执行。

4.多核CPU的多个线程是在并行执行,同一时刻多个线程的并行执行,单核是通过切换上下文执行,同一时刻只有一个线程。

 

多核CPU编程要解决的问题:

1串行编程,转变为并行编程。

2分布式编程

3程序设计

多核CPU编程遇到的问题:

1并发性

瓶颈在于CPU的外围设备,如储存器,IO口等。

单核要创建线程,使用API直接创建注册进内核。

多线程使用openMP等建立并行程序,包括编译一些指导语句,库函数等。

2CPU效率问题

程序并行化之后,会有CPU饥饿问题,如共享内存访问的问题,多个线程对共享数据都是只读操作,那么不需要加锁保护,如果是在写 操作,则需要加锁保护,这样会导致其他线程在等待限制线程的运行,导致CPU的效率降低,在此过程中,等同单线程的效率。

3任务的分解与调度的问题

进程可以创建多个线程,线程可以执行多个任务,如果任务分解的不好,就很难均匀分配到各个核心上。这是任务调度的问题。

4加速比性能问题

多核处理器的性能 < 单核处理器 x 核心数

5能耗问题

耗电比单核高