0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CPU和内存之间究竟是如何工作的

h1654155282.3538 来源:电巢 作者:电巢 2021-01-01 17:51 次阅读

我们知道CPU是中央处理器,它是控制处理中心,我们的电脑手机电子产品都离不开CPU。那么,CPU内部到底是如何工作的呢?我们一起来看看。

当我们在电脑旁工作的时候,电脑其实也不断的在工作。

我们打开机箱,就会看见电脑的主板,也可以看到电风扇而不停地在转动,风扇下面的是CPU,它不停地在和内存进行数据的通讯,就像我们的大脑。

CPU是由很多很多晶体管构成的。它主要有控制器,运算器,寄存器几个部分,寄存器有数字寄存器,指令寄存器,指令地址寄存器。我们假设有四个数字寄存器,它们可以存放临时的数据。右边的是内存,还有16个存储位置,每个位置有8位bit。

CPU和内存之间究竟是如何工作的呢?

当我们启动电脑时,所有的寄存器都从零开始。假设内存存放了一个简单的计算机程序,CPU操作的第一阶段为“取指令”,也就是我们获得第一个指令的过程。

首先,指定地址寄存器连到内存,寄存器的值为零。内存返回地址0中的值00101110。该值复制到指定寄存器中,然后由CPU开始解析该指令,以便执行什么样的操作。这个步骤称它为“解码”。

该指定前四位为操作代码,后四位为操作代码来自哪里?由于前四位为操作代码0010,对应我们的指令集,0010是读内存放入寄存器A中,后四位是内存的地址1110。即十进制的数字14。

pIYBAF_q_FSAaa0JAAC-zKB7Zu8177.png

接着,用一些逻辑门电路来检查该操作码是否与0010匹配,输出为1,表示匹配成功。接下来执行该指令,也就是执行过程。

通过逻辑门电路检查电路输出,打开内存的读取线,找到内存1110的地址14,读取该地址的值00000011,下一步把该值存储到寄存器A中,我们通过数据线连接到4个数字寄存器,CPU通过指令开启数据寄存器A允许写入。该数据被写入到寄存器A中,我们已完成了该指令。

o4YBAF_q_FyAbKtqAAD0VMzedtk423.png

现在关掉所有的线,准备从内存中读取下一条指令。指令地址增加1,内存返回地址1的值00011111。复制到指令寄存器。再到解码的过程,通过指定集,指定前四位0001,它表示读内存存储到寄存器B中,这次内存地址是1111,对应十进制尾数为15,到执行的过程,开启内存读取线,找到内存15地址,读取该地址的值。并通过数据线把该值00001110存储到寄存器B中,最后将指定地址寄存器增加1,关闭所有的线。

现在内存返回地址2的值10000100放入指令寄存器CPU从指定集开始解码,操作码1000是加法指令。添加两个寄存器存储到第二个存储器中,该指定有两种,前两位01对应的寄存器B,后两位00对应寄存器A,因此10000100是指寄存器B中的值添加到寄存器A中。

o4YBAF_q_GKAdX4dAAF_HvFj_Lg823.png

将寄存器A、B连接到运算器的输入端,运算器执行加法运算,关闭运算器输出的结果保存在寄存器A中。00010001就是输入的值是3和14两个值的和等于17,接下来指定地址增加1,完成这个过程,找到内存地址3的值。

我们打开指令集开始解码,0100表示读A寄存器到内存,1101对应内存地址是13,然后将寄存器A的值,通过数据线送到内存13的地址上。

pIYBAF_q_GmAKs9-AAEuYzuaM_E399.png

我们刚刚运行的计算机的程序,它从内存中加载两个值相加,然后把结果放入内存,也就是CPU的取指令、解码、执行过程。我们电脑的系统是要很多很多的小程序组成,CPU也就不断的在循环这个过程。每个CPU执行这个过程的速度不一样,这个速度是由CPU主频即CPU工作频率决定,它决定着CPU的快慢。
责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10437

    浏览量

    206527
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72752
收藏 人收藏

    评论

    相关推荐

    linux内核的“头”究竟是什么?

    本文描述linux内核的“头”究竟是什么,感觉她非常的神秘。
    发表于 11-15 09:12 685次阅读

    图解:IGBT究竟是什么?

    图解:IGBT究竟是什么? IGBT究竟是什么?
    发表于 08-10 08:01

    S参数究竟是什么?

    S参数究竟是什么?起决定性作用的S参数将S参数扩展到多端口器件和差分器件
    发表于 03-01 11:46

    我们仿真DDR究竟是仿真什么

    我们仿真DDR究竟是仿真什么?
    发表于 03-04 07:32

    电感饱和究竟是什么

    电感饱和究竟是什么
    发表于 03-11 08:13

    真正软件定义无线电究竟是怎样的?

    真正软件定义无线电究竟是怎样的?
    发表于 05-14 06:47

    分贝究竟是什么?如何去理解它?

    分贝究竟是什么?如何去理解它?
    发表于 05-31 07:05

    究竟是主板决定了内存的频率?还是CPU决定?

    什么是内存频率?内存频率限制主要来自哪几个方面?内存频率究竟是谁说了算?主板还是CPU
    发表于 06-18 09:52

    一文读懂eMMC究竟是啥?

    eMMC究竟是啥?eMMC长什么样?eMMC用在哪?主要是干嘛用的?eMMC究竟是如何工作的呢?
    发表于 06-18 06:04

    SLC、MLC、Parallel NOR Flash等究竟是什么意思?

    什么是Flash Memory?Flash Memory主要可以分为哪几类?SLC、MLC、Parallel NOR Flash等究竟是什么意思?它们又有什么不同?
    发表于 06-18 09:11

    spec究竟是什么?有谁可以分享一下吗

    spec究竟是什么?哪位同行可以帮忙分享下DFI 5.0的spec?
    发表于 06-21 07:16

    无片外电容LDO究竟是什么?

    无片外电容LDO究竟是什么?有谁清楚吗
    发表于 06-22 08:07

    retain,copy与assign究竟是有什么区别呢

    retain,copy与assign究竟是有什么区别呢?
    发表于 09-30 09:25

    经转速环PI之后输出的究竟是什么

    为什么经转速环PI之后的输出量是电流?经转速环PI之后输出的究竟是什么?
    发表于 10-08 07:12

    S参数究竟是什么?

    S参数究竟是什么?
    发表于 11-01 08:24 2次下载
    S参数<b class='flag-5'>究竟是</b>什么?