spoc课程网站建设,做网站软件流程,婚礼策划公司排名,龙岗网站建设网站制作明天继续搞一下cache,还有后面的,
下面是cpu框架图 开始解释cpu
1.控制器
控制器又称为控制单元#xff08;Control Unit#xff0c;简称CU#xff09;,下面是控制器的组成
1.指令寄存器IR:是用来存放当前正在执行的的一条指令。当一条指令需要被执行时#xff0c;先按… 明天继续搞一下cache,还有后面的,
下面是cpu框架图 开始解释cpu
1.控制器
控制器又称为控制单元Control Unit简称CU,下面是控制器的组成
1.指令寄存器IR:是用来存放当前正在执行的的一条指令。当一条指令需要被执行时先按照程序计数器PC所指出的指令地址从cache中取出一条指令到指令寄存器IR。 操作码就是汇编语言里的movaddjmp等符号码操作数地址说明该指令需要的操作数在数据缓存cache中的地址。
2.指令译码器ID:指令寄存器中的指令经过译码决定该指令应进行何种操作就是指令里的操作码、操作数在哪里操作数的地址。
3.时序产生器TG: 类似于“时间作息表”给计算机各部分提供工作所需的时间标志一般是利用定时脉冲的顺序和不同的脉冲间隔来实现。
4.操作控制器CU: 根据指令所需完成的操作和信号发出各种微操作命令序列用以控制所有被控对象完成指令的执行。
5.程序计数器PC: 用来存放下一条要执行指令的地址它与存储器内存之间有一条直接通路。执行指令时首先需要根据程序计数器PC中存放的指令地址将指令由内存取到指令寄存器IR完成“取指令”的操作。程序计数器PC本身具有自动加1的功能可以自动给出下一条指令的地址如此循环执行每一条指令。 2.运算器
运算器一般最少包括3个寄存器和1个算术逻辑单元(ALU)现代计算机内部往往设有通用寄存器组。
寄存器一种有限存储容量的高速存储部件可用来暂存指令、数据和位址。寄存器有很多种类一般涉及到四则运算的有3类ACCAccumulator为累加器MQMultiplier-Quotient Register为乘商寄存器X为操作数寄存器3类寄存器在完成不同运算时所存放的操作数类别也各不相同。 关于乘积高位和乘积低位的概念以十进制为例百位就是十位的高位十位是百位的低位。两个16位数相乘结果可能会有32位那左半部分的16位就是乘积高位存储到ACC中右半部分的16位就是乘积低位存储到MQ中。 算术逻辑单元ALUArithmetic and Logic Unit是算术运算和逻辑运算的部件。算术运算包括加、减、乘的整数运算逻辑运算是与、或、非和异或等逻辑操作还有移位、比较和传送等操作。 移位运算将一个字符向左或向右移动位或是浮动特定位包含带符号延伸和无符号延伸在程序中应用很广泛。 3.寄存器
在CPU中至少要有六类寄存器指令寄存器IR、程序计数器PC、地址寄存器AR、数据寄存器DR、累加寄存器AC、程序状态字寄存器PSW。
这些寄存器用来储存少量数据,以供cpu能快速使用. 数据寄存器 数据寄存器Data RegisterDR又称数据缓冲寄存器其主要功能是作为CPU和主存、外设之间信息传输的中转站用以弥补CPU和主存、外设之间操作速度上的差异。 数据寄存器用来暂时存放由主存储器读出的一条指令或一个数据字反之当向主存存入一条指令或一个数据字时也将它们暂时存放在数据寄存器中。 数据寄存器的作用是 1作为CPU和主存、外围设备之间信息传送的中转站 2弥补CPU和主存、外围设备之间在操作速度上的差异 3在单累加器结构的运算器中数据寄存器还可兼作操作数寄存器。 指令寄存器 指令寄存器Instruction RegisterIR用来保存当前正在执行的一条指令。 当执行一条指令时首先把该指令从主存读取到数据寄存器中然后再传送至指令寄存器。 指令包括操作码和地址码两个字段为了执行指令必须对操作码进行测试识别出所要求的操作指令译码器Instruction DecoderID就是完成这项工作的。指令译码器对指令寄存器的操作码部分进行译码以产生指令所要求操作的控制电位并将其送到微操作控制线路上在时序部件定时信号的作用下产生具体的操作控制信号。 指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码即可向操作控制器发出具体操作的特定信号。 程序计数器 程序计数器Program CounterPC用来指出下一条指令在主存储器中的地址。 在程序执行之前首先必须将程序的首地址即程序第一条指令所在主存单元的地址送入PC因此PC的内容即是从主存提取的第一条指令的地址。 当执行指令时CPU能自动递增PC的内容使其始终保存将要执行的下一条指令的主存地址为取下一条指令做好准备。若为单字长指令则(PC)1àPC若为双字长指令则(PC)2àPC以此类推。 但是当遇到转移指令时下一条指令的地址将由转移指令的地址码字段来指定而不是像通常的那样通过顺序递增PC的内容来取得。 因此程序计数器的结构应当是具有寄存信息和计数两种功能的结构。 地址寄存器 地址寄存器Address RegisterAR用来保存CPU当前所访问的主存单元的地址。 由于在主存和CPU之间存在操作速度上的差异所以必须使用地址寄存器来暂时保存主存的地址信息直到主存的存取操作完成为止。 当CPU和主存进行信息交换即CPU向主存存入数据/指令或者从主存读出数据/指令时都要使用地址寄存器和数据寄存器。 如果我们把外围设备与主存单元进行统一编址那么当CPU和外围设备交换信息时我们同样要使用地址寄存器和数据寄存器。 累加寄存器 累加寄存器通常简称累加器AccumulatorAC是一个通用寄存器。 累加器的功能是当运算器的算术逻辑单元ALU执行算术或逻辑运算时为ALU提供一个工作区可以为ALU暂时保存一个操作数或运算结果。 显然运算器中至少要有一个累加寄存器。 程序状态字寄存器 程序状态字Program Status WordPSW用来表征当前运算的状态及程序的工作方式。 程序状态字寄存器用来保存由算术/逻辑指令运行或测试的结果所建立起来的各种条件码内容如运算结果进/借位标志C、运算结果溢出标志O、运算结果为零标志Z、运算结果为负标志N、运算结果符号标志S等这些标志位通常用1位触发器来保存。 除此之外程序状态字寄存器还用来保存中断和系统工作状态等信息以便CPU和系统及时了解机器运行状态和程序运行状态。 因此程序状态字寄存器是一个保存各种状态条件标志的寄存器。
下面是cpu和主存框架图 4.MMU
属于cpu mmu的作用是进行虚拟地址和物理地址的相互转换.
虚拟地址和物理地址的关系记录在页表里,页表存在内存中.
TLB是一个高速缓存,用于缓存页表转换的结果从而减少页表查询的时间.
如果TLB中没有命中,那么就用TWU去内存中遍历查询页表,得到物理地址或虚拟地址,并记录在TLB中. 5.cache
属于cpu
首先说明,cache被称为高速缓存,为什么有cache,是因为虽然内存存取数据速度很快,但是和cpu相比还是太慢了,cache比内存快上百倍,存取速度和cpu相当, 所以先把内存的数据提前加载到cache里,做个缓存,以供cpu使用.
cache分为L3 cache /L2 cache / L1 cache, L1 cache又分为指令缓存cache和数据缓存cache
L1和L2 cache在同一个cpu上L3 cache一般是多个cpu间共享 下图为计算机的所有储存数据的类型
1.寄存 2.缓存 3.内存 4.硬盘 二.CPU的运行过程
cpu的运行过程 1.取指令
cpu读取 程序计数器 所指的在 指令cache 中的一条指令,将指令读取到到指令寄存器IR.
2.分析并发出指令
指令译码器ID对指令进行分析
操作控制器CU和时序产生器TG根据指令的功能向有关部件发出控制命令执行控制指令的操作
3.执行指令
执行指令分为两步取操作数和进行运算。
取操作数CPU通过寻址操作从 数据缓存cache 中读取操作数到寄存器中暂时保存起来
进行运算运算单元通过指令中的操作码对寄存器中的数进行操作
4.指令计数
修改程序计数器PC,使其指向下一条指令地址. 继续循环以上步骤,直至没有指令. cpu的三级缓存的大小
一级缓存,容量最小单位都是KB不同CPU之间一级缓存没有差距
二级缓存,基本都是个位数MB除了一些服务器CPU会有10几MB之外
三级缓存,常见的CPU的三级缓存只有10MB左右现在AMD EPYC 的X系列已经达到768MB的三级缓存。
cpu和io的关系
计算机硬件上使用DMA来访问磁盘等IO也就是请求发出后CPU就不再管了直到DMA处理器完成任务再通过中断告诉CPU完成了。所以单独的一个IO时间对CPU的占用是很少的阻塞了就更不会占用CPU了因为程序都不继续运行了CPU时间交给其它线程和进程了。虽然IO不会占用大量的CPU时间但是非常频繁的IO还是会非常浪费CPU时间的所以面对大量IO的任务有时候是需要算法来合并IO或者通过cache来缓解IO压力的。