CPU原理简介

33 阅读5分钟

image.png

这是一个计算机最简单的构成,其中最核心的部件一个是cpu,一个是内存,其他都可以称为外设(USB、显卡、磁盘控制器、网卡驱动)。

cpu内部有一个部件叫ALU(数据逻辑单元)是用来做计算的,寄存器用来存数据的,pc(程序计数器)用来存指令。

比如计算3+5,pc记录了执行到第几条指令了,数据3、5存储在寄存器,由ALU来计算,加完了之后存储到内存中或存储到另外一个寄存器。

计算机最终的组成是由数字电路组成,

image.png

合上开关,电路联通,灯泡就会亮。假设用2个信号表示一个字符,

image.png

2个信号只能表示4个字符,如果想表示更多的字符,就要增加信号的宽度,

image.png

3个信号的组合可以表示8个字。

多少个信号,就可以表示2的多少次方个字符,这个就是字符编码。

中文日常交流常用的汉字有4000多个,康熙字典中记录了所有的汉字47000个,多少个信号可以代表所有的汉字,2的16次方65536,用一个16位的字符集就可以代表中国所有的汉字。

字符编码代表到底这个码代表什么字符,比如0011表示我,不同的字符编码表示同样的一个我字对应的编码是不一样的,比如在一个字符中用0200表示,在另外一种字符中用2929表示;而乱码表示编解码用的编码方式不一样,比如用GBK编码,用UTF-8解码,就会乱码即用来解析的码表和encode编码的码表不一样,就会乱码。

  • 与门电路

image.png

在这个电路中其中有一个断开整个就是断开的,

image.png

所有都联通才是联通状态,如果用二进制的概念表示,

image.png

0表示断开(不通),1表示联通,所有为1才为1,对应着与门电路,

  • 或门电路

image.png

此电路有两个以上输入端,一个输出端;只要有一个或几个输入端是 “1”,或门的输出即为 “1”;而只有所有输入端为 “0”时,输出才为 “0”。

  • 非门电路

image.png

输入端和输出端的电平状态总是相反的。

  • 或非

image.png

当任一输入端(或多端)为高电平(逻辑“1”)时,输出就是低电平(逻辑“0”);只有当所有输入端都是低电平(逻辑“0”)时,输出才是高电平(逻辑“1”)。

  • 异或

image.png

当两个逻辑自变量取值相异时,函数为1;反之,当自变量取值相同时,函数为0;或者说:当两个输入信号相异时有输出,而相同时没有输出。

在异或门和或非门基础上人们发明了加法器,

image.png

image.png

这个加法器是对1位进行相加,计算8位的话,就是把加法器用新的电路串联起来,

image.png

当有了加法之后,所谓的ALU就出现了,只要能计算加法,其他所有的运算都能够计算了。

减法可以用二进制的补码完成,乘法可以用加法计算,除法可以用减法计算,所以最终所有的东西都可以用加法计算。

image.png

这是面包板可以用来模拟电路,往上面插二极管和三极管,插上去之后,各个灯角就互相连通了。

这个里面的输入作为那个里面的输出,这个里面的输出作为那个里面的输入,这样就可以做一些简单的电路实验。

当有了算法逻辑单元之后,整个计算的构成还需要其他的电路,比如时钟信号电路,一个是为了计时,再一个会不断的刷新电路,每刷一步电路就往前进一步做一个计算,因为到最后的时候,你会发现所有的计算都需要一个控制电路,控制电路必须一会联通,一会断开,每通一次整个的计算才会往前进一步。

image.png

3+5最终怎么计算得到8的?通一次电,计算才往前走一步,所以需要一个时钟电路,时钟电路需要电池信号,线圈一通电就会产生磁场,磁场把开关断下来,断下来之后就不通了,不通了之后,电池没电了,开关闭合,电流又通了,这样来回来去的。

image.png

后面就发明了锁存器,总而言之用更深的电路实现一个锁存器,锁存器的作用是不管控制端输入一个什么,最终这里的输出会保存下来即只要最终的电是通的,就会保存下来,这个就是内存或寄存器。

把数字存在这里,不可能说通一次电流,数字就变了,只要不对它进行写的操作,只要不覆盖了,它就一直存在这,这个在电路上的名称叫锁存器。

image.png有了1位锁存器,就会产生8位的,

image.png

1024位的,image.png

所以最终就会发现可以完完全全用一个电路来记录地址,用另外一个电路记录数据,再通过一个控制信号把它写到锁存器当中。

image.png

结果整个内部程序就会变成,我有一个地址,地址上记录了哪个数据,就可以完全的把它记录下来。

当然最终还是要写程序实现程序的自动化,这个过程只要不断的用时钟信号去修改它的控制端,它就会一步一步的往前走,先加第一位,再加第二位,再加第三位...

cup中的寄存器就是锁存器,里面记录了计算需要的数据;程序计数器就是地址,计算到哪一行、哪个地址了,往前推进一下,地址就往下加1;ALU是用来计算的电路即加法器。