持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情
P2:电子计算机
一开始使用的是继电器
缺点:
1.磨损严重,基本一天一换,而有些重要运算要运行好几天
2.速度太慢
替代品:
热电子管,即真空管
优点:
1.真空管中没有会动的组件,意味着更少的磨损,每秒可开闭数千次
因此成为了无线电,长途电话等其他电子设备的基础,持续了将近半个世纪
缺点:
昂贵,脆弱
计算机开始使用真空管意味从机电转向电子,而机电为十进制,电子为二进制,因此计算机也从十进制转变为二进制
为了降低成本和大小,同时提高可靠性和速度,需要新的电子元件
晶体管
优点:
- 固态
- 很小
- 运算速度快
- 寿命长
P3布尔逻辑和逻辑门
计算机使用二进制的原因:
- 布尔代数的存在
- 为了不让信号夹杂混合
布尔代数中的NOT,AND,OR
NOT:短路,false->true,true->false
AND和OR懂得都懂
亦或:XOR
下图为XOR的输出表以及输出电路图
P4二进制
UNICODE 设计于1992年,解决了不同国家不同标准的问题
二进制已经接触的够多了,这里就不再多赘述了
P5算数逻辑单元(ALU)
ALU有2个单元,1个算数单元和1个逻辑单元
算数单元
负责计算机的所有数字操作,比如加减法
半加器,全加器是为了输出"总和""进位"
可以通过半加器和全加器的联用使用来完成两数之和
逻辑单元
AND,OR,NOT操作。可以通过用算数单元的特性来判断输入的数是否为0,A和B谁比较大等等逻辑判断
P6寄存器和内存
通过ALU的计算后需要通过内存(memory)进行存储
寄存器(很小的一块内存,能存一个值)
寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果
AND-OR锁存器:
有两个输入:
"设置"输入,把输出变成1
"复位"输入,把输出变成0
门锁:
数据输入线,负责传入数据
允许写入线:0表示没有开启内存服务,1表示开启了内存服务,此时能够记录数据输入线的值
特别的,对于多位寄存器,只需要一条允许写入线就足够了
当太多位时,这时候需要通过矩阵来解决太多根线的问题了
这时候,对于256位的存储,只要35根线,1条数据线,1条允许写入线,1条允许读取线,还有16行16列的线用于选择锁存器
内存的重要特性:可以随时访问任何位置,因此叫RAM(随机访问存储器)
RAM(随机访问存储器):一大块内存,能在不同地址存大量数字
P7中央处理器(CPU)(重点)
用4个8位寄存器和2个特殊寄存器和RAM来制作一个CPU
寄存器用来临时存数据和操作数据
- —个寄存器追踪程序运行至到哪里了,我们叫它指令地址寄存器:存当前指令的内存地址
- 另一个寄存器存当前指令,叫指令寄存器
CPU的第一个阶段叫"取指令阶段",负责拿到指令
首先,将指令地址寄存器连到RAM,再根据指令地址寄存器中内存地址的值对应RAM表中对应的DATA并传给指令寄存器
然后,解码阶段
指令寄存器再将DATA对应的十进制数再传回,根据前四位配置相应的寄存器
例子:指令地址寄存器的值为00000001,那么就在上上图中找ARRDESS 1对应的00011111,前四位为0001,对应寄存器B,后四位1111转为十进制为15,再在表中找15对应的二进制即00001110,将这串二进制数填入B寄存器就完成了
STORE_A 13:表示把A寄存器的值存到ADDRESS为13对应的DATA中,并存入内存
ADD B A:把B寄存器的值与A寄存器的值相加并覆盖掉A的值
控制单元
取指令->解码->执行
CPU和RAM之间用地址线,数据线和允许读/写线进行通信
P8指令和程序
CPU时一块硬件,可以被软件控制
指令和数据都是存在同一个内存里的
JUMP:承接上图
JUMP 2:跳到ADDRESS为2并执行里面的DATA,但此时会无限循环
JUMP NEGATIVE 2:此时会判断上一次结果是否为负,为负才会执行跳转到2
SUB B A: B-A并把结果存入A
例子:如下图所示
t:首先执行0,A变为11,执行1,B变为5,执行2,A=A-B=6。此时结果不为负数,因此3的跳转不成立。因此执行4.再执行2,A=A-B=1。此时结果不为负数,因此3的跳转不成立。因此执行4.再执行2,A=A-B=-4。此时结果为负数,跳转到5,A=A+B=1。再将A的值即1存入13并保存到内存中。再执行7推出程序。虽然只有7个指令,但CPU执行了13个指令