计算机如何工作的?CPU基本工作流程

目录

冯诺依曼体系

程序(program) = 指令(instruction) + 数据(data)

CPU的基本工作原理

   逻辑门:二级的电子开关

        非门

        与门

        或门

        异或门

   算术逻辑单元 ALU(Arithmetic & Logic Unit) 

    算术单元(Arithmetic Unit)

    逻辑单元(Logic Unit)

    ALU符号

 控制单元 CU(Control Unit)

 指令(Instruction)

 CPU 的基本工作流程 

分支语句是怎么来的

CPU的正常工作流程

CPU的中断模式(Interrupt Mode)

    中断的用途

总结


   冯诺依曼体系

        指令只是一种特殊的一些数据,现代的计算机大多遵守 冯诺依曼体系结构

     运算器+控制器+存储器+输入设备+输出设备

    现在可以认为是:处理器+存储器+输入设备+输出设备
    硬件体系下可以认为是:CPU+内存+I/O,内部的数据交换通过总线(BUS)
    CPU 中央处理器进行算术运算和逻辑判断.
    存储器: 分为外存和内存(Memory)用于存储数据(使用二进制方式存储) ,storagr(二级存储)
    输入设备: 用户给计算机发号施令的设备.外部数据(物理数据)进入到存储器
    输出设备: 计算机个用户汇报结果的设备.存储器内的数据出来到外部世界
    针对存储空间
        硬盘 > 内存 >> CPU 
    针对数据访问速度 
        CPU >> 内存 > 硬盘 

程序(program) = 指令(instruction) + 数据(data)

    前提:内存是电子元件组装而成,以二进制的形式存数
    指令
        指令表现为一种特殊的数据,需要存储在内存中
        指令是一组预规定的动作,利用编码表规定 -- opcode
    数据(广义数据)
        同样需要存储在内存中
    数据在内存中的存储问题
        数据分为:数|非数的数据,数就指的是数字,而非数的数据就指的比如字符串,声音,图片等
        要在计算机中进行“非数数据”的存储,把非数数据转换成数类型的数据 -- 编码表
        例如:
            字符串->字符    Unicode编码(ASCII编码是其字节)
            图片                  RGB编码
            声音                  波形
        数类型的数据在内存中的表示方法
        有限范围内的整数表示:正码,反码,补码 -> 整型数
        有限范围的小树表示:IE标准                        -> 浮点数
接下来局限在整型中,但表示的数据可能是整数,指令,字符,图片,声音等….

CPU的基本工作原理

    CPU:逻辑算术运算器,控制器,寄存器register(临时存储数据的存储单元,每一个都不大,但不止一个)
    现代的高级CPU为了提升性能,一般都带有缓存(CPU内缓存)Level1,Level2,Level3缓存
    演示一个8位加法器的过程

        逻辑门:二级的电子开关

        组建与门,或门,非门

        非门

        与门

        或门

 

        异或门

    算术逻辑单元 ALU(Arithmetic & Logic Unit) 

        ALU 是计算机中进行算数、逻辑运算的核心部件,是计算机的数学大脑。接下来,我们用上一节构建的 逻辑门来完成自己的一个 ALU,去学习理解它的工作模式,以便作为我们进一步理解现代计算机工作原理的基石。

    算术单元(Arithmetic Unit)

        算数单元,负责计算机里的所有数字操作,比如四则运算,当然它能做的远远不止这些。接下来我们会 带着大家实现一个 8 位(bits)的加法器(adder)来,以演示整个过程,其他的运算器就不再详细讲解 了。
        半加器
    
    

        全加器
    

         八位数的加法器 = 七个全加器 + 一个半加器

    逻辑单元(Logic Unit)

        逻辑单元主要用来进行逻辑操作,最基本的操作就是 与、或、非操作,但不只是一位(bit)数的比 
     

        ALU符号

                三个输入:
                    A:要参与计算的第一个数
                    B:要参与计算的第二个数
                    C:本次的运算是什么 — opcode
                输出:正常输出
        CPU是计算机的核心,ALU就是CPU的核心。
        所有程序的执行,本质上都是计算 + 读取 + 存入

   控制单元 CU(Control Unit)

    我们现在有 ALU、存储了,但这还是不足以让我们的计算机工作起来,我们需要有一个部件来指挥 ALU进行何种的运算,而这个部件就是控制单元(CU)。
       

 指令(Instruction)

    首先,我们先介绍下我们需要到的指令(instruction)。    
    所谓指令,即指导 CPU 进行工作的命令,主要有操作码 + 被操作数组成。
    其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。
    指令本身也是一个数字,用二进制形式保存在内存的某个区域中。

 

    CPU 的基本工作流程 

            这里人为规定PC地址起始位置位0

    0为我们要执行的第一个指令
    1,取码阶段
        CU根据PC的值,去内存的相应位置,读取指令到IR,PC正常情况自动+1
    2,解码阶段
        CU按照预先设定的指令集解读,指令数据(opcode + 操作数)
        例如:
            0010 1110 
            人为规定:0010是opcode
            查看指令表可以看出,这个数据的指令是,从地址为14的内存中加载数据,放到A寄存器中
    3,执行阶段(CU)
        LOAD指令应该由CU执行,所以按照规定执行指令:从内存14地址处,将数据读到A寄存器中
    注意 :1.由于硬件中PC在自动 + 1,所以我们的代码变成的指令才能顺序的往下去执行。
               2.代码中的一条语句,很可能是需要多条指令才能完成。
                语句是一组指令的封装抽象
                变量是一段内存空间的封装抽象
               3.PC寄存器中的值在这个指令周期中很关键,可以控制执行哪里的指令 
    CPU的运算快慢,就是看CPU执行指令周期的频率
    CPU主频可以粗略地看作:每秒钟CPU能执行多少个指令周期。

分支语句是怎么来的

    if,else,while,for,break,continue.....
    CPU中往往会提供一些指令,这些指令可以去修改PC的值。
    

         通过CPU中 预先规定的指令,可以修改PC中的值(带条件修改),进而影响执行流(excution flow)

    只要有个起始位置填充到PC里,执行流就可以正常的运行起来了,我们平时的main方法就是

    程序启动:有“人”把我们程序翻译出来的指令第一条的地址放到PC中,我们的程序就正常跑起来了

CPU的正常工作流程

    取码 -> 编码 -> 执行周期
    只要电脑在开机状态下,CPU就在不停的循环着这个周期,在硬件CPU的视角中,只有指令的概念,没有指令属于谁的概念!

CPU的中断模式(Interrupt Mode)

    正常模式下,CPU可以顺序执行,可以分支执行。但总归只能按照既定顺序去执行。
    但现实中,很多时候,需要暂时中断CPU的当前执行流,先让CPU去做其他工作,再回过头继续原来的执行流。
    CPU硬件中提供了一种机制(中断)让CPU停下来
    1.保存当前的PC的值到内存的某个位置
    2.修改PC的值,让执行其他执行流
    3.其他执行流结束之后,通过将刚才保存的PC值恢复到PC寄存器
    4.继续原来的执行流

    中断的用途

    1.IO设备的处理
        当有外部数据到达Input设备时,触发某个中断,让当前正在执行的执行流暂停,切换到Input驱动对应的执行流,把Input设备中读取到的数据,放到内存的某个位置,恢复之前的执行流、
    2.操作系统中用来做进程调度(线程调度)

总结

    1.程序 = 指令 + 数据            其中指令也可以看作是一种特殊的数据
    2.任何的数据,基本都是以整型,浮点型进行表示,以保存到内存中,其中,“非数数据”都会按照一定标准格式编码成整型
    3.CPU = ALU + CU
        其中ALU负责进行 逻辑 + 算术运算,需要利用寄存器完成中间数据的临时保存,
        CU主要负责控制 内存(memory) <-> 寄存器(register) 数据传递的指令以及驱动ALU工作
     4.PC寄存器很重要,可以影响当前CPU的执行流,默认情况下是正常顺序走的(自动+1)
        CPU中提供了指令,可以修改PC的值(可以带条件),进行产生分支逻辑
    5.CPU的正常工作周期:取码 - > 解码 -> 执行
    6.CPU提供了中断模式,可以暂停当前的执行流,先去执行别的执行流,并根据需要,恢复回原来的执行流
    7.CPU视角中只有要执行的下一条指令是什么,根本不知道指令是属于哪个程序,更不要说属于哪个类,方法了
    8.代码中的一条语句,很可能要对应多条指令才能完成。
    

   

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是啊秋啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值