CPU内核数是指操作系统中,在CPU处于 状态时,执行的程序

  处理器一般指中央处理器Φ央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理計算机软件中的数据

  中央处理器主要包括运算器(算术逻辑运算单元,ALUArithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件

  英文Processing instructions;这是指控制程序中指令嘚执行顺序。程序中的各指令之间是有严格顺序的必须严格按程序规定的顺序执行,才能保证计算机系统工作的正确性

  英文Perform an action;一條指令的功能往往是由计算机中的部件执行一系列的操作来实现的。CPU要根据指令的功能产生相应的操作控制信号,发给相应的部件从洏控制这些部件按指令的要求进行动作。

  英文Control time;时间控制就是对各种操作实施时间上的定时在一条指令的执行过程中,在什么时间莋什么操作均应受到严格的控制只有这样,计算机才能有条不紊地工作

  即对数据进行算术运算和逻辑运算,或进行其他的信息处悝

  其功能主要是解释计算机指令以及处理计算机软件中的数据, 并执行指令在微型计算机中又称微处理器,计算机的所有操作都受CPU控制CPU的性能指标直接决定了微机系统的性能指标。CPU具有以下4个方面的基本功能:数据通信资源共享,分布式处理提供系统可靠性。运作原理可基本分为四个阶段:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)

  CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器并对指令译码。它把指令分解成一系列的微操作然后发出各种控制命令,执行微操作系列从而完成一条指令的执行。指令是计算机规定执行操作的类型和操作数的基本命令指令是由一个字节或者多个字节组成,其中包括操作码字段、一个或多个有关操作数地址嘚字段以及一些表征机器状态的状态字以及特征码有的指令中也直接包含操作数本身。

  第一阶段提取,从存储器或高速缓冲存储器中检索指令(为数值或一系列数值)由程序计数器(Program Counter)指定存储器的位置。(程序计数器保存供识别程序位置的数值换言之,程序計数器记录了CPU在程序里的踪迹)

  CPU根据存储器提取到的指令来决定其执行行为。在解码阶段指令被拆解为有意义的片段。根据CPU的指囹集架构(ISA)定义将数值解译为指令一部分的指令数值为运算码(Opcode),其指示要进行哪些运算其它的数值通常供给指令必要的信息,諸如一个加法(Addition)运算的运算目标

  在提取和解码阶段之后,紧接着进入执行阶段该阶段中,连接到各种能够进行所需运算的CPU部件

  例如,要求一个加法运算算术逻辑单元(ALU,Arithmetic Logic Unit)将会连接到一组输入和一组输出输入提供了要相加的数值,而输出将含有总和的結果ALU内含电路系统,易于输出端完成简单的普通运算和逻辑运算(比如加法和位元运算)如果加法运算产生一个对该CPU处理而言过大的結果,在标志暂存器里可能会设置运算溢出(Arithmetic Overflow)标志

  最终阶段,写回以一定格式将执行阶段的结果简单的写回。运算结果经常被寫进CPU内部的暂存器以供随后指令快速存取。在其它案例中运算结果可能写进速度较慢,但容量较大且较便宜的主记忆体中某些类型嘚指令会操作程序计数器,而不直接产生结果这些一般称作“跳转”(Jumps),并在程式中带来循环行为、条件性执行(透过条件跳转)和函式许多指令会改变标志暂存器的状态位元。这些标志可用来影响程式行为缘由于它们时常显出各种运算结果。例如以一个“比较”指令判断两个值大小,根据比较结果在标志暂存器上设置一个数值这个标志可藉由随后跳转指令来决定程式动向。在执行指令并写回結果之后程序计数器值会递增,反覆整个过程下一个指令周期正常的提取下一个顺序指令。

  CPU内核数是操作系统最基本的部分它昰为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的并且CPU内核数决定一个程序在什么时候对某部分硬件操莋多长时间。CPU内核数的分类可分为单CPU内核数和双CPU内核数以及微CPU内核数严格地说,CPU内核数并不是计算机系统中必要的组成部分

  CPU内核數提供一种硬件抽象的方法来完成对硬件操作,因为这些操作是非常复杂的硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁统一的接口,使程序设计更为简单

  历史上,从来没有出现过用于LinuxCPU内核数的正式的源代码管理或修正控制系统实际上,很多开发鍺实现了他们自己的修正控制器但是并没有官方的LinuxCVS档案库,让LinusTorvalds检查加入代码并让其他人可以由此获得代码。修正控制器的缺乏常常會使发行版本之间存在“代沟”,没有人真正知道加入了哪些改变这些改变是否能很好地融合,或者在即将发行的版本中哪些新内容是徝得期待的通常,如果更多的开发者可以像了解他们自己所做的改变一样了解到那些变化某些问题就可以得到避免。

  非常有必要使用一个实时的、集中的档案库来保存对LinuxCPU内核数的最新更新每一个被CPU内核数接受的改变或者补丁都被作为一个改变集被追踪。终端用户囷开发者可以保存他们自己的源文件档案库并根据需要可以通过一个简单的命令用最新的改变集进行更新。对开发者来说这意味着可鉯始终使用最新的代码拷贝。测试人员可以使用这些逻辑的改变集合来确定哪些变化导致了问题的产生缩短调试所需要的时间。甚至那些希望使用最新CPU内核数的用户也可以直接利用实时的、集中的档案库因为一旦他们所需要的部件或缺陷修复加入到CPU内核数中,他们就可鉯马上进行更新当代码融合到CPU内核数时,任何用户都可以提供关于这些代码的即时反馈和缺陷报告

  随着LinuxCPU内核数的成长,变得更加複杂而且吸引更多开发者将注意 力集中到CPU内核数的特定方面的专门开发上来,出现了另一个开发Linux方法的有趣改变在2.3CPU内核数版本的开发期间,除了由LinusTorvalds发行的主要的一个CPU内核数树之外还有一些其他的CPU内核数树。

  在2.5的开发期间CPU内核数树出现了爆炸式的增长。由于使用源代码管理工具可以保持开发的同步并行进行这样就可能实现开发的部分并行化。为了让其他人在他们所做的改变被接受之前可以进行測试有一些开发需要并行化。那些保持自己的树的CPU内核数维护者致力于特定的组件和目标比如内存管理、NUMA部件、改进扩展性和用于特萣体系结构的代码,还有一些树收集并追踪对许多小缺陷的纠正

  这种并行开发模型的优点是,它使得需要进行重大改变的开发者戓者针对一个特定的目标进行大量类似改变的那些开发者可以自由地在一个受控环境中开发,而并不影响其他人所用CPU内核数的稳定性当開发者完成工作后,他们可以发布针对LinuxCPU内核数当前版本的补丁以实现到此为止他们所完成的改变。这样社区中的测试人员就可以方便哋测试这些改变并提供反馈。当每一部分都被证明是稳定的之后那些部分可以单独地,或者甚至同时全部地融合到主要LinuxCPU内核数中。

  新工具为CPU内核数提供了代码覆盖分析的功能覆盖分析表明,在一个给定的测试运行时CPU内核数中哪些行代码被执行。更重要的是覆蓋分析提示了CPU内核数的哪些部分还根本没有被测试到。这个数据是重要的因为它指出了需要再编写哪些新测试来测试CPU内核数的那些部分,以使CPU内核数可以得到更完备的测试

  在为将来的2.6LinuxCPU内核数进行开的过程中,除了这些自动化的信息管理方法之外开放源代码社区的鈈同成员还收集和追踪了数量惊人的信息。

  例如在KernelNewbies站点上创建了一个状态列表,来保持对已经提出的CPU内核数新部件的追踪这个列表包含了以状态排序的条目,如果它们已经完成了则说明它们已经包含在哪个CPU内核数中,如果还没有完成则指出还需要多长时间。列表上很多条目的链接指向大型项目的Web站点或者当条目较小时,链接指向一个解释相应部件的电子邮件信息的拷贝

  芯片,又称微电蕗(microcircuit)、微芯片(microchip)、集成电路(英语:integrated circuit IC)。是指内含集成电路的硅片体积很小,常常是计算机或其他电子设备的一部分

  1、芯爿的原料晶圆

  晶圆的成分是硅,硅是由石英沙所精练出来的晶圆便是硅元素加以纯化(99.999%),接着是将这些纯硅制成硅晶棒成为制慥集成电路的石英半导体的材料,将其切片就是芯片制作具体所需要的晶圆晶圆越薄,生产的成本越低但对工艺就要求的越高。

  晶圆涂膜能抵抗氧化以及耐温能力其材料为光阻的一种。

  3、晶圆光刻显影、蚀刻

  该过程使用了对紫外光敏感的化学物质即遇紫外光则变软。通过控制遮光物的位置可以得到芯片的外形在硅晶片涂上光致抗蚀剂,使得其遇紫外光就会溶解这时可以用上第一份遮光物,使得紫外光直射的部分被溶解这溶解部分接着可用溶剂将其冲走。这样剩下的部分就与遮光物的形状一样了而这效果正是我們所要的。这样就得到我们所需要的二氧化硅层

  将晶圆中植入离子,生成相应的P、N类半导体

  具体工艺是是从硅片上暴露的区域开始,放入化学离子混合液中这一工艺将改变搀杂区的导电方式,使每个晶体管可以通、断、或携带数据简单的芯片可以只用一层,但复杂的芯片通常有很多层这时候将这一流程不断的重复,不同层可通过开启窗口联接起来这一点类似多层PCB板的制作原理。 更为复雜的芯片可能需要多个二氧化硅层这时候通过重复光刻以及上面流程来实现,形成一个立体的结构

  经过上面的几道工艺之后,晶圓上就形成了一个个格状的晶粒通过针测的方式对每个晶粒进行电气特性检测。一般每个芯片的拥有的晶粒数量是庞大的组织一次针測试模式是非常复杂的过程,这要求了在生产的时候尽量是同等芯片规格构造的型号的大批量的生产数量越大相对成本就会越低,这也昰为什么主流芯片器件造价低的一个因素

  将制造完成晶圆固定,绑定引脚按照需求去制作成各种不同的封装形式,这就是同种芯爿CPU内核数可以有不同的封装形式的原因比如:DIP、QFP、PLCC、QFN等等。这里主要是由用户的应用习惯、应用环境、市场形式等外围因素来决定的

  经过上述工艺流程以后,芯片制作就已经全部完成了这一步骤是将芯片进行测试、剔除不良品,以及包装

  四、处理器,CPU内核數芯片三个概念的区别

  芯片是最大的统称,只要是包含了各种半导体元件的集成电路都是芯片

  处理器是芯片的一种,指可以執行程序的逻辑机器电脑里用的CPU其实名字是中央处理器,是处理器的一种其他还可以有诸如图像处理器,数字信号处理器等

  CPU内核数有多种概念,在计算机硬件方面的CPU内核数指处理器的内部核心包装在一个元件中的独立处理单元,称为core在计算机软件方面指操作系统最基本的部分,负责管理系统资源和提供对系统资源的访问称为kernel。芯片包含了CPU 但是工作方式不同 芯片代替不了CPU 因为CPU内部电路都是很哆晶体管组成

}

一 计算机基础总结 1 x86架构及基本术語 1 特权级别和用户指令级别

环 环0 特权区环3 用户指令级不发送调用,则直接在CPU 中运行如果涉及到调用,如果是CPU内核数的功能则需要转換为特权模式的功能,一旦发起系统调用调用执行别的函数或库,如果调用的是CPU内核数的功能则CPU需要转换为特权模式,在特权模式中執行的一定是CPU内核数的代码如果程序本身没有调用CPU内核数的操作,则程序在运行到需要调用CPU内核数的操作时需要通过程序给CPU内核数发送一个指令,通过在CPU内核数中运行指令并将结果返回到对应的程序中,这个程序将继续进行操作CPU内核数模式只是支撑用户模式来完成CPU內核数模式需要的操作的。

shell : 负责特权区和用户区之间的切换任何一个没有shell的操作系统,如果需要做一些特定的操作则不能成功

操作系统能否提升能力,通常需要看他是不是在用户空间占用了大量的空间如果一个程序的用户控件占用率很大而CPU内核数空间占用率较小则表明其程序的设计并没有产生很大的效率。CPU内核数模式本身并不产生能力

操作系统完成基本功能的需要

上下文切换:进程之间的切换保存現场: 用于在切换时将被切换进程的信息保存在内存的情况线程: 将串行执行流修改成并行执行流此称为线程


南桥:内存和CPU 之间的链接昰通过南桥芯片实现的北桥:北桥芯片负责的是和IO之间的链接


程序局部性原理:1 空间局部性: 一个数据被访问后,其临近的数据也会很快被访问到2 时间局部性: 当执行完某个指令后有可能很快后又会调用该指令


1 设备控制器: 集成在主板上的一块芯片或一组芯片,负责控制對应设备通过从操作系统获取指令并执行相应的操作,将操作转换成对应的操作寄存器: 被集成在控制器内部的

IO地址空间:所有的控制器的寄存器加起来成为这个设备的IO地址空间也叫IO端口空间

1 真空管:穿孔卡片2 晶体管:此时出现了批处理系统,主机的个头较大在某一时刻,只能运行一个实例批处理: 一次上传多个,一次处理一个

3 集成电路芯片 多道处理程序的运行起始到结束通过监控实现,监控程序负責在系统上运行多个程序此时便产生了进程,多道处理:相当于进程分时系统

3 操作系统基本体系:

1 各设备之间连接需要总线,总线早期不是系统发展的瓶颈星型结构需要CPU的大量工作,因此不适用于发展计算机的总线:地址总线:数据寻址数据总线:数据传输控制总线

從内存中取出指令并运行它需要经过四个步骤:1 取出指令2 解码指令3 确定类型4 执行指令

1 取址单元2 解码单元3 执行单元三个功能可以通过一个芯爿来完成

CPU的寄存器 :每完成一个指令会记录其配置控制芯片和存储芯片,其周期和CPU的周期相同这些被成为CPU的寄存器


上下文切换:操作系统必须清楚的了解每一个寄存器,在多进程中操作系统通常会挂起某一个进程转而运行其他的进程。这叫上下文切换将其进程挂起時,状态将会被记录需要将进程中的各种数字,计数器等必须进行保存这个称谓保存现场。保存和恢复需要时间其保存在内存中。


複用技术 : 如果进程很多的情况下每一个进程切换则会浪费很多时间,nginx可以做到进程的不切换和进程的复用技术


进程的绑定: 将某一进程与CPU 之间的绑定如此可以成为CPU 的调优

1 进程不切换,实现复用(nginx) 2 进程与CPU 绑定 3 提高缓存命中率的方式,将一个进程绑定到一个核心上是为叻提高缓存命中率

1 进行三个取值单元,解码单元和执行单元的三级流水同一时刻,每个单元都不能闲着

2 多核心超线程(多线程)一颗CPU 茬两个不同线程之间进行切换,在CPU内部引入一个类似的寄存器一个CPU 在同一时刻执行两个程序早期CPU 的频率是依靠其工作频率来实现的时钟茬一秒内完成的操作个数 一个进程的执行通常只能用到一个CPU将串行执行流修改成并行执行流,称为线程


并行问题:同时执行能否同时结束线程之间协调不明确问题


对每一个线程的调度仍然是进程级别的

CPU 和内存之间的协调

内存的工作频率小于CPU,但会越来越好内存和CPU 之间的链接是通过南桥芯片实现的北桥芯片负责的是和IO之间的链接

通过一定的限制来实现CPU 和内存之间的协调

缓存的目的: 空间换区资源

一级缓存囷二级缓存是专用的

程序局部性原理 :1 空间局部性: 一个数据被访问后,和其内存位置近的数据也会被很快访问到

2 时间局部性: 当指令執行完成后,很快可能会被再次访问到


CPU 的速度一定比内存快 通过加缓存来实现(三级----二级-----一级)一级缓存和二级缓存是专用的,三级缓存是共享的CPU 的性能需要看一级和二级缓存的大小

1 设备控制器: 集成在主板上的一块芯片或一组芯片负责控制对应设备,通过从操作系统獲取指令并执行相应的操作将操作转换成对应的操作2 设备本身

其指令执行步骤: 操作系统----驱动----设备本身IDE 集成驱动电子设备真正的硬件操莋是由驱动完成的,此驱动程序应该由设备生产厂商研制驱动程序通常位于CPU内核数中每一个控制器都有少量的用于实现通信的寄存器,此时被集成在控制器内部的

IO端口空间每个控制器都有由少量的专门用于通信的寄存器如一个硬盘控制器可能有用于指定硬盘地址和内存哋址的寄存器,还有扇区技术方向(读写)等相关的寄存器。任何时候要激活一个控制器需要驱动程序从操作系统中接受指令然后将其转换成对应设备的基本操作并把操作请求放置到寄存器中,所有的控制器的寄存器加起来成为这个设备的IO地址空间也叫IO端口空间,每個寄存器表现为一个I/O端口

IO 端口被编址(16位),每一个IO端口都有一个独立的编址多个寄存器则需要有多个编址。一个控制器可能有多个端口及多个寄存器不同主板上的设备控制器不同,没办法事先进行固定需要动态指制定,当设备开机时每一个IO设备都要向IO空间注册哋址端口空间16位二进制 0-65535 CPU 和指定的IO进行通信,需要通过其IO端口来实现 对于某些众所周知的设备则使用一些特定的端口

3 实现输入输出的三种方式: 1 忙等待

用户程序发起一个系统调用,CPU内核数将其翻译成为一个对应设备驱动的过程调用设备驱动程序启动IO并在一个连续不断的循環中检测设备,来看是否执行完成(忙等待)缺点: 性能不好轮训机制,在固定的时钟周期内查询其是否需要执行的操作

IO 设备主动发送通知这种方式成为中断能够中断CPU执行的操作,来通知CPU内核数执行响应的请求中断控制器发送中断信号每一个IO设备要从中断控制器中获取一个中断向量

中断切换: CPU进行中断切换来指定IO 设备的相关操作,CPU触发CPU内核数CPU内核数将相关的进程挂起并自己运行在CPU上来根据发出请求嘚IO设备来获取数据或其中断请求


中断分为两步:1 中断的上半部:只是将中断请求处理,并去读到CPU内核数缓冲区中2 中断下半部:处理相关的數据

上半部通常要立即处理但下半部则不一定

缺点: 当一个jar包到达时,其会被分解为成千上万的报文则如果每一个报文触发构建一次,则会非常耗时则意味着CPU的繁忙程度会成倍增加

直接内存访问 IO设备上带的具有智能性的控制芯片,当需要发生中断时CPU会通知对应的DMA,告诉DMA接下来的总线归你使用如此便完成了其复制的操作,DMA仅负责接入和接出CPU 通知CPU内核数读取完成

DMA CPU内核数中的存储空间,查看其目标IP洳果是自己的,则进行拆包

网卡,硬盘等都有DMA

CPU 被抽象成程序线

3 多个IO设备IO 设备的标识(寄存器) IO 端口


优化: 网卡设备的缓冲区可以进行適当的调整


网卡中断网卡触发中断,并将相关的数据包放置进入缓冲区并进行触发CPU内核数操作并将网卡缓冲区的数据复制到CPU内核数缓冲區中,CPU内核数中的存储空间查看其目标IP,如果是自己的则进行拆包。

6 进程相关 1 术语

MMU : 用于转换线性地址和物理地址的桥梁TLB : 用于缓存線性地址和物理地址的映射其线性地址和物理地址的映射关系保存在CPU内核数内存中RAM : 随机存储器ROM : 只读存储器


默认的内存页大小是4K在操作系统中被最基本的抽象出来的东西:CPU 被抽象成时间线而后将程序分配为进程而后通过时间线将程序运行起来的过程程序被抽象成进程,CPU 被抽象成时间线


早期的操作系统的组织方式:内存的地址空间1 操作系统位于内存中, 但进程整个是RAM(随机存储器是与CPU直接交换的数据的内蔀存储器) 内存空间和用户空间

用户程序运行在RAM中,操作系统运行在ROM(只读存储器是一种只能读出事先所存储的固态半导体存储器)中

CPU 訪问内存空间,需要读取内存对应的地址程序知道自己运行的地址 变量命名时的内存空间,所以根据变量名就可以获取内存地址空间CPU 有┅个寻址单元CPU 地址总线,数据总线 控制总监 32 位 2^32=4G字节CPU 64 为则是64个字节4G的4G 4G^4G 则是一个海量空间OS 中最重要的部分就是驱动程序

多个应用程序产生嘚问题

内存的使用通过虚拟地址空间实现的IO:磁盘IO在CPU内核数中表现为文件的形式,我们的存储才会方便

资源集CPU 时间 内存: 地址空间被抽潒成虚拟存储空间(32bit:4G) 在Linux中,CPU内核数固定使用特定的内存而进程则使用其他的内存,线性地址空间进程都有自己独立的内存空间IO 文件鍵盘鼠标都属于文件,不过都是设备文件文件分类:1 一般文件 正常文件2 设备文件 块设备 字符设备3 管道文件 进行相关交互时使用打开了多个攵件在进程内部每个文件都有自己的文件标号 FD(file descriptor)输入0 标准输出1 错误输出2 一个主机如果是多进程的,则需要标识其自己的资源集(task struct) CPU內核数为每个进程维护数据结构,内存空间

CPU内核数为了追踪进程的状态会在自己的CPU内核数的内存空间中建立一个连接,保存了进程的ID咑开文件量,内存的使用量每一个进程需要保存程序计数器

每一个程序的执行只会加载目前所需要的环境并不是加载所有环境,用户空間的内存内存将其切割成一个固定大小的存储单元,通常是4K一个存储单元每个叶匡都有其编号(page frame) 4G 有1M 的叶匡

每一个进程的启动都会认為自己有3G内存可用,但3G并没有完全占用只是占用了少量

地址空间: 代码段,初始化为0的数据段离散的随机空间,堆 没有被使用被映射进来的共享内存库。栈代码段----数据段-----堆------栈 对进程来讲内存的最小单元是页面,对内存来讲称之为叶匡进程认为内存是一起的,但在CPU內核数端存储是离散的当进程真的需要使用内存空间时需要从申请对应的空间并由CPU内核数进程调用,并返回相对应的空间其是一个一個的存储每一个进程的线程地址空间和内存地址空间之间是有转换的当某一个进程需要在CPU 上执行时,需要读取响应的资源:CPU 会从屋里地址涳间取出数据但进程给的是线性内存空间,其线性地址和物理地址的映射关系保存在CPU内核数内存空间的映射表中CPU需要完成从线性地址箌物理地址的转换过程其映射不是直接映射,而是使用多级映射如果使用一对一的映射,则其映射空间是巨大的

MMU: 当进程切换时MMU 需要切换,需要从各种状态字和相关的映射关系MMU 完成的是物理寻找页表映射

在MMU 之前加入缓存,当程序发出一个地址之后会先在缓存中查看其的映射关系,然后再进行操作否则在MMU中查找,缓存空间通常都不大使用大内存页的原因是使其访问速度更快TLB 转换后的缓冲器在进程中嘚切换中MMU 是要被清空的TLB 的转化结果不会发生改变

早期 虚拟设备的进程需要经过两次MMU 的转换, 线性地址空间---主机地址----物理地址现在的CPU已经囿两级MMU 完成早期通过模拟的方式完成的

1 进程优化 进行进程和CPU 的绑定2 内存优化 TLB 使用大内存页,尽量使用本地内存页的分配回收,内存同步的算法网络优化和IO优化最终都要转化为内存优化

优化的是机制的本身不是机制的结果

硬盘的读写操作:一般是取得读操作,读要优先滿足写是缓冲的,I/O调度变慢

两个缓冲器的调整和I/O算法的调整 磁盘的I/O队列调度器

}

我要回帖

更多关于 CPU内核 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信