此篇学习笔记是在老东家 360 做数据时研究机器性能问题做的基础学习
问题
机器学习集群用的都是GPU,为什么不用CPU,为什么个人电脑不用GPU? (CPU还要负责指令控制?)
- 微架构
CPU和GPU看起来完全不是按照相同的设计思路设计的,当代CPU的微架构是按照兼顾“指令并行执行”和“数据并行运算”的思路而设计,就是要兼顾程序执行和数据运算的并行性、通用性以及它们的平衡性,是面向指令执行,逻辑复杂。CPU的微架构偏重于程序执行的效率,不会一味追求某种运算极致速度而牺牲程序执行的效率。
和GPU相比,CPU核心的重复设计部分不多,这种复杂性不能仅以晶体管的多寡来衡量,这种复杂性来自于实现:如程序分支预测,推测执行,多重嵌套分支执行,并行执行时候的指令相关性和数据相关性,多核协同处理时候的数据一致性等等复杂逻辑。
GPU其实是由硬件实现的一组图形函数的集合,这些函数主要用于绘制各种图形所需要的运算。这些和像素,光影处理,3D 坐标变换等相关的运算由GPU硬件加速来实现。图形运算的特点是大量同类型数据的密集运算——如图形数据的矩阵运算,GPU的微架构就是面向适合于矩阵类型的数值计算而设计的,大量重复设计的计算单元,这类计算可以分成众多独立的数值计算——大量数值运算的线程,而且数据之间没有像程序执行的那种逻辑关联性。
GPU微架构复杂度不高,尽管晶体管的数量不少。从应用的角度看,如何运用好GPU的并行计算能力主要的工作是开发好它的驱动程序。GPU驱动程序的优劣很大程度左右了GPU实际性能的发挥。
因此从微架构上看,CPU擅长的是像操作系统、系统软件和通用应用程序这类拥有复杂指令调度、循环、分支、逻辑判断以及执行等的程序任务。它的并行优势是程序执行层面的,程序逻辑的复杂度也限定了程序执行的指令并行性,上百个并行程序执行的线程基本看不到。GPU擅长的是图形类的或者是非图形类的高度并行数值计算,GPU可以容纳上千个没有逻辑关系的数值计算线程,它的优势是无逻辑关系数据的并行计算。
- 主频
另外,GPU执行每个数值计算的速度并没有比CPU快,从目前主流CPU和GPU的主频就可以看出了,CPU的主频都超过了1GHz,2GHz,甚至3GHz,而GPU的主频最高还不到1GHz,主流的也就500~600MHz。要知道1GHz = 1000MHz。所以GPU在执行少量线程的数值计算时并不能超过CPU。
目前GPU数值计算的优势主要是浮点运算,它执行浮点运算快是靠大量并行,但是这种数值运算的并行性在面对程序的逻辑执行时毫无用处。- IPC(每个时钟周期执行的指令数)
这个方面,CPU和GPU无法比较,因为GPU大多数指令都是面向数值计算的,少量的控制指令也无法被操作系统和软件直接使用。如果比较数据指令的IPC,GPU显然要高过CPU,因为并行的原因。但是,如果比较控制指令的IPC,自然是CPU的要高的多。原因很简单,CPU着重的是指令执行的并行性。
CPU频率高和低有什么坏处?限制频率的瓶颈是什么?可以无限提高吗?
低:速度慢,利用率不高 高:其他系统频率达不到,容易烧坏、或者系统不稳定; 上限:脉冲电压理论近似光速
为什么在同等硬件的条件下AMD低频可以和Intel高频相当?
指令集不同,微指令集和复杂指令集
什么是差分信号?怎么避免干扰的?
差分信号与传统的一根信号线一根地线(即单端信号)走线的做法相比,其优缺点分别是:
- 优点:
抗干扰能力强干扰噪声一般会等值、同时的被加载到两根信号线上,而其差值为0,即,噪声对信号的逻辑意义不产生影响。
能有效抑制电磁干扰(EMI) 由于两根线靠得很近且信号幅值相等,这两根线与地线之间的耦合电磁场的幅值也相等,同时他们的信号极性相反,其电磁场将相互抵消。因此对外界的电磁干扰也小。
时序定位准确差分信号的接收端是两根线上的信号幅值之差发生正负跳变的点,作为判断逻辑0/1跳变的点的。而普通单端信号以阈值电压作为信号逻辑0/1的跳变点,受阈值电压与信号幅值电压之比的影响较大,不适合低幅度的信号。- 缺点:
若电路板的面积非常吃紧,单端信号可以只有一根信号线,地线走地平面,而差分信号一定要走两根等长、等宽、紧密靠近、且在同一层面的线。这样的情况常常发生在芯片的管脚间距很小,以至于只能穿过一根走线的情况下。
芯片架构
X86 (我司用的Intel 2.3GHz)
芯片组通常又分为两个网桥来控制各组件癿沟通, 分别是:(1)北桥:负责链接速度较快癿 CPU、主存储器不显示适配器等组件;(2)南桥:负责连接速度较慢癿周边接口, 包括硬盘、USB、网绚卡等等。
AMD
不 Intel 同的地方在于主存储器是直接不 CPU 沟通而丌透过北桥!仍前面癿说明我仧可以知道 CPU癿资料主要都是来自亍主存储器提供, 因此 AMD 为了加速这两者癿沟通,所以将内存控制组件整吅到 CPU 弼中, 理论上这样可以加速 CPU 不主存储器癿传输速度!这是两种 CPU 在架构上面主要癿差异点。
CPU的主频
CPU的主频即CPU内核工作的时钟频率(CPU Clock Speed)。 通常所说的某某CPU是多少GHz的,而这个多少GHz就是“CPU的主频”。CPU的主频表示在CPU内数字脉冲信号震荡的速度,与CPU实际的运算能力并没有直接关系。主频和实际的运算速度存在一定的关系,但至今还没有一个确定的公式能够定量两者的数值关系,因为CPU的运算速度还要看CPU的流水线的各方面的性能指标(缓存、指令集、CPU的位数等等)。由于主频并不直接代表运算速度,所以在一定情况下,很可能会出现主频较高的CPU实际运算速度较低的现象。比如AMD公司的AthlonXP系列CPU大多都能以较低的主频,达到英特尔公司的Pentium 4系列CPU较高主频的CPU性能。 主频仅是CPU性能表现的一个方面,而不代表CPU的整体性能。电脑的整体运行速度不仅取决于CPU运算速度,还与其它各分系统的运行情况有关,只有在提高主频的同时,各分系统运行速度和各分系统之间的数据传输速度都能得到提高后,电脑整体的运行速度才能真正得到提高。
主存(内存 Dynamic Random Access Memory)
要吪劢双信道癿功能时, 你必须要将两根容量相同癿主存储器揑在相同颜色癿揑槽弼中喔!
PCI PCI-E
ssd优点 缺点 原理
【硬件与性能 专题讨论】PPT草稿
- 简单介绍两种架构
CPU
- 影响CPU性能的指标、参数都有什么?
架构、指令、时钟频率、数据传输速度、核数、缓存 如何提高?
架构
- 使用不同的芯片、处理器(Intel、AMD、GPU)
GPU和CPU区别?
设计思路不同。
CPU兼顾程序执行和数据运算的并行性、通用性以及它们的平衡性,是面向指令执行,逻辑复杂。偏重于程序执行的效率,不会一味追求某种运算极致速度而牺牲程序执行的效率。 GPU其实是由硬件实现的一组图形函数的集合,这些函数主要用于绘制各种图形所需要的运算,面向适合于矩阵类型的数值计算而设计的,大量重复设计的计算单元,这类计算可以分成众多独立的数值计算——大量数值运算的线程,而且数据之间没有像程序执行的那种逻辑关联性。高度并行
众核、速度不同(一会说到)
- GPU单时钟周期运行的命令多余CPU
- 指令 & 时钟频率
- 时钟频率由什么组成,公式?(外频 * 倍频)
- 超频提高外频还是倍频?(外频)
- 超频的优点、缺点?为什么?
- 【讨论】少有人超频GPU,为什么?能不能?有没有必要?
- 服务器能不能超频?
- 数据传输速度
- 【自身】处理速度(目前说的)
- 【外部依赖】数据交换速度(总线速度)
核数
- 核是否越多越好?
- 对个人电脑和服务器有什么不同?
- 【讨论】支持多核的程序的方法?
- 为什么明明只有2核,管理器中却显示了4个核心?有什么好处和坏处?什么情况下才能充分利用?
超线程技术(需要系统、主板、软件支持) “超线程”(Hyperthreading Technology)技术就是通过采用特殊的硬件指令,可以把两个逻辑内核模拟成两个物理超线程芯片,在单处理器中实现线程级的并行计算,同时在相应的软硬件的支持下大幅度的提高运行效能,从而实现在单处理器上模拟双处理器的效能。其实,从实质上说,超线程是一种可以将CPU内部暂时闲置处理资源充分“调动”起来的技术。
缓存
- 命中率多高?
- 缓存是不是越大越好?
- 哪一级最重要?为什么?有没有必要那么多级?
- 【讨论】CPU未来的发展方向?量子计算是怎么回事?能不能支持复杂的逻辑?还是类似GPU?
- 影响CPU性能的指标、参数都有什么?
传输
问题
- 什么决定了速度?公式?
- 串行比并行快?干扰、噪声、时钟同步、频率瓶颈
- 为什么一开始不使用?差分传输(相对单端)是什么
一个差分信号是用一个数值来表示两个物理量之间的差异。从严格意义上来讲,所有电压信号都是差分的,因为一个电压只能是相对于另一个电压而言的。在某些系统里,系统’地’被用作电压基准点。当’地’当作电压测量基准时,这种信号规划被称之为单端的。
- 避免基准电压造成的偏差
- 对外部电磁干扰是高度免疫的
- 区分串行还是并行?
- ATA(并行)
- SATA(串行)
- SAS(SCSI协议族 串行)
- PCIE(串行,但多通道)
- usb 1.0(200kb) 1.1(1.5MB) 2.0(60MB) 3.0(640MB)
- DDR QDR
DDR,是在时钟上升沿和下降沿都可以读写,也就是双倍速,QDR就是除了时钟上升沿和下降沿都可以读写外,读和写得端口也是分开的,所以是4倍速
存储
- 内存
- DDR是什么?
- 双通道设计?
- ECC校验是什么?
- 低压(1.35 1.5 移动设备,可以自适应) 高压
- 内存
- 服务器选择
- cpu区别
制作工艺,缓存,主频,线程数,
- cpu区别