精华内容
下载资源
问答
  • 内核和cpu的关系
    千次阅读
    2020-03-12 10:39:48

    一个CPU可以有多个内核,内核就是真正的物理核心,而往往处理器会使用超线程技术,其将每个内核又可以分为两个线程,而线程技术就是在单个内核基础上提供两个逻辑处理器,利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,所以两个物理核心就是四个线程,也就形成了四个逻辑处理器。现在一般说多少核一般都是指有多少逻辑处理器。

    参考文章:cpu,内核和逻辑处理器的关系区分请教

    更多相关内容
  • 服务器CPU主频和内核数量及性能之间关系的探讨.doc
  • 内核态线程,进程和CPU

    千次阅读 2020-12-15 15:16:38
    用户态和内核态的概念 ...由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 :用户态 内核态 进程的堆栈 每个进程都有自己的

    用户态和内核态的概念

    —>内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序
    —>用户态: 只能受限的访问内存, 且不允许访问外围设备. 线程占用CPU的能力被剥夺, CPU资源可以被其他程序获取

    为什么需要用户态和内核态?
    —>由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 :用户态 和 内核态

    进程的堆栈

    每个进程都有自己的堆栈,内核在创建一个新的进程时,在创建进程控制块task_struct的同时(在创建一个新进程时,系统在内存中申请一个空的task_struct区,即空闲PCB块,并填入所需信息。同时将指向该结构的指针填入到task[]数组中。当前处于运行状态进程的PCB用指针数组current_set[]来指出。这是因为Linux支持多处理机系统,系统内可能存在多个同时运行的进程,故current_set定义成指针数组),也为进程创建自己堆栈。一个进程有2个堆栈,用户堆栈和内核堆栈;用户堆栈的空间指向用户地址空间,内核堆栈的空间指向内核地址空间。当进程在用户态运行时,CPU堆栈指针寄存器指向的用户堆栈地址,使用用户堆栈,当进程运行在内核态时,CPU堆栈指针寄存器指向的是内核栈空间地址,使用的是内核栈;每当进程调用一次函数,都会在用户栈中为该函数分配一个栈帧(stack frame),也称为调用栈(call stack),当该函数返回时又会释放该栈帧。释放的栈帧不会从虚拟内存中移除,它可以被之后调用的函数重新使用,所以栈空间的大小是不会减小的。从用户态到内核态首先是将用户堆栈地址保存到内核堆栈中,然后将CPU堆栈指针寄存器指向内核堆栈。当由内核态转向用户态,步骤首先是将内核堆栈中得用户堆栈地址恢复到CPU堆栈指针寄存器中。

    为何要设置两个不同的栈?

    共享原因:

    内核的代码和数据是为所有的进程共享的,如果不为每一个进程设置对应的内核栈,那么就不能实现不同的进程执行不同的代码。

    安全原因:

    如果只有一个栈,那么用户就可以修改栈内容来突破内核安全保护。

    用户态与内核态的切换

    所有用户程序都是运行在用户态的, 但是有时候程序确实需要做一些内核态的事情, 例如从硬盘读取数据, 或者从键盘获取输入等. 而唯一可以做这些事情的就是操作系统, 所以此时程序就需要先操作系统请求以程序的名义来执行这些操作.

    这时需要一个这样的机制: 用户态程序切换到内核态, 但是不能控制在内核态中执行的指令

    这种机制叫系统调用, 在CPU中的实现称之为陷阱指令(Trap Instruction)

    他们的工作流程如下:

    用户态程序将一些数据值放在寄存器中, 或者使用参数创建一个堆栈(stack frame), 以此表明需要操作系统提供的服务.
    用户态程序执行陷阱指令
    CPU切换到内核态, 并跳到位于内存指定位置的指令, 这些指令是操作系统的一部分, 他们具有内存保护, 不可被用户态程序访问
    这些指令称之为陷阱(trap)或者系统调用处理器(system call handler). 他们会读取程序放入内存的数据参数, 并执行程序请求的服务
    系统调用完成后, 操作系统会重置CPU为用户态并返回系统调用的结果

    二:用户态和内核态的详细介绍?
    当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核 代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行 态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程 的内核态。因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有些类似。

    内核态与用户态是操作系统的两种运行级别, 跟intel cpu没有必然的联系, intel cpu提供Ring0-Ring3三种级别的运行模式,Ring0级别最高,Ring3最低。Linux使用了Ring3级别运行用户态,Ring0作为 内核态,没有使用Ring1和Ring2。Ring3状态不能访问Ring0的地址空间,包括代码和数据。Linux进程的4GB地址空间,3G-4G部 分大家是共享的,是内核态的地址空间,这里存放在整个内核的代码和所有的内核模块,以及内核所维护的数据。用户运行一个程序,该程序所创建的进程开始是运 行在用户态的,如果要执行文件操作,网络数据发送等操作,必须通过write,send等系统调用,这些系统调用会调用内核中的代码来完成操作,这时,必 须切换到Ring0,然后进入3GB-4GB中的内核地址空间去执行这些代码完成操作,完成后,切换回Ring3,回到用户态。这样,用户态的程序就不能 随意操作内核地址空间,具有一定的安全保护作用。
    至于说保护模式,是说通过内存页表操作等机制,保证进程间的地址空间不会互相冲突,一个进程的操作不会修改另一个进程的地址空间中的数据。

    内核态和用户态例子

    1)例子

    void testfork(){
    if(0 = = fork()){
    printf(“create new process success!\n”);
    }
    printf(“testfork ok\n”);
    }

    这段代码很简单,从功能的角度来看,就是实际执行了一个fork(),生成一个 新的进程,从逻辑的角度看,就是判断了如果fork()返回的是0则打印相关语句,然后函数最后再打印一句表示执行完整个testfork()函数。代码 的执行逻辑和功能上看就是如此简单,一共四行代码,从上到下一句一句执行而已,完全看不出来哪里有体现出用户态和进程态的概念。

    如果说前面两种是静态观察的角度看的话,我们还可以从动态的角度来看这段代码,即它被转换成CPU执行的指令后加载执行的过程,这时这段程序就是一个动态执行的指令序列。而究竟加载了哪些代码,如何加载就是和操作系统密切相关了。

    2)特权级

    熟悉Unix/Linux系统的人都知道,fork的工作实际上是以系统调用的 方式完成相应功能的,具体的工作是由sys_fork负责实施。其实无论是不是Unix或者Linux,对于任何操作系统来说,创建一个新的进程都是属于 核心功能,因为它要做很多底层细致地工作,消耗系统的物理资源,比如分配物理内存,从父进程拷贝相关信息,拷贝设置页目录页表等等,这些显然不能随便让哪 个程序就能去做,于是就自然引出特权级别的概念,显然,最关键性的权力必须由高特权级的程序来执行,这样才可以做到集中管理,减少有限资源的访问和使用冲 突。

    特权级显然是非常有效的管理和控制程序执行的手段,因此在硬件上对特权级做了很 多支持,就Intel x86架构的CPU来说一共有0~3四个特权级,0级最高,3级最低,硬件上在执行每条指令时都会对指令所具有的特权级做相应的检查,相关的概念有 CPL、DPL和RPL,这里不再过多阐述。硬件已经提供了一套特权级使用的相关机制,软件自然就是好好利用的问题,这属于操作系统要做的事情,对于 Unix/Linux来说,只使用了0级特权级和3级特权级。也就是说在Unix/Linux系统中,一条工作在0级特权级的指令具有了CPU能提供的最 高权力,而一条工作在3级特权级的指令具有CPU提供的最低或者说最基本权力。

    3)用户态和内核态

    现在我们从特权级的调度来理解用户态和内核态就比较好理解了,当程序运行在3级 特权级上时,就可以称之为运行在用户态,因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态;反之,当程序运 行在0级特权级上时,就可以称之为运行在内核态。

    虽然用户态下和内核态下工作的程序有很多差别,但最重要的差别就在于特权级的不 同,即权力的不同。运行在用户态下的程序不能直接访问操作系统内核数据结构和程序,比如上面例子中的testfork()就不能直接调用 sys_fork(),因为前者是工作在用户态,属于用户态程序,而sys_fork()是工作在内核态,属于内核态程序。

    当我们在系统中执行一个程序时,大部分时间是运行在用户态下的,在其需要操作系 统帮助完成某些它没有权力和能力完成的工作时就会切换到内核态,比如testfork()最初运行在用户态进程下,当它调用fork()最终触发 sys_fork()的执行时,就切换到了内核态。

    用户态切换到内核态的3种方式

    a. 系统调用

    这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使 用操作系统提供的服务程序完成工作,比如前例中fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户 特别开放的一个中断来实现,例如Linux的int 80h中断。

    b. 异常

    当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。

    c. 外围设备的中断

    当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会 暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到 内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。

    这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。

    具体的切换操作

    从触发方式上看,可以认为存在前述3种不同的类型,但是从最终实际完成由用户态 到内核态的切换操作上来说,涉及的关键步骤是完全一致的,没有任何区别,都相当于执行了一个中断响应的过程,因为系统调用实际上最终是中断机制实现的,而 异常和中断的处理机制基本上也是一致的,关于它们的具体区别这里不再赘述。关于中断处理机制的细节和步骤这里也不做过多分析,涉及到由用户态切换到内核态 的步骤主要包括:

    [1] 从当前进程的描述符中提取其内核栈的ss0及esp0信息。

    [2] 使用ss0和esp0指向的内核栈将当前进程的cs,eip,eflags,ss,esp信息保存起来,这个

    过程也完成了由用户栈到内核栈的切换过程,同时保存了被暂停执行的程序的下一

    条指令。

    [3] 将先前由中断向量检索得到的中断处理程序的cs,eip信息装入相应的寄存器,开始

    执行中断处理程序,这时就转到了内核态的程序执行了。

    用户进程缓存区

    前面提到,用户进程通过系统调用访问系统资源的时候,需要切换到内核态,而这对应一些特殊的堆栈和内存环境,必须在系统调用前建立好。而在系统调用结束后,cpu会从核心模式切回到用户模式,而堆栈又必须恢复成用户进程的上下文。而这种切换就会有大量的耗时。

    你看一些程序在读取文件时,会先申请一块内存数组,称为buffer,然后每次调用read,读取设定字节长度的数据,写入buffer。(用较小的次数填满buffer)。之后的程序都是从buffer中获取数据,当buffer使用完后,在进行下一次调用,填充buffer。所以说:用户缓冲区的目的是为了减少系统调用次数,从而降低操作系统在用户态与核心态切换所耗费的时间。除了在进程中设计缓冲区,内核也有自己的缓冲区。

    内核缓存区

    当一个用户进程要从磁盘读取数据时,内核一般不直接读磁盘,而是将内核缓冲区中的数据复制到进程缓冲区中。

    但若是内核缓冲区中没有数据,内核会把对数据块的请求,加入到请求队列,然后把进程挂起,为其它进程提供服务。

    等到数据已经读取到内核缓冲区时,把内核缓冲区中的数据读取到用户进程中,才会通知进程,当然不同的io模型,在调度和使用内核缓冲区的方式上有所不同,下一小结介绍。

    你可以认为,read是把数据从内核缓冲区复制到进程缓冲区。write是把进程缓冲区复制到内核缓冲区。当然,write并不一定导致内核的写动作,比如os可能会把内核缓冲区的数据积累到一定量后,再一次写入。这也就是为什么断电有时会导致数据丢失。所以说内核缓冲区,是为了在OS级别,提高磁盘IO效率,优化磁盘写操作。

    流程

    假如有一个网络请求想访问服务器上的某个静态文件,在DMA方式下(DMA即直接存储器访问,可以看作CPU的一个辅助硬件访问的芯片,在进行内存与IO设备数据传输时,不需要CPU来控制,直接通过DMA进行。)我们来看一下在这个示例中服务器的具体IO流程。
    注:如果不是dma方式,那么传输数据就由cpu亲自完成

    整个过程如下:
    在这里插入图片描述

    1、进程发起一个系统调用sys_read,读取磁盘的文件;
    2、DMA将磁盘文件数据拷贝到内核空间的read缓冲区;
    3、CPU把内核空间read缓冲区数据拷贝到用户空间的缓冲区;

    相反写数据:
    4、进程发起一个系统调用socket_write,向网卡写数据;
    5、CPU把用户空间缓冲区的数据拷贝到内核空间的socket缓冲区;
    6、最后DMA把内核空间的socket缓冲区数据拷贝到网卡;

    在这里插入图片描述
    在这里插入图片描述

    协程:

    协程不是被操作系统内核所管理的,而是完全由程序所控制,也就是在用户态执行。这样带来的好处是性能大幅度的提升,因为不会像线程切换那样消耗资源。

    协程不是进程也不是线程,而是一个特殊的函数,这个函数可以在某个地方挂起,并且可以重新在挂起处外继续运行。所以说,协程与进程、线程相比并不是一个维度的概念。

    一个进程可以包含多个线程,一个线程也可以包含多个协程。简单来说,一个线程内可以由多个这样的特殊函数在运行,但是有一点必须明确的是,一个线程的多个协程的运行是串行的。如果是多核CPU,多个进程或一个进程内的多个线程是可以并行运行的,但是一个线程内协程却绝对是串行的,无论CPU有多少个核。毕竟协程虽然是一个特殊的函数,但仍然是一个函数。一个线程内可以运行多个函数,但这些函数都是串行运行的。当一个协程运行时,其它协程必须挂起。

    多核CPU、多CPU与多进程、多线程关系

    在这里插入图片描述

    CPU的运行原理就是:控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指令读到指令寄存器进行译码。对于执行指令过程中所需要用到的数据,会将数据地址也送到地址总线,然后CPU把数据读到CPU的内部存储单元(就是内部寄存器)暂存起来,最后命令运算单元对数据进行处理加工。周而复始,一直这样执行下去。

    多核cpu和多cpu架构

    多个物理CPU,CPU通过总线进行通信,效率比较低
    在这里插入图片描述

    多核CPU,不同的核通过L2 cache进行通信,存储和外设通过总线与CPU通信
    在这里插入图片描述
    CPU缓存是位于CPU与内存之间的临时数据交换器,它的容量比内存小的多但是交换速度却比内存要快得多。CPU缓存一般直接跟CPU芯片集成或位于主板总线互连的独立芯片上。
    在这里插入图片描述
    随着多核CPU的发展,CPU缓存通常分成了三个级别:L1,L2,L3。级别越小越接近CPU,所以速度也更快,同时也代表着容量越小。L1 是最接近CPU的, 它容量最小(例如:32K),速度最快,每个核上都有一个 L1 缓存,L1 缓存每个核上其实有两个 L1 缓存, 一个用于存数据的 L1d Cache(Data Cache),一个用于存指令的 L1i Cache(Instruction Cache)。L2 缓存 更大一些(例如:256K),速度要慢一些, 一般情况下每个核上都有一个独立的L2 缓存; L3 缓存是三级缓存中最大的一级(例如3MB),同时也是最慢的一级, 在同一个CPU插槽之间的核共享一个 L3 缓存。

    读取数据过程。就像数据库缓存一样,首先在最快的缓存中找数据,如果缓存没有命中(Cache miss) 则往下一级找, 直到三级缓存都找不到时,向内存要数据。一次次地未命中,代表取数据消耗的时间越长。

    计算过程。程序以及数据被加载到主内存;指令和数据被加载到CPU的高速缓;CPU执行指令,把结果写到高速缓存;高速缓存中的数据写回主内存

    多核、多CPU与多线程、多进程的对应关系
    多cpu的运行,对应进程的运行状态;多核cpu的运行,对应线程的运行状态。

    操作系统会拆分CPU为一段段时间的运行片,轮流分配给不同的程序。对于多cpu,多个进程可以并行在多个cpu中计算,当然也会存在进程切换;对于单cpu,多个进程在这个单cpu中是并发运行,根据时间片读取上下文+执行程序+保存上下文。同一个进程同一时间段只能在一个cpu中运行,如果进程数小于cpu数,那么未使用的cpu将会空闲。

    进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
    对于多核cpu,进程中的多线程并行执行,执行过程中存在线程切换,线程切换开销较小。对于单核cpu,多线程在单cpu中并发执行,根据时间片切换线程。同一个线程同一时间段只能在一个cpu内核中运行,如果线程数小于cpu内核数,那么将有多余的内核空闲。

    展开全文
  •  ARM内核如:ARM7、ARM9、ARM11(v6)、到cortex-A7、A8、A9、A12、A15(v7-A/R)、到cortex-A53、A57(V8)、A72、A73  soc芯片如:高通(Qualcomm)的骁龙(Snapdragon)820、821,麒麟950(4XCortex-A7

           指令集架构如:ARMv5、ARMv6、ARMv7-A/R、ARMv8-A [28]

           ARM内核如:ARM7、ARM9、ARM11(v6)、到cortex-A7、A8、A9、A12、A15(v7-A/R)、到cortex-A53、A57(V8)、A72、A73。缓存(cache)就是在内核中的[4]。这些内核又名公版架构,即ARM推出的通用的架构。

           SoC芯片如:高通(Qualcomm)的骁龙(Snapdragon)820、821,835;麒麟950(4XCortex-A72+4XCortex-A53)、960(4*Cortex-A73+4*Cortex-A53);联发科的HelioX20、X25、X30;三星的Exynos8890、7420、5433等。还有如STM32(基于ARM cortex M3内核)

           再次,现在我们口中所说的处理器,已经不是过去那种单指cpu的年代了,确切的说应该是指SoC。SoC(System on Chip): 称为系统级芯片,也称为片上系统,意指它是一个产品,是一个有专有目标的集成电路,其中包含完整系统并嵌入软件的全部内容。官方定义为将微处理器、模拟IP核、数字IP核和存储器(或者片外存储接口)集成在单一芯片上。——简单的比喻一下,如果把CPU看成人体的大脑,那么SoC就是我们人的身体总成(还要包括各种器官、组织)。即GPU、总线、显示加速器、ISP、视频编解码器、音频处理器、Memory控制器、传感器处理单元,以及DDR、Flash、显示接口、Camera接口、射频RF、USB等对外接口。要把这些元器件集成在一起,构成一个整体。而且还要保证各个元器件之间能够协调、稳定的运行,这样的设计技术所投入的研发费用并不是每个厂商能够接受的[2]。

           ARM公司本身并不参与终端处理器芯片的制造和销售,而是通过向其它芯片厂商授权设计方案,来获取收益。——举个例子,如果处理器相当于一栋完整的建筑, ARM就像是建筑的框架,至于最后建造出来的房子长什么样,舒适度如何,就是由处理器厂商自己决定了。但是采用相同架构的处理器,性能基本上已经锁定在一定的范围之内,不会有本质的区别。所以,看处理器的性能要先看微架构[3]。

           ARM公司提供两类CPU授权:核心指令集授权,以及现成的CPU内核设计方案授权[2][3]。业内多数手机处理器厂商选择直接购买ARM CPU内核设计方案,然后与其它组件(比如GPU、多媒体处理、调制解调器等等)整合,制造出完整的SoC片上系统。这些现成的CPU都是基于ARM Cortex A5、A8、A9,甚至A15微架构的。或是基于现有的架构进行二次定制修改的,比如三星的蜂鸟Hummingbird核心等都是在Cortex-A8的基础上修改的。2011年,三星正式推出Exynos4 Dual 4210芯片(Dual代表双核)和对应的新旗舰手机Galaxy SII,同时也将“蜂鸟”改名为Exynos3 Single 3110(single代表单核),这正是之后Exynos家族的开端。2016年第一季度,三星发布了Exynos8 Octa 8890(Octa代表8核),它有一个非常重大的意义在于——这是三星第一款拥有自研架构的ARM芯片[22]。注意,经过我的调研,所谓的自研架构,也可以称为自研微架构,其实就是自己研究出来类似于cortex-A53,A73等类似的这些公版的核,也称为公版微架构。

           但也有少数手机处理器厂商,如高通,直接在ARM v7指令集的基础上深度开发自己的处理器微架构,如高通公司的Scorpion和Krait,进而设计自主的CPU,具有更大的灵活性。Scorpion和Krait的角色就和cortex A53和cortex A57的角色类似和ARMv7、v8的角色类似[6]。Scorpion(蝎子)是高通根据Cortex-A8修改的,关键的特点是同频下更加节能约30%左右,现在的骁龙820以及835采用的是Kryo架构[27],其中820是Kryo,835是其升级版Kryo280。

           题外话:华为早在2013年已经取得了ARM的架构授权,即华为可以对ARM原有架构进行改造和对指令集进行扩展或缩减。从2013年至今华为麒麟处理器已经从910更新到960。依照华为公司对技术的执着和对未知领域探索的热情。他们没有理由不对ARM原有架构进行改造和优化,加入自身对架构的独特理解。也就是说,在华为麒麟处理器中所使用的A53+A72架构中已经拥有自己的技术和创新(这种创新就类似于原来三星蜂鸟对Coretex-A8的那种小小的改动)。其实,苹果处理器所采用的的架构也是从ARM架构上演变来的。所以,华为麒麟处理器以后肯定会出自己的架构,不过这需要长时间的研制和技术的积累。即:推出类似于高通的Scorpion、Krait、Kryo、三星的Mongoose,苹果的Swift(基于ARMv7)、Cyclone、TYphoon、Twister,英伟达的Denver这些东西。

           下面是几款SoC的图形:


    下面是两款ARM公版(ARM内核)——Cortex-A73和Cortex-A15的结构:

    [10]

    [11]



    参考:

    [1] 骁龙835、麒麟960、苹果A10!到底谁才是强者!

    [2] 一图看懂海思处理器发展史,华为自家构架还有多少路要走?

    [3] 高通和ARM的关系

    [4] ARM的发展历程

    [5] ARMv8架构的cortexA57、cortexA53

    [6] ARM Cortex A8、A9以及高通Scorpion处理器详解

    [7] ARM内核全解析,从ARM7,ARM9到Cortex-A7,A8,A9,A12,A15到Cortex-A53,A57


    介绍苹果、高通、三星、华为的芯片设计之路,也就是高通和苹果在自己的自主架构上走的比较远,华为的自主架构的道路还任重而道远啊

    [8] 公版ARM架构是王道 自主CPU没一点用?

    [9] 不满足ARM公版 市面上有哪些自主架构SoC?


    解读ARM的公版结构+图形模块表示

    [10] 全面解读ARM Cortex-A73架构,号称面积最小核心果然不是盖的

    [11] Cortex-A15 简单介绍

    [12] 性能暴增30%还省电!ARM Cortex-A73架构解读


    手机开发板上面常见芯片介绍(现在一般ram和处理器集成在一起(但是这种集成都是为了减少主板体积将ram的引脚做到CPU的正面,因为毕竟CPU和内存之间的引脚是比较多的。也就是说CPU两面都是焊盘,说白了只是两个独立封装的芯片叠焊在一起,就是所谓的 pop [21]),rom一个单独的芯片,电源管理芯片也是单独的一个芯片)

    [13] 从手机到开发板,无处不在的Qualcomm——DragonBoard 410C开发板评测,——附图开发板上面主要芯片介绍

    [14] 高通cpu型号前面的MSM、QSD、APQ分别代表什么意思?

    [15] 高通证实MSM8998就是骁龙835

    [16] 小米6拆机——主板上各芯片介绍(骁龙835)

    [17] 小米4c拆机——主板上各芯片介绍(骁龙808)

    [18] 小米6拆机视频高清

    [19] Hikey开发板外形及各芯片介绍(Kirin620

    [20] 简评海思Kirin620

    [21] 怪不得高通CPU的手机占用运行内存这么高、图形处理能力这么强,原来高通芯片的显示内存是建立在运行内存上的


    [22] 手机网络类型CDMA、GSM、WCDMA是什么意思?

    [23] 脚踏实地的“蜂鸟”到”盖乐世“:三星移动处理器历代记

    [24] 轻松读懂移动处理器 CPU微架构全解析


    [25] 苹果A11与A10相比提升了多少?苹果A11处理器参数详解

    [26] 详解苹果Face ID,将让深度摄像头成主流


    [27] 哪里不一样:骁龙835相比骁龙820升级在了哪

    [28] 一篇文章读懂ARM指令集架构(附ARM授权使用方及相关产品目录)



    展开全文
  • 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接本声明。 本文链接:https://blog.csdn.net/qq_38998213/article/details/86297380

    概念:
    1.处理机包括

    中央处理器,主存储器,输入-输出接口,加接外围设备就构成完整的计算机系统。

    处理机是处理计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件。
    程序是描述处理机完成某项任务的指令序列。
    指令则是处理机能直接解释、执行的信息单位。
    2.中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,

    是一台计算机的运算核心(Core)和控制核心( Control Unit)。

    它的功能主要是解释计算机指令以及处理计算机软件中的数据。

    CPU的根本任务就是执行指令,对计算机来说最终都是一串由“0”和“1”组成的序列。

    CPU从逻辑上可以划分成3个模块,分别是控制单元、运算单元和存储单元,这三部分由CPU内部总线连接起来
    在这里插入图片描述

    3.内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

    展开全文
  • 作为最流行的开源操作系统,Linux在各行各业得到了广泛的应用。因此了解Linux 内核的架构及工作机制就显得非常重要。...通过此方法可以动态地观察Linux内核的函数调用情况,以及CPU寄存器值等动态信息。
  • 虚拟机处理器核数与物理cpu关系

    千次阅读 2020-12-30 16:45:17
    vCPU,顾名思义,是虚拟CPU。 创建虚拟机时,需求配置vCPU资源。 因而vCPU是虚拟机的部件。 因而脱离VM,议论vCPU是没有意义的。虚拟化办理体系怎么调度vCPU,取决于体系内的虚拟机数目以及虚拟机配置的vCPU的情况。...
  • 1.CPU的四种状态与操作系统的两种状态(用户态和内核态) 首先我们要知道CPU有四种状态,分别为编号为0(特权最大)到3(特权最小),以及3个受保护的主要资源:内存、I/O端口执行某些机器指令的能力。 操作系统它基于...
  • 如:处理器插槽2个,内核数4个 则:逻辑CPU=2*4=8个
  • 服务器CPU主频和内核数量及性能之间关系的探讨  上周打电话咨询dell售后关于R720服务器CPU内核数量主频之间的关系的一个问题,售后磨叽了2个多小时后售后工程师一直也没有给出一个令人信服的答案,笔者只好...
  • 内核: 在计算机科学中,内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,...启下就是内核合理的分配管理硬件资源,来为上层提供服务。 进程: 1、用户角度
  • 简述Linux内核和Linux发行版的区别

    千次阅读 2021-05-10 21:18:45
    其实要理解Linux内核和Linux发行版之间的关系,只要能理解下面的关系就可以了:1.类似于游戏引擎《虚幻4》游戏《绝地求生》之间的关系。没有虚幻4这款引擎,就没有绝地求生的游戏,但是有了虚幻4这款引擎,可以...
  • Windows是采用CPU时间片轮转多任务分配机制的非实时操作系统,无法满足实时性要求比较高的任务需要。...本文介绍一种在Windows内核模式下编写Windows驱动程序,有效分配多核CPU资源从而提高软件实时性的方法。
  • 我们平时常用到的Linux系统包括CentOS、Ubuntu等,其实这些都是Linux的发行版本,Linux还有一个版本是内核版本。内核版本的命名规则在Linux官网(kernel.org)上,我们可以看到当前最新的内核版本,最新稳定版本是5.11...
  • Linux 内核CPU消耗很大的原因排查

    千次阅读 2020-11-06 15:51:56
    进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2用ps-omajflt,minflt-Cprogram命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。初步分析 majflt代表majorfault,中文名叫大错误,minflt...
  • 物理CPU,物理CPU内核,逻辑CPU概念详解

    万次阅读 多人点赞 2019-04-09 17:29:00
    本文介绍物理CPU,物理CPU内核,逻辑CPU, 以及他们三者之间的关系, 一个物理CPU可以有1个或者多个物理内核, 一个物理内核可以作为1个或者2个逻辑CPU。 2.物理CPU 物理CPU就是计算机上实际安装的CPU, 物理CPU数...
  • 先查看电脑cpu信息,可以看到,是8个逻辑cpu 在任务管理器中,看到其实是4个内核,但是...有了多核技术,一个物理CPU可以有多个物理内核,可以把一个CPU当作多个CPU使用,即逻辑CPU。 没有开启超线程时,逻辑CPU的个
  • 指令集、架构、处理器、内核,芯片之间的关系

    千次阅读 多人点赞 2021-11-02 20:59:06
    指令集主要是指Cpu硬件软件之间的接口描述,它本质上是一段二进制机器码,cpu只能识别机器码,但是机器码是一串无意义的字符串,程序员很难看看懂这些语句,用它来开发软件,所以后面就发明了汇编语言,汇编语言...
  • CPU个数、内核数、线程数的区别

    万次阅读 多人点赞 2019-07-06 10:20:49
    说到CPU主频,就不得不提外频倍频的概念,它们的关系是:主频=外频×倍频。 虽然提高频率能有效提高CPU性能,但受限于制作工艺等物理因素,早在2004年,提高频率便遇到了瓶颈,于是Intel/AMD...
  • 进程、线程和CPU 之间的关系(一)

    千次阅读 2020-10-31 15:43:15
    今天开始,这个专题主要讲解 java 并发编程系列,从操作系统的进程、CPU、线程等底层开始,到java 并发工具类,线程、线程池,并发容器、CAS、AQS等原理、源码使用均...今天讲进程、线程和CPU 之间的关系 。 1、 ...
  • 我的理解:cpu在进程中来回切换,当一个进程得到cpu后,再在线程中切换,这么理解不知道对不对, 希望能够得到解答。
  • CPU、核数线程数的关系

    千次阅读 2019-09-22 23:18:08
    CPU 处理器。 核心数 CPU的大脑数量。核心数就跟人的大脑一样,比如说,核心数2就说明CPU有两个脑子,脑子越多解决问题的速度越快。CPU的核心数越高,处理速度就越高。核心数2通俗地说就是双核CPU。 线程数 一...
  • docker容器CPU核心限制(绑定内核

    千次阅读 2021-03-05 12:25:09
    多核CPU的服务器Docker还可以控制容器运行限定使用哪些CPU内核,可以使用--cpuset-cpus选项来使某些程序独享CPU核心, 以便提高其处理速度,对应的Cgroup文件为/sys/fs/cgroup/cpuset/docker/容器ID号/cpuset.cpus。...
  • CPU与核心及进程线程认识

    千次阅读 2020-12-24 09:40:31
    CPU与核心物理核物理核数量 = cpu数(机子上装的cpu的数量)*每个cpu的核心数虚拟核所谓的4核8线程,4核指的是物理核心。通过超线程技术,用一个物理核模拟两...单核cpu和多核cpu都是一个cpu,不同的是每个cpu上的核心...
  • 应用软件,操作系统,CPU关系

    千次阅读 2022-01-03 19:20:39
    由上图可得,操作系统就类似于应用软件和CPU的翻译官,因此应用软件其实就是基于不同的操作系统安装不同的型号,例如IOSAndroid安装的应用软件就不同。 结论:不同的CPU(不同机器指令集)对应不同的操作系统...
  • 内核和文件系统的关系

    千次阅读 2017-09-30 22:54:29
    Linux内核与根文件系统的关系 开篇题外话:对于Linux初学者来说,这是一个很纠结的问题,但这也是一个很关键的问题! 一语破天机: “尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用的主要工具。这...
  • ARM内核 linux内核

    千次阅读 2021-01-22 17:55:44
    arm是处理器(cpu)的一种bai架构du, 目前就是armx86两种, 通常zhi用的计算机就是daox86架构zhuan的shu, 一般的手机都是arm架构的。 linux是操作系统,就想windows一样,是操作系统。 所以通常说的arm内核是指...
  • VMWare虚拟机处理器数量与每个处理器内核数量关系详解,以及分配CPU资源的建议概念CPU的物理核心和超线程CPU的睿频机制 概念 处理器数量:虚拟机上的CPU个数(上图中的插槽数,是机器主板上CPU的个数,并非CPU的...
  • 物理cpu和cpu核数逻辑cpuvcpu区别 1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id) 2.cpu核数:单块CPU上面能处理数据的芯片组的数量,如双核、四核等 (cpu ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 164,124
精华内容 65,649
关键字:

内核和cpu的关系

友情链接: luiliu.zip