中企动力科技股份有限公司网站,怎样建设一个网站教学,友情链接可以随便找链接加吗,淘宝联盟网站推广位怎么做CPU基础知识大全详解有哪些#xff1f;CPU在电脑中是最核心关键的硬件之一#xff0c;相当于人的大脑#xff0c;决定了电脑运算能力#xff0c;因此CPU的选择至关重要。下面就让小编带你去看看CPU基础知识大全详解#xff0c;希望对你有所帮助吧!程序员必须了解的CPU知识…CPU基础知识大全详解有哪些CPU在电脑中是最核心关键的硬件之一相当于人的大脑决定了电脑运算能力因此CPU的选择至关重要。下面就让小编带你去看看CPU基础知识大全详解希望对你有所帮助吧!程序员必须了解的CPU知识 - 科普篇1导读对于一名程序员来说无论你使用的是什么语言代码最终都会交给CPU来执行。所以了解CPU相关的知识一方面属于程序员的内功另一方面也可以帮助你在日常编写代码时写出更加高效的代码本文不打算对CPU进行深入探究相反是以简单的语言来帮助大家了解CPU的工作原理以及不得不提到的CPU缓存相关知识其中晦涩的内容我会通过配图来帮助大家理解最后会以几个例子来帮助大家更直观的感受到CPU缓存带来的性能影响2CPU基础知识CPU即Central ProcessingUnit(中央处理器)是我们的代码打交道最多的硬件之一要想让一个CPU工作就必须给它提供指令和数据而这里的指令和数据一般就放在我们的内存当中。其中指令就是由我们平常编写的代码翻译而来数据也是我们代码中需要用到的数据(例如一个int值、一串字符串等等)以C语言为例从我们开始编写到运行的生命周期可以粗略的用下图表示大致分为以下几个步骤我们日常中使用编辑器或者IDE敲入代码代码编写完成后使用编译和链接工具生成可以被执行的程序也就是机器语言(指令的集合)当程序被运行时整个程序(包括指令和数据)会被完整的载入到内存当中CPU不停的向内存读取该程序的指令执行直到程序结束通过上述第4步我们知道CPU自身是没有保存我们的程序的需要不停的向内存读取那么有个问题是CPU是如何向内存读取的呢?这里其实存在一个“总线”的概念即CPU会通过地址总线、控制总线、数据总线来与我们的内存进行交互。其中地址总线的作用是寻址即CPU告诉内存需要哪一个内存地址上的数据;控制总线的作用是对外部组件的控制例如CPU希望从内存读取数据则会在控制总线上发一个“读信号”如果希望往内存中写一个数据则会发一个“写信号”;而数据总线的作用顾名思义就是用来传输数据本身的了例如CPU需要希望从内存中读一条数据那么整个过程为到这里我们已经知道了CPU在执行我们程序的过程中会不断的与内存交互读取需要的指令和数据或者写入相关的数据。这个过程是非常非常快的一般CPU与内存交互一次需要200个时钟周期左右而现代的处理器单个时钟周期一般都短于1纳秒(1秒 十亿纳秒)但我们的前辈们仍然对这个速度不满足所以又对CPU设计了一套缓存系统来加速对内存中数据的读取3CPU缓存现代CPU通常设计三级缓存(L1、L2、L3)其中L1、L2缓存是每个CPU核心独享的L3缓存是所有CPU核心共享的而L1缓存又分为数据缓存和指令缓存我们的数据就从内存先到L3缓存中再到L2缓存中再到L1缓存中最后再到CPU寄存器中按照大小来看通常L1 L2 L3 内存 磁盘如果你手边有一台Linu__机器的话可以通过下面的命令查看CPU各级缓存的大小以我手上这台服务器为例L1指令缓存大小为32K、数据缓存大小为32KL2缓存大小为1MBL3缓存大小为35.75MB按照速度来看通常L1 L2 L3 内存 磁盘以时钟周期为计量单位L1缓存约 4 个CPU时钟周期L2缓存约 10 个CPU时钟周期L3缓存约 40 个CPU时钟周期内存约 200 个CPU时钟周期也就意味着如果能命中缓存我们程序的执行速度至少提升5倍左右如果能命中L1缓存则提升50倍左右这已经属于相当大的性能提升了有了缓存系统后CPU就不必要每条指令或数据都读一次了可以一次性读取若干条指令或数据然后放到缓存里供以后查询因为根据局部性原理CPU访问内存时无论是读取指令还是数据所访问的内存单元都趋于聚集在一个较小的连续区域中所以一次性读取一块连续的内存有利于后续的缓存命中现实中CPU通常情况下每次的读取内存时都会一次性读取内存中连续的64个字节这个连续的64字节术语就叫做CacheLine(缓存行)所以每一级CPU缓存就像下面这样如果你手边有一台Linu__机器的话可以通过下面的命令查看你的机器使用的CPU的Cache Line大小是多少对于我的服务器来说L1缓存就有 32KB / 64B 512 个Cache Line到这里我们已经知道了CPU缓存的工作原理和加载方式这里实际上还遗留了两个话题没有讲一个是如何组织每一级的 Cache Line(例如 L1 的512 个CacheLine)来提升访问的命中率;另一个更加复杂一点在现代CPU都是多核的场景下如何保证数据的一致性因为每个核都有自己的L1和L2缓存那么如果核心1修改的时候只修改了缓存的数据而没有修改内存中的数据其他核心读到的就是旧数据了如何解决这一问题?由于本篇文章只是期望对CPU知识进行一个科普不希望对于小白来说一次性接触大量的新内容所以这两个问题我准备在后面的另外两篇再进行更细致的讨论4性能对比下面以几个实际的例子来加深大家对Cache Line如何影响程序性能的理解示例一我们假设有一个5000万长度的int数组接着把这个数组的其中一些元素乘以2考虑下面这两份代码直觉上代码一比代码二少循环了4倍并且也少乘2了4倍理论上代码一比代码二快4倍左右才合理但在我的服务器上运行的结果是代码一平均花费90毫秒代码二平均花费93毫秒性能几乎是差不多的读者可以自行思考一下原因再点击下方空白处查看解析点击下方空白区域查看解析▼解析这里最主要的原因还是CacheLine虽然代码一需要执行的指令确实比代码二要少4倍但由于CPU一次会把连续的64个字节都读入缓存而读写缓存的速度又特别快(还记得吗?L1的读取速度只有约4个时钟周期是内存的50倍)以至于我们很难察觉到这4倍指令的差距示例二假设我们需要遍历一个二维数组考虑下面这两种遍历方法由于数组长度是一模一样的直觉上我们期望的是两份代码运行时间相差无几。但在我的服务器上代码一运行需要23毫秒代码二运行需要51毫秒读者可以自行思考一下原因再点击下方空白处查看解析点击下方空白区域查看解析▼解析这里最主要的原因依然是Cache Line由于C语言中二维数组的内存是连续的所以我们按行访问的时候访问的一直都是连续的内存而CacheLine也是连续的64个字节所以按行访问对Cache Line更友好更容易命中缓存而按列访问的话每次访问的内存不是连续的每次的跨度都是256__sizeof(int)也就是1KB更容易出现缓存Miss示例三假设我们有一个数组我们希望计算所有大于100的元素的和考虑下面两份代码其中代码一是随机生成了个长度为1000W的数组然后统计大于100的所有数字的和;代码二也是随机生成了个长度为1000W的数组但是是先排完序再统计大于100的所有数字的和。并且可以看到两份代码都是只计算了统计sum的那段代码的消耗时间所以两份代码都不考虑随机生成数组和排序花费的时间理论上来讲两份代码花费时间应当是相差无几的但实际上在我的机器上跑出来第一份代码输出的是46毫秒第二份代码输出的是23毫秒读者可以自行思考一下原因再点击下方空白处查看解析提示第二份代码中在统计sum之前数组是有序的电脑CPU如何选购?台式机CPU知识扫盲和选购建议CPU有几个重要的参数架构、主频、核心、线程、缓存、接口。架构有句老话叫“抛开架构看核心主频都是耍流氓”那什么是架构?假如我们把架构想象成交通工具那么老的架构就是火车而新的架构就是高铁所以架构的提升直接影响CPU的性能。这也就是为什么老式的CPU虽然也有超高的主频但性能还是被现在的i3碾压的原因了。电脑CPU如何选购?台式机CPU知识扫盲和选购建议主频我们常在CPU的信息里看到某某CPU主频3.6GHz这里的主频其实是CPU内核工作的时钟频率并不直接等于CPU的运算速度但是高的主频对于CPU的运算速度却至关重要。核心核心又称内核是CPU用来完成所有计算、接受/存储命令、处理数据等任务的装置。我们可以简单的把核心理解为人的手单核就是一只手、双核就是两只手、四核就是四只手。核心数并不是越多越好的要看使用场景比如在打字的时候两只手就比一只手效率高但是在操作鼠标的时候使用两只手只会起到适得其反的效果。至于什么场景需要使用多少核心的CPU在下面会讲到。电脑CPU如何选购?台式机CPU知识扫盲和选购建议线程我们通常会看到“四核四线程”和“四核八线程”这两种说法我们可以简单的把工厂里的流水线比作线程把工人比作核心早先由于工人工作技能不高一个工人只能处理一条流水线的任务我们可以把这个称为单核单线程但是后来工人技术熟练了觉得操作一条流水线很无聊不能体现自己的价值于是就给又分配一条流水线让这个工人同时处理两条流水线的任务我们可以把这个称为“单核双线程”。缓存缓存也是CPU里的一项非常重要的参数由于CPU的运算速度比内存条的读写速度要快很多这会让CPU花费很长的时间等待数据的到来或是把数据写入内存条这个时候CPU内的高速缓存可以作为临时的存储介质来缓解CPU的运算速度与内存读写速度不匹配的矛盾所以缓存越大越好。电脑CPU如何选购?台式机CPU知识扫盲和选购建议接口CPU需要通过接口安装在主板上才能工作而目前CPU的接口都是针脚式接口AMD和英特尔的CPU在接口上就有很大的差别所以需要使用适配接口的主板才能正常工作。目前英特尔主流的接口类型为LGA-1151接口(6、7、8代i3i5 i7都是这种接口);AMD平台主流的接口类型有AM4接口(锐龙系列)和FM2接口(速龙系列、APU系列)。PS:英特尔最新的酷睿8代CPU虽然也是LGA-1151接口但不适配老式的LGA-1151接口主板的平台需要另购主板说完了这些重要的参数相信你也对CPU有了一个大概的了解我们再谈谈不同场景对CPU的选择。计算机系统基础CPU相关知识笔记1、什么是CPU计算机的基本硬件系统由运算器、控制器、存储器、输入设备、输出设备5大部件组成。运算器和控制器等部件被集成在一起称为中央处理单元(Central Processing Unit,CPU).CPU是硬件系统的核心。2、CPU的用途CPU主要负责获取程序指令、对指令进行译码并加以执行。CPU的功能如下3、CPU的组成CPU主要由运算器、控制器、寄存器和内部总线等部件组成。3.1 运算器运算器包括算术逻辑单元(ALU)、累加器、缓冲寄存器、状态条件寄存器等。它的主要工作是完成所规定的的各种算术和逻辑运算。算术逻辑单元(ALU)ALU的重要组成部件负责处理数据实现算术和逻辑运算。累加器(AC)当执行算术或逻辑运算时为ALU提供一个工作区。数据缓冲器(DR)作为CPU和内存、外部设备之间数据传送的中转站、操作速度的缓冲;在单累加器结构的运算器中DR还可以作为操作数寄存器。状态寄存器(PSW)保存算术指令和逻辑指令运行或测试的结果建立的的各种条件码内容分为状态标志和控制标志。3.2 控制器用于控制这个CPU的工作不仅要保证程序的正确执行还要能处理异常事件。控制器主要包括指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑。3.2.1 指令控制指令寄存器(IR)当执行一条指令时需要先把它从内存存储器取到缓冲寄存器中再送入IR中暂存指令译码器会根据IR的内容产生各种微操作命令控制其他部件协调工作完成指令的功能。程序计数器(PC)PC具有寄存和计数两种功能。又称为指令计数器。地址寄存器(AR)用来保存当前CPU所访问的内存单元地址。指令译码器(ID)包含指令操作码和地址码两部分为了能执行任何给定的指令必须对操作码进行分析以便识别要进行的操作。3.2.2 时序控制时序控制要为每条指令按时间顺序提供应有的控制信号。3.2.3 总线控制为多个功能部件提供服务的信息通路的控制电路。3.2.4 中断控制用于控制各种中断请求并根据优先级排队逐个交给CPU处理。3.3 寄存器组分为专用寄存器、通用寄存器。运算器和控制器中的寄存器是专用寄存器作用是固定的。通用寄存器用途广泛由程序员规定其用途。4、什么是多核CPU内核CPU的核心称为内核是CPU的最重要组成部分。CPU的所有计算、接收/存储命令、处理数据都是由核心执行。多核在一个单芯片上集成两个或者更多个处理器内核并且每个内核都有自己的逻辑单元、控制单元、中端处理器、运算单元、一级Cache、二级Cache共享或独有。多核CPU优点可满足用户同时进行多任务处理等要求。CPU基础知识大全详解相关文章