




因为CPU有大量的缓存和复杂的逻辑控制单元,因此它非常擅长逻辑控制、串行的运算。相比较而言,GPU因为有大量的算术运算单元,因此可以同时执行大量的计算工作,它所擅长的是大规模的并发计算, 计算量大但是没有什么技术含量,而且要重复很多次。这样一说,我们利用GPU来提高程序运算速度的方法就显而易见了。使用CPU来做复杂的逻辑控制,用GPU来做简单但是量大的算术运算,就能够大大地提高程序的运行速度。
CPU控制技术的主要形式,插入控制。CPU 对于操作控制信号的产生,主要是通过指令的功能来实现的,通过将指令发给相应部件,达到控制这些部件的目的。实现一条指令功能,主要是通过计算机中的部件执行一序列的操作来完成。较多的小控制元件是构建集中处理模式的关键,目的是为了更好的完成CPU数据处理操作。
除了嵌入式系统,多数CPU都有两种工作模式:内核态和用户态。这两种工作模式是由PSW寄存器上的一个二进制位来控制的。内核态的CPU,可以执行指令集中的所有指令,并使用硬件的所有功能。
每核上的多线程CPU都共享该核的CPU资源。
假设每核CPU都只有一个"发动机"资源,那么线程1这个虚拟CPU使用了这个"发动机"后,线程2就没法使用,只能等待。
所以,超线程技术的主要目的是为了增加流水线上更多个***的指令,这样线程1和线程2在流水线上就尽量不会争抢该核CPU资源。所以,超线程技术利用了superscalar(超标量)架构的优点。
关于CPU上的高速缓存
1、高速的缓存是CPU的寄存器,它们和CPU的材料相同,靠近CPU或接近CPU,访问它们没有时延(lt;1ns)。但容量很小,小于1kb。
2、寄存器之下,是CPU的高速缓存。分为L1缓存、L2缓存、L3缓存,每层速度按数量级递减、容量也越来越大。
3、每核心都有一个自己的L1缓存。L1缓存分两种:L1指令缓存(L1-icache)和L1数据缓存(L1-dcache)。L1指令缓存用来存放已解了码指令,L1数据缓存用来放访问非常频繁的数据。
4、L2缓存用来存放近期使用过的内存数据。更严格地说,存放的是很可能将来会被CPU使用的数据。
5、多数多核CPU的各核都各自拥有一个L2缓存,但也有多核共享L2缓存的设计。无论如何,L1是各核私有的(但对某核内的多线程是共享的)。
