x86、amd、arm和GPU
参考资料:Intel和AMD 与 x86,ARM,MIPS有什么区别?
CPU和GPU。
题目其实比较乱,不同类的东西都堆在一起了。但对于我来说,确实是不容易搞清。
应该这么说,x86和arm是一类,是CPU架构;Amd是一家CPU制造商,它们家的CPU和Intel一样,都是x86架构。而GPU则与CPU齐名,图形处理器。当然啦,它们都算是非常重要的处理器的范畴,放在一起说也不过分。
一、x86和x64
对软件来说,x86一般是指32位的系统,x64就是64位的系统。对CPU来说,也类似。但是,x64本质上也是x86的一个版本,确切来说,应该叫x86_64,可以简单理解成x86的下一代版本。目前x86基本上已经淘汰,x64是主流。
对于世界上最大的两家CPU制造商Intel和Amd,他们都生产x86(包括x64)架构的CPU。这俩公司渊源其实很深。早期时Intel先是自己搞了个x86架构,然后Amd拿到授权也可以做x86了。接着Intel向64位过渡的时候搞了个ia64(x64架构),因为和x86架构不兼容,市场反应极差。而Amd率先搞了x86的64位兼容架构(32和64的混合架构),即现在的x86-64,Intel反过来向Amd要授权(Intel和Amd两家专利交叉的很严重)生产x86-64。由于是Amd先搞出来的,所以x86-64也叫amd64。
二、arm和MIPS
早期的cpu有两个设计思路,一是把cpu内的逻辑电路做的非常复杂,这样可以直接用cpu硬件实现复杂指令,这个叫复杂指令集CISC;另一个思路是尽可能把cpu做的简单,依靠简单指令的组合迭代完成复杂指令,这个叫精简指令集RISC。
早期的x86(含x64)是cisc的代表,后来的发展中逐步引入了risc的部分理念,将内部指令的实现大量模块化,准确来说是一个cisc外加risc部分技术的架构。
而arm是risc的典型代表,不过在发展过程中引入了部分复杂指令(完全没有复杂指令的话操作系统跑起来异常艰难),所以arm是一个risc基础外加cisc。
arm的主要专利技术在arm公司手中,像高通,三星,苹果这些公司需要拿到arm的授权。
另一个risc的典型处理器就是mips(MIPS的意思是“无内部互锁流水级的微处理器”,Microprocessor without interlocked pipelined stages,其机制是尽量利用软件办法避免流水线中的数据相关问题;mips也是这款CPU的公司名)。mips是一个学院派的cpu,授权门槛极低,因此很多厂家都做mips或者mips衍生架构。我们平时接触到的mips架构cpu主要用在嵌入式领域,比如路由器。
目前无论mips还是arm,性能和主流x86差距都很大。不过arm胜在便宜低功耗,mips则纯计算能力很强(学院派的东西貌似都这样),它们都主要用在嵌入式设备。
三、GPU
CPU是中央处理器,GPU是图形处理器(显卡的核心)。
CPU和GPU大不相同,因为它们的设计目标不同,分别针对了两种不同的应用场景。
CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。所以与CPU擅长逻辑控制,串行的运算和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。因此GPU除了图像处理,也越来越多的参与到计算当中来,比如数字加密币的挖矿。
具体来说,GPU的工作大部分计算量大,但没什么技术含量,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像老教授,积分微分都会算,但工资高,一个老教授工资顶二十个小学生。
四、SIMD、MIMD和SIMT
SIMD(Single Instruction Multiple Data,单指令流多数据流)
MIMD(Multiple Instruction Multiple Data,多指令流多数据流)
SIMT(Single Instruction,Multiple Threads单指令多线程)
在计算机体系中,数据并行有两种实现路径:MIMD和SIMD。其中MIMD的表现形式主要有多发射、多线程、多核心,在当代设计的以处理能力为目标驱动的处理器中,均能看到它们的身影。同时,随着多媒体、大数据、人工智能等应用的兴起,为处理器赋予SIMD处理能力变得愈发重要,因为这些应用存在大量细粒度、同质、独立的数据操作,而SIMD天生就适合处理这些操作。
如上所述,GPU 天生是处理并行问题的好手,在它的体系结构中融合了线程并行、指令并行、SIMD 数据并行的多种并行处理形式,它可以概括为是一个由多个多线程 SIMD 处理器组成的 MIMD 处理器。
与SIMD类似的又有SIMT。从字面定义看SIMD是指同一条指令多个数据。SIMT是同一条指令多个线程。他们共同的一个点就是同一条指令。简单来说,SIMD是一个核可以执行多个线程。SIMD的出现,是为了节省硬件资源,一条指令,可以驱动多个部件工作。但这样带来的后果就是编程比较麻烦,英伟达公司提出了SIMT,其初衷是希望硬件像SIMD一样高效,编程起来还像多核多线程一样的轻松。
SIMT是一个软件概念。
参考资料:
Intel和AMD 与 x86,ARM,MIPS有什么区别?
CPU 和 GPU 的区别是什么?
为何GPU可以用于加速人工智能或者机器学习的计算速度(并行计算能力)
SIMD数据并行(三)——图形处理单元(GPU)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)