计算机组成原理1

119 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情

P2:电子计算机

一开始使用的是继电器

缺点:

1.磨损严重,基本一天一换,而有些重要运算要运行好几天

2.速度太慢

替代品:

热电子管,即真空管

优点:

1.真空管中没有会动的组件,意味着更少的磨损,每秒可开闭数千次

因此成为了无线电,长途电话等其他电子设备的基础,持续了将近半个世纪

缺点:

昂贵,脆弱

计算机开始使用真空管意味从机电转向电子,而机电为十进制,电子为二进制,因此计算机也从十进制转变为二进制

为了降低成本和大小,同时提高可靠性和速度,需要新的电子元件

晶体管

优点:

  1. 固态
  2. 很小
  3. 运算速度快
  4. 寿命长

P3布尔逻辑和逻辑门

计算机使用二进制的原因:

  1. 布尔代数的存在
  2. 为了不让信号夹杂混合

布尔代数中的NOT,AND,OR

NOT:短路,false->true,true->false

AND和OR懂得都懂

亦或:XOR

下图为XOR的输出表以及输出电路图

image.png

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

寄存器用来临时存数据和操作数据

  1. —个寄存器追踪程序运行至到哪里了,我们叫它指令地址寄存器:存当前指令的内存地址
  2. 另一个寄存器存当前指令,叫指令寄存器

CPU的第一个阶段叫"取指令阶段",负责拿到指令

image.png

首先,将指令地址寄存器连到RAM,再根据指令地址寄存器中内存地址的值对应RAM表中对应的DATA并传给指令寄存器

然后,解码阶段

指令寄存器再将DATA对应的十进制数再传回,根据前四位配置相应的寄存器

image.png

例子:指令地址寄存器的值为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

例子:如下图所示

image.png

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个指令