找回密码
 注册
关于网站域名变更的通知
查看: 1043|回复: 4
打印 上一主题 下一主题

CPU是如何做到数据通信的?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-3-22 18:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
众所周知CPU是中央处理器,它是控制处理中心,我们的电脑、手机等电子产品都离不开CPU。
6 b" N4 W5 I0 r  p% O
那么,CPU内部到底是如何工作的呢?我们一起来看看。
( p' F! T4 q4 B3 r% F2 J
1
7 y. `5 J4 ^. s# l6 A* o
当我们用电脑拼命工作的时候,殊不知电脑也在拼命的工作。

0 _$ x% {2 q0 Q% @8 F  |! J  V
. L3 }/ L; k3 A# y. V

8 D! M! o( U9 {9 v
& s6 U- x; N1 Y) N1 ~$ f+ i
我们打开机箱,就会看见电脑的主板,也可以看到风扇在不停地转动,风扇下面就是CPU,它不停地在和内存进行数据的通讯,就像我们的大脑。
7 S1 m# U2 Y# {  c/ R9 l
CPU是由很多很多晶体管构成的,主要有控制器,运算器,寄存器几个部分。而寄存器又分为数字寄存器,指令寄存器,指令地址寄存器。假设有四个数字寄存器,它们可以存放临时的数据。右边的是内存,还有16个存储位置,每个位置有8位bit。
2 }( x7 p; M; u9 O+ d1 e' t

3 }$ E5 p( Z2 T5 w  O9 a
6 ?$ I; u  R/ W2 M# z  x5 I) _# R
; n( s' T: j  T1 V5 v$ Y
2
' B; S- R, x# O0 t
CPU和内存之间究竟是如何工作的呢?
# Z0 Q' n; [, H7 T( `) j
当我们启动电脑时,所有的寄存器都从零开始。假设内存存放了一个简单的计算机程序,CPU操作的第一阶段为“取指令”,也就是我们获得第一个指令的过程。

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

5 K7 I  a7 T4 L1 Z+ i1 [  c3 v
该指定前四位为操作代码,后四位为操作代码来自哪里?由于前四位为操作代码0010,对应我们的指令集,0010是读内存放入寄存器A中,后四位是内存的地址1110。即十进制的数字14。
5 I  X0 I( c' X) y
# A- z* u, n" I& j! p& ?. v
接着,用一些逻辑门电路来检查该操作码是否与0010匹配,输出为1,表示匹配成功。接下来执行该指令,也就是执行过程。
$ J) l, `- |% g4 n1 O6 G
通过逻辑门电路检查电路输出,打开内存的读取线,找到内存1110的地址14,读取该地址的值00000011,下一步把该值存储到寄存器A中,我们通过数据线连接到4个数字寄存器,CPU通过指令开启数据寄存器A允许写入。该数据被写入到寄存器A中,我们已完成了该指令。
( J9 f  U  S- v1 [8 S5 S

$ O# {, `- B0 {3 y) g% w
5 L" z. m  B- h4 c
现在关掉所有的线,准备从内存中读取下一条指令。指令地址增加1,内存返回地址1的值00011111,复制到指令寄存器。再到解码的过程,通过指定集,指定前四位0001,它表示读内存存储到寄存器B中,这次内存地址是1111,对应十进制尾数为15,到执行的过程,开启内存读取线,找到内存15地址,读取该地址的值。并通过数据线把该值00001110存储到寄存器B中,最后将指定地址寄存器增加1,关闭所有的线。

  b+ n' B+ [# k# _5 l/ H# D
现在内存返回地址2的值10000100放入指令寄存器CPU从指定集开始解码,操作码1000是加法指令。添加两个寄存器存储到第二个存储器中,该指定有两种,前两位01对应的寄存器B,后两位00对应寄存器A,因此10000100是指寄存器B中的值添加到寄存器A中。
* j9 ?0 f: x# I3 ?4 `
6 L  h  k  o, x, t$ K' D
3 ~# l- A1 M, B- b% f/ Y  T
将寄存器A、B连接到运算器的输入端,运算器执行加法运算,关闭运算器输出的结果保存在寄存器A中。00010001就是输入的值是3和14两个值的和等于17,接下来指定地址增加1,完成这个过程,找到内存地址3的值。

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

% }. M- J: L. a, `1 l9 D1 Z# b

! v& H; l2 [  A/ X. P: V
/ ?( s0 A7 z; t+ N/ Y8 \9 u5 J( k" f" t
( H" U' c) ]! n$ b  S. k
! ~; T; j! T! F$ O- O6 j1 D7 k% L
3

/ z" y$ h9 p6 B$ F$ {- e- F. V% ~0 K2 v
我们刚刚运行的计算机的程序,它从内存中加载两个值相加,然后把结果放入内存,也就是CPU的取指令、解码、执行过程。我们电脑的系统是要很多很多的小程序组成,CPU也就不断的在循环这个过程。
4 J/ C0 m6 k0 }9 V* b- p
每个CPU执行这个过程的速度不一样,这个速度是由CPU主频即CPU工作频率决定,它决定着CPU的快慢。
& E; Q- K4 t8 i/ F4 ?) V  }
今天的分享就先到这里啦,还有什么疑问可以留言区留言给我们哦~
, g3 z# X0 T! F$ y) |
文章由巢影字幕组译制

2 N1 S% a+ T: c8 g) e' Y. s+ P- ]3 T" I  b: I/ X
  • TA的每日心情
    开心
    2021-8-4 15:35
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    2#
    发表于 2021-3-23 11:23 | 只看该作者

    该用户从未签到

    3#
    发表于 2021-3-23 18:49 | 只看该作者
    学习一下

    “来自电巢APP”

    该用户从未签到

    4#
    发表于 2021-3-30 16:18 | 只看该作者
    看的头都炸了; C$ m, c6 M& w2 {' D. ~, q; M1 z. q
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-31 22:39 , Processed in 0.125000 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表