【计算机组成原理】从电晶体transistor开始一路组合抽象到内存memory

       

上图所示就是一个电晶体,控制线可以决定右侧电路是否通行(即有电无电)

先让上侧的electrode通电,如果control wire通电,则右侧放行,上侧electrode的电会流往下侧的electrode;

如果control wire不通电,则右侧不放行,下侧的electrode无电;

即control wire可以控制右侧下方线路的有电无电(即0, 1)

输入输出图:

当然这个模型只是个开始,可以控制有电无电,但为后续的发展奠定了决定性的基础。


第二个模型:not gate 非门,即输入输出相反

右侧current线一直有电,如果input线通电,右侧放行,current的电流直接跑接地的ground线,所以output线上无电;

input如果不通电,让右侧不放行使current线的电流不会流往通地的ground线,而流往output线,output线上有电;

总结输入输出为如下:

将该模型包装一下,非门的表示方法如下:


建立非门这个模型后,少不了,与门(and gate),或门(or gate),以及异或门(xor gate);

and gate:

与门的模型是这样的,current通电,output上是否有电,取决于,transistorA和transistorB是否有电,是否放行,使current的电流往output

所以,只有当,两个电晶体下端的input都通电(即 都true),output才会true,其余通通false

总结输入输出如下:

经过包装,与门的表示方法如下:


or gate:

或门的模型是:current通电,晶体管a或者b其一通电都能使output通电

输入输出图如下:

或门经过包装后,表示方法为:


 xor:

xor gate 异或门则稍微复杂,它和or门只有在 两个输入都为true时的结果不同,故在or门的基础上进行修改,加了and gate和not gate

输入输出图和or门的输入输出的只区别在两个输入都为true时,or门输出是true,xor门输出是false

抽象包装后,xor门的表示方法如下:

 

现在手上的工具多了,相比最初只有晶体管只能控制有电没电,现在造出了四个很关键的逻辑门!


half adder “半加器” :

计算机里只有0和1,可以理解为晶体管的是否通电即代表了两种情况,即0和1,一位0或1即为1bit

那么,一位bit的相加如何完成,可以通过half adder

考虑到进位的情况,sum表示结果的低位,carry表示进位

可以尝试验证,

如果 0 + 0, sum得0,carry得0,结果为0正确;

如果 0 + 1, sum得1,carry得0,结果为1正确;

如果 1 + 0, sum得1,carry得0,结果为1正确;

如果 1 + 1, sum得0,carry得1,结果为10正确;

ok,现在通过half adder这个模型已经可以完成一位bit的相加了!


full adder: “全加器”

考虑到进位,所以全加器得由三个数字分两个半加器相加,最大的情况是1+1+1,也只进1位,所以,or门判断carry(进位)就行,只要存在进位,那就是进1位;

第一个半加器由a,b两个底数相加,得到进位carry和低位sum,sum再和上一位相加得的进位carry相加,得到最终的sum,以及第二个可能得carry,两个carry经过or门就可以判断这一位的相加有没有产生进位。


造完了half adder 和 full adder,就可以造一个大的,8-bit ripple carry adder,8位进位加法器!

从低位开始相加,第一位采用半加器,因为第一次相加不存在进位c,

而后续的相加都要考虑进位,当然要考虑最高位的相加是否产生进位,即overflow,溢出的情况

当然加入更多的adder可以进行更多位的相加

其他功能也是由最基本的逻辑门组合起来,这些功能的组合就形成了ALU 

an arithmetic unit and a logic unit

another level of abstraction! 又一层次的抽象出 ALU,如图

operation code 即指令代码,如1000代表加法,1100代表减法

上侧是两个输入的八位bit的数,将进行指令代码所代表的处理

输出在下方,右侧是一些标识,overflow是代表是否溢出,zero表示是否为0,negative表示结果是否为负数

这就是一个ALU了,离CPU近了一步~


要理解CPU,那一定先要了解内存,即memory

顾名思义,memory是一种存储,也分为random access memory 和 persistent memory

前者是通电有,断电无的RAM,后者是持续性的存储,应该为硬盘之类

先尝试着存储一个bit

如图在or门上加一条回路,一旦A输出过1之后,再改变A的输入,将不会改变output了,即存储了1

这个模型则可以存储0,将上述两个模型结合,得到and-or latch 锁存器,可以存储1或者0

但这个模型需要两根输入线,一根set(上侧) 一根reset(下侧)

set输入线输入1,则output1(reset不动为0); 

在输出为1的情况下,reset输入1,则直接让output变回0;

这个模型即可存储1或者0了,且可以set和reset

this is called a "latch" because it "latches onto" a particular value and stays that way.

The action of putting data into memory is called wriiting,

whereas getting the data out is called reading.

把数据放入内存的行为称为写

把数据从内存里拿出的行为叫做读

但是这个结构需要两根不同的线,可以继续优化,最好一根线就可以控制数据的输入

优化后:

再封装抽象得:

这下真的有了一个很屌的工具 latch,可以存储一位bit了!! 离memory内存已经很近了!!


* a group of latches operating like this is called a register,

which holds a single number, and the number of bits in a register is called its widith

一组latches(锁存器)像这样运行,即组合成了寄存器,即皇帝(cpu)身边负责端水送茶递奏章的小太监!

一个寄存器中可存储的位数即为它的宽度

写入线可以共用一根,但数据输入和输出线每个latch都需要,所以这种结构其实很费线

比如256-bit的寄存器,则需要1根写入线,256根数据输入线,256根输出线,总513根线

继续优化!采用矩阵的方法来定位锁存器,采用横纵坐标的方式来激活一个锁存器的读写操作

如图,横纵两条线连起一个and门,只有这两根线都通电,读写操作才可以进行,也就是通过横纵两线定位到了这个即将被操作的锁存器来存储1位bit

而同一时间只会操作一个锁存器,所以可读线,可写线,包括数据线都可以共用一根!

用256-bit的memory打比方纵观全局,还涉及到多路复用器这种工具,如下图:

这样,对于256-bit memory,线就由500多根优化到了 16+16(定位线)+3(可读线,可写线,数据输入线) = 35根

而行地址和列地址都可以分别用4个bit来定位,所以一组8位bit就可以定位16*16中的一个坐标

所以可以再连8根定位坐标的线,那这个家伙已经很完整了,已经是一个小型的memory了

将其抽象包装,得到:

OK,再总结一下,对于这个家伙,8位地址可以找到256个lacth(锁存器)中的任意一个进行操作,允许写入线和读取线控制了其能否被操作,data线将数据写入!

放心,还会继续组合,继续抽象!


将上述已经造出来的256-bit memory 进行组合,将8个这样的memory组合得到:

8根地址定位线共用,读写线也共用,等于说,在这个组合中,一个8-bits的数据分别在每个memory存放一个bit,即在这8个memory中分别存放了一个bit,且因为地址线共用,存放的具体坐标是一样的!

即,这个大家伙可以存放 256 个 8-bits的数据!

ok,给它抽象包装简化一下,得到:

ohhhhhhh~ 得到了RAM,这个RAM有256个地址,每个地址可存放一个8-bits data!

慢慢的由晶体管到逻辑门到加法器到ALU进而到了存储器,锁存器,寄存器,memory,到现在一步步组合起来的RAM,感叹计算机之路上诸位大佬神仙的神来之笔!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
符号和特性曲线。 MOS晶体管是一种晶体管,全称为金属氧化物半导体场效应晶体管(Metal-Oxide-Semiconductor Field-Effect Transistor),其分类包括n型MOS晶体管和p型MOS晶体管。 n型MOS晶体管由一块n型半导体材料(即n型衬底)和上面覆盖着一层厚度约为几微米的绝缘层(即氧化物层)构成,其符号如下图所示: ![n型MOS晶体管符号](https://img-blog.csdn.net/20141026180128541) p型MOS晶体管由一块p型半导体材料(即p型衬底)和上面覆盖着一层厚度约为几微米的绝缘层(即氧化物层)构成,其符号如下图所示: ![p型MOS晶体管符号](https://img-blog.csdn.net/20141026180228054) MOS晶体管的工作原理如下:在MOS晶体管中,由于绝缘层的存在,形成了一个与半导体材料相分离的金属电极(即栅极),外加电压可以控制栅极与半导体材料之间的电场强度,从而控制半导体材料中的载流子浓度。当栅极电压为负值时,半导体材料中的n型或p型掺杂材料中的自由电子或空穴被驱逐到衬底中,形成一个沟道,沟道中的电子或空穴可以从源极流经沟道到达漏极,从而实现电流的控制。因此,MOS晶体管可以被用作放大器、开关和数字逻辑门等。 下图为MOS晶体管的特性曲线,其中ID为漏极电流,VG为栅极电压,VDS为漏极-源极电压: ![MOS晶体管特性曲线](https://img-blog.csdn.net/20141026180345561)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值