【计算机基础】计算机科学速成课

电子计算机系统的 抽象层次:

物理(电子)——>器件(晶体管、二极管)——>模拟电路(放大器、滤波器)——>数字电路(与门或门)——>逻辑(加法器、储存器)——>微体系结构(数据路径控制器)———>体系结构(指令寄存器)——>操作系统(设备驱动程序)——>应用软件(程序)

课程链接:

【https://www.bilibili.com/video/av21376839?p=1】

正文

第一课:计算机早期历史

0、课程目标:从高层次总览一系列计算机话题,快速入门计算机科学。

1、计算机技术的影响——进入信息时代

  • 出现自动化农业设备与医疗设备
  • 全球通信和全球教育机会变得普遍
  • 出现意想不到的虚拟现实/无人驾驶/人工智能等新领域

2、计算机的实质:

极其简单的组件,通过一层层的抽象,来做出复杂的操作。

计算机中的很多东西,底层其实都很简单,让人难以理解的,是一层层精妙的抽象。像一个越来越小的俄罗斯套娃。

3、关于计算的历史:

  1. 公元前2500年,算盘出现,为十进制,功能类似一个计数器。
  2. 公元前2500年-公元1500年:星盘、计算尺等依靠机械运动的计算设备出现
  3. 公元1613年:computer的概念出现,当时指的是专门做计算的职业,
  4. 1694年:步进计算器出现,是世界上第一台能自动完成加减乘除的计算器。
  5. 1694-1900年:计算表兴起,类似于字典,可用于查找各种庞大的计算值。
  6. 1823年:差分机的设想出现,能近似多项式可以做函数计算,但计划最后失败,1991年差分机实现。
  7. 19世纪中期:分析机的设想出现,设想存在可计算一切的通用计算机,有内存,但未实现。
  8. 1890年:打孔卡片制表机。原理:在纸上打孔→孔穿过针→针泡入汞→电路连通→齿轮使计数+1。

第二课:电子计算机的发展史

1、电子计算机元器件变化:

继电器→真空管→晶体管:提高电路闭合速度。

继电器:用电控制的机械开关

控制线路:控制电路是开还是关,连着一个线圈,当电流流过线圈,线圈产生电磁场吸引金属臂,从而闭合电路。无法快速开关。

真空管:其中一个电极可以加热,从而发射电子;另一个电极会吸引电子,形成"电龙头"的电流。

但只有带正电才行,若带负电荷或中性电荷,电子无法被吸引,越过真空区域,因此没有电流。

二极管:电流只能单向流动的电子部件,缺少电流开关。

两电极之间加入第三个"控制"电极:向控制电极施加正电荷,允许电子流动;施加负电荷会组织电子流动(三级真空管)。

晶体管:它是一个开关,可用控制线路来控制开或关。

晶体管有两个电极,电极之间有一种材料隔开它们,这种材料有时导电有时不导电(半导体)。

控制线连到一个"门"电极,通过改变"门"的电荷可以控制半导体材料的导电性,来控制是否电流流动。

2、计算机的出现背景:

20世纪人口暴增,科学与工程进步迅速,航天计划成形。以上导致数据的复杂度急剧上升、计算量暴增,对于计算的自动化、高速有迫切的需求。

3、电子计算机的发展:

1944年 哈佛马克1:使用继电器,用电磁效应,控制机械开关,缺点为有磨损和延迟。

*1947.9哈弗马克2型最早还因为有虫子飞进去导致故障,引申出bug=故障的意思。

机电(马达、齿轮)—>电子

1943年 巨人1号:使用1600个真空管(三极管),制造出世界上第一个可编程的计算机。

1946年 ENIAC:第一个电子数值积分计算机,为第一台真正的通用计算机,每秒可执行5000次十位数加减法。

1947年 晶体管出现,使用的是固态的半导体材料,相对真空管更可靠。

1950年 空军AN/FSQ-71955: 真空管到达计算极限。

1957年 IBM 608: 第一个消费者可购买的晶体管计算机出现,3000个晶体管,每秒执行4500次加法,80次左右的乘除法。

第三课:布尔逻辑与逻辑门

1、计算机为什么使用二进制:

  1. 计算机的元器件晶体管只有2种状态,通电(1)&断电(0),用二进制可直接根据元器件的状态来设计计算机。
  2. 而且,数学中的“布尔代数”分支,可以用True和False(可用1代表True,0代表False)进行逻辑运算,代替实数进行计算。
  3. 计算的状态越多,信号越容易混淆,影响计算。对于当时每秒运算百万次以上的晶体管,信号混淆是特别让人头疼的的。

2、布尔代数&布尔代数在计算机中的实现

  1. 变量:没有常数,仅True和False这两个变量。
  2. 三个基本操作:
  • NOT/AND/OR。

1)NOT操作:

1.命名:称为NOT门/非门。

2.作用:将输入布尔值反转。输入的True或False,输出为False或True。

3.晶体管的实现方式:

  • 半导体通电True,则线路接地,无输出电流,为False。
  • 半导体不通电False,无法接地,则输出电流从右边输出,为True。

2)AND操作

1.命名:AND门/与门

2.作用:由2个输入控制输出,仅当2个输入input1和input2都为True时,输出才为True,2个输入的其余情况,输出均为False。

*可以理解为,2句话(输入)完全没有假的,整件事(输出)才是真的。

3.用晶体管实现的方式:

串联两个晶体管,仅当2个晶体管都通电,输出才有电流(True)

3)OR操作

1.命名:OR门/或门

2.作用:由2个输入控制输出,只要其中一个输入为True,则输出True。

3.用晶体管实现的方式:

使用2个晶体管,将它们并联到电路中,只要有一个晶体管通电,则输出有电流(True)。

3、特殊的逻辑运算——异或

1.命名:XOR门/异或门

2.作用:2个输入控制一个输出。当2个输入均为True时,输出False,其余情况与OR门相同,仅2个输入不同时输出True。

3.图示:

先用一个OR门,将其与AND门并联,AND门与NOT门串联,最后让NOT与AND门并联,获得输出。

4、逻辑门的符号表示

1.作用:将逻辑门简化,将逻辑门用于构建更大的组件,而不至于太复杂。

2.图示:

  • 非门:用三角形+圆圈表示
  • 与门:用D型图案表示
  • 或门:用类似D向右弯曲的图案表示
  • 异或门:用或门+一个圆弧表示

5、抽象的好处

使得分工明确,不同职业的工程师各司其职,而不用担心其他细节。

第四课:二进制

1、二进制的原理,存储单元MB/GB/TB解释

0.计算机中的二进制表示:

单个数字1或0,1位二进制数字命名为位(bit),也称1比特。

1.字节(byte)的概念:

1byte=8bit,即1byte代表8位数字。

最早期的电脑为八位的,即以八位为单位处理数据,2^8=256个取值(意味着八位机的游戏只有256种颜色)。为了方便,将八位数字命名为1字节(1byte).

2.十进制与二进制的区别:

  • 十进制有10个数字,0-9,逢10进1(不存在10这个数字),则每向左进一位,数字大10倍。
  • 二进制有2个数字,0-1,逢2进1,(不存在2这个数字),则每向左进一位,数字大2倍。
  • 如何进行二进制与十进制联系起来:
    • 将十进制与二进制的位数提取出来,编上单位:

eg.二进制的1011=1*2^0 + 0*2^1 + 1*2^2 + 1*2^3= 14(从右往左数)

eg.十进制的1045= 1*10^3 + 0*10^2 + 4*10^1 + 5*10^0

3.十进制与二进制的图示:

十进制的263

二进制的10110111

4.二进制的运算:

相同的位数相加,逢2进1

5. byte在电脑中的单位换算:

1kb=2^10 = 1024byte =1000byte

1TB=1000GB

1GB=十亿字节=1000MB=10^6KB

8bit(位)=1Byte(字节)

1024Byte(字节)=1KB

1024KB=1MB

1024MB=1GB

1024GB=1TB

6. 32位与64位电脑的区别

32位的最大数为43亿左右2*10^32=4,294,967,295=4G左右

64位的最大数为9.2*10^18

2、正数、负数、正数、浮点数的表示

1)计算机中表示数字的方法

1.整数:

表示方法:

  • 第1位:表示正负 1是负,0是正(补码)
  • 其余31位/63位: 表示实数

2.浮点数(Floating Point Numbers):

定义:小数点可在数字间浮动的数(非整数)

表示方法:IEEE 754标准下

用类似科学计数法的方式,存储十进制数值

  • 浮点数=有效位数*指数
  • 32位数字中:第1位表示正负,第2-9位存指数。剩下23位存有效位数

eg.625.9=0.6259(有效位数)*10^3(指数)

3、美国信息交换标准代码-ASCⅡ,用来表示字符

1.全称:美国信息交换标准代码

2.作用:用数字给英文字母及符号编号

3.内容:7位代码,可存放128个不同的值。

4.图示:

4、UNICODE,统一所有字符编码的标准

1.诞生背景:1992诞生,随着计算机在亚洲兴起,需要解决ASCⅡ不够表达所有语言的问题。

为提高代码的互用性,而诞生的编码标准。

2.内容:UNICODE为17组的16位数字,有超过100万个位置,可满足所有语言的字符需求。

第五课:算术逻辑单元

1、什么是算术逻辑单元

1.命名:简称ALU,Arithmetic&Logic Unit

2.组成:ALU有2个单元,1个算术单元和1个逻辑单元(Arithmetic Unit和Logic Unit)

3.作用:计算机中负责运算的组件,处理数字/逻辑运算的最基本单元。

2、算术单元

负责计算机里的所有数字操作

1)基本组件:

  • 由半加器、全加器组成
  • 半加器、全加器由AND、OR、NOT、XOR逻辑门组成

2)加法运算

1.组件:AND、OR、NOT、XOR逻辑门

2.元素:输入A,输入B,输出(均为1个bit,即0或1)

ps:1true,0false二进制加法的输入和输出,和XOR门的逻辑完全一样,即可以把XOR用作1位加法器(电路设计思路)

3.半加器:

  • 作用:用于计算个位的数字加减。
  • 输入:A,B(都是1位)
  • 输出:总和,进位

  • 抽象成一个组件运用:

4.全加器:

  • 作用:用于计算超过1位的加法,由于涉及进位,因此有3个输入(C充当进位)
  • 3个输入:A,B,C(都是1个bit)
  • 两条输出线:总和,进位

半加器制作全加器,原理图示:

抽象全加器:

3)如何用半加器与全加器做8位数的加法

1.说明:以8位行波加法器为例

  1. 用半加器处理第1位数(个位)的加法,得到的和为结果的第1位。
  2. 将输出的进位,输入到第2位用的全加器的输入C中。
  3. 将第2位的2个数用全加器计算,得到的和为结果的第2位(sum)。
  4. 将第2位计算的进位连接到百位的全加器输入C中。

在第3-8位上,循环第3-4步的操作。

*现在电脑使用的加法器叫“超前进位加法器”

4)算术单元支持的其他运算

专门做乘法的算术单元,更多的逻辑门来实现,处理器性能更优。

3、溢出的概念

内容:在有限的空间内,无法存储位数过大的数,则称为溢出。(两个数字的和太大了,超过了用来表示的位数)

说明:第8位的进位如果为1(第9位有进位),则无法存储,此时容易引发错误,所以应该尽量避免溢出。

4、逻辑单元

作用:执行逻辑操作,如NOT、AND、OR等操作,以及做简单的数值测试。

比如:一个数字是否是负数。

5、ALU的抽象

1)74181用了70个逻辑门,但不能执行乘除

8位ALU需要数百个逻辑门

作用:ALU的抽象让工程师不再考虑逻辑门层面的组成,简化工作。(输入二进制,会执行计算)

2)图示:

抽象成符号像一个大“V”。

3)说明:

图示内容包括:

  • 输入A,B
  • 输出
  • 标志:溢出、零、负数(高级ALU有更多标志)
    • 算数结果为负,“负数标志”才是真
  • 作差比较法

第六课 寄存器与内存

0、课程导入

当玩游戏、写文档时如果断电,进度会丢失,这是为什么?

  • 损失数据的原因是这是电脑使用的是RAM(随机存取存储器),俗称内存,内存只能在通电情况下存储数据。
  • 另一种存储(memory)叫持久存储,电源关闭时数据也不会丢失,存其他东西。
  • 先由只能存储1位的电路再扩大,做出内存模块,和ALU结合起来做出CPU。

1、概念梳理

  • 此前电路都是单向的,向前流动——>可以回向电路,输出连回输入

永久记录1

永久记录0

有用的存储,把两个电路结合起来

  • 锁存器:锁存器是利用AND、OR、NOT逻辑门,实现存储1位数字的器件。
  • 寄存器:1组并排的锁存器。(并排放8个锁存器,存8位信息)
    • 寄存器能存一个数字,这个数字有多少位,叫"位宽"。
  • 矩阵:以矩阵的方式来存放锁存器的组合件,n*n门锁矩阵可存放n^2个锁存器,但同一时间只能写入/读取1个数字。(早期为16*16矩阵)
    • 启用某个锁存器,就打开相应的行线和列线。
  • 位址:锁存器在矩阵中的行数与列数。
    • 唯一指定'交叉路口"地址 eg.12行 8列
    • 2^4>12,最多16行,4位就够12=【1100】,8=【1000】,12行 8列=【1100 1000】,地址的行列转换。
  • 多路复用器:一组电线,输入2进制的行址&列址,可启用矩阵中某个锁存器
  • 内存(RAM):随机存取存储器,由一系列矩阵以及电路组成的器件,可根据地址来写入、读取数据。类似于人类的短期记忆,记录当前在做什么事情。

2、锁存器

作用:存储1位的电路,"锁定"了一个值。

写入:放入数据

读取:拿出数据

图示:

2.5、门锁:

锁存器需要同时输入2个数字,不太方便。

为了使用更方便,只用1根电线控制数据输入(将它设为0或1来存储值),发展了门锁这个器件。

另外,用另一根电线来控制整个结构的开关(“启用”内存),启用时允许写入,没启用时就"锁定"。(和复位作用不同)

抽象:

把"门锁"放到盒子里,这个盒子能存一个bit

  • 允许写入0(锁门):无论数据输入如何,数据输出不会改变
  • 允许写入1(开门):数据输入改变数据输出,关闭允许写入,数据即存储。

3、寄存器

作用:并排使用门锁,存储多位数字

图示:

写入寄存器前,要先启用里面所有锁存器,E=1

然后用8条D数据线发数据,然后将"允许写入线"E设回0,8位值即存起来。

8D+8Q+1E=17根线

4、门锁矩阵

作用:

n*n的矩阵有n^2个位址,则可以存储n^2个数。但1个矩阵只可记录1位数字,n个矩阵组合在一起,才可记录n位数。如1个8位数,会按位数分成8个数,分别存储在8个矩阵的同一个位址中。

8个矩阵,则可以记录256个8位数字。

通俗理解:

16*16的门锁矩阵,可理解为1个公寓,1个公寓256个房间。

8个门锁矩阵并排放,则有了8个公寓。

规定每一个公寓同一个编号的房间,都有一样的标记(地址),共同组成8位数字。

那么8个公寓就能存 (8*256 / 8)个数字。

原因:

16*16的门锁矩阵虽然有256个位置,但每次只能存/取其中1个位置的数字。因此,要表示8位数字,就需要同时调用8个门锁矩阵。

图示:

  • 启用某个锁存器,就打开相应的行线和列线。
  • 打开交叉处,存储器的"允许写入线",所有其他锁存器,保持关闭
  • 可选择当个锁存器,这种行/列排列,用一根"允许写入线"连所有锁存器。锁存器为允许写入,行列必须均为1。
  • 实现可以只用一根"数据线"连所有锁存器来传数据(因为只有一个锁存器会启用,只有那个会存数据。其他锁存器会忽略数据线上的值因为没有"允许写入")
  • 256位存储只要35条线(【1数据线+1允许写入线+1允许读取线】控制矩阵线+32矩阵线选择锁存器)

4.5、多路复用器

工作方式:

16行,需要1到16多路复用器。输入一个4位数字(二进制),它会把那根线,连到相应的输出线。一个多路复用器处理行;另一个多路复用器处理列。

使用方法:

在多路复用器中输入位址,x行x列(2进制),即可点亮x行x列的锁存器。

举例:

行列数

矩阵1

矩阵2

矩阵3

矩阵4

矩阵5

矩阵6

矩阵7

矩阵8

1行5列

1

0

1

1

0

0

1

0

2行3列

0

1

0

0

1

1

0

1

256位内存抽象当成一个整体:

  • 输入一个8位地址:4位代表列,4位代表行;需要"允许写入线""允许读取线";还需要一条数据线,用于读/写数据。
  • 256位内存像寄存器一样并排放置,一行8个,可以存一个8位数字(1byte)
  • 为了存一个8位数字,同时给8个256位内存一样的地址,每个地址存1位,总共能存256个字节(byte)
  • 看成一个整体的可寻址内存

5、内存

粗略定义:将一堆独立的存储模块和电路看做1个单元,组成内存方块,n个内存方块组成内存模块。在一个电路板上所有的内存方块统称为内存(RAM)。

  • 一个memory只能存一个bit位,由于地址线、允许写入线、允许读取线是共用的,意味着对每个memory的同一地址进行读取、写入操作。
  • 数据的写入、读取是单独分开的,从而实现一个8位数(二进制)的存储。
  • 256个内存地址(0-255),每个地址能读或写一个8位值(8个256位内存)。

内存特性:可以随时访问任何位置

图示:

1980年内存RAM条:

128*64=8192位

  • 锁存器实现SRAM(静态随机存取存储器)
  • DRAM、闪存、NVRAM,用不同的电路存单个位(不同的逻辑门,电容器,电荷捕获或忆阻器)
  • 矩阵层层嵌套,来存储大量信息。

第七课 中央处理器(CPU)

1、概念梳理

  • CPU(Central Processing Unit):中央处理单元,负责执行程序,程序由一个个操作组成(这些操作叫指令)。
    • 通常由寄存器/控制单元/ALU/时钟组成。与RAM配合,执行计算机程序。
    • CPU和RAM之间用“地址线”、“数据线”和“允许读/写线”进行通信。
  • 指令:指示计算机要做什么,多条指令共同组成程序。如数学指令(加/减)CPU会让ALU进行数学运算;内存指令,CPU和内存通信,然后读/写。
  • 微体系架构:CPU有很多组件,重点放在功能,而不是一根根线具体怎么连。当用一条线连接两个组件时,这条线只是所有必须线路的一个抽象,是一种高层次视角。
  • 时钟:负责管理CPU运行的节奏,以精确地间隔,触发电信号,控制单元用这个信号,推动CPU的内部操作。
  • 时钟速度:CPU执行“取指令→解码→执行”中每一步的速度叫做“时钟速度”,单位赫兹Hz,表示频率。
  • 超频/降频:
  • 超频,修改时钟速度,加快CPU的速度,超频过多会让CPU过热或产生乱码。
  • 降频,降低时钟速度,达到省电的效果,对笔记本/手机很重要。

2、CPU工作原理

1)必要组件:

  • 指令表:给CPU支持的所有指令分配ID
    • 0010:LOAD_A将RAM地址为后4位的二进制值存入寄存器A
    • 0001:LOAD_B将RAM地址为后4位的二进制值存入寄存器B
    • 0100:STORE_A将寄存器A的值放入内存
    • 1000:ADD后4位,2位2位分别代表2个寄存器,前2位代表的寄存器的值,加到后2位代表的寄存器里
  • 读取---》读取---》相加---》存储

  • 控制单元:像指挥部指挥CPU所有组件,有序的控制指令的读取、运行与写入。
  • 指令地址寄存器:追踪程序运行到哪里了,存当前指令的内存地址。类似于银行取号。该器件只按顺序通报地址,让RAM按顺序将指令交给指令寄存器。
  • 指令寄存器:存当前指令,存储具体的指令代码。
  • CPU假设配置前提:
  • RAM内存
  • 4个8位寄存器ABCD:临时存数据和操作数据
    • 数据以二进制存在内存,程序同样可以
    • 给CPU支持的所有指令,分配一个ID,用前四位存“操作代码”(操作码)后四位代表数据来自哪里(可以是寄存器或内存地址)
  • 还需2个寄存器,完成cpu。即:指令地址寄存器和指令寄存器

2)过程

当启动计算机时,所有寄存器从0开始,假设在RAM里放了一个程序。

  • CPU的第一个阶段(取指令阶段)
    • 取指令:负责拿到指令。
    • 指令地址寄存器发地址给RAM→RAM发该地址内的数据给指令寄存器→指令寄存器接受数据
      • 首先,将"指令地址寄存器"连到RAM,"指令地址寄存器"值为0因此RAM返回地址0的值,即0010 1110会复制到指令寄存器里
      • 指令拿到了,要弄清是什么指令,才能执行,而不是kill,这是解码阶段。

  • 解码:指令寄存器根据数据发送指令给控制单元 →控制单元解码(逻辑门确认操作码)
    • 前4位0010是LOAD_A指令:把RAM的值放入寄存器A。(把地址为后4位(十进制)的8位二进制放入寄存器A)
    • 后4位1110是RAM的地址,转成十进制是14
    • 接下来,指令由“控制单元”进行解码
      • 控制单元也是逻辑门组成的
      • 比如,为了识别“LOAD_A”指令需要一个电路,检查操作码是不是0010,可用很少的逻辑门实现,即:知道了是什么指令就可以,开始执行了。

  • 执行阶段:控制单元执行指令(→涉及计算时→调用所需寄存器→传输入&操作码给ALU执行)→调用RAM特定地址的数据→RAM将结果传入寄存器→指令地址寄存器+1
    • 用检查是否是 LOAD_A指令的电路,可以打开RAM的“允许读取线”,把地址14传过去
    • RAM拿到地址14的值:0000 0011(十进制的3)
    • 因为是LOAD_A指令,需要把这个值只放到寄存器A,其他寄存器不受影响,所以需要一根线,把RAM连到4个寄存器,用“检查是否LOAD_A指令的电路”启用寄存器A的“允许写入线”
    • 成功把RAM地址14的值,放到了寄存器A,指令完成,关掉线路拿下一条指令
    • “指令地址寄存器”+1,"执行阶段"就此结束

  • 取指令--->解码--->执行

3)必要组件:

不同指令由不同逻辑电路解码,这些逻辑电路会配置CPU内的组件来执行对应操作,具体解码电路比较繁琐

把“控制单元”包成一个整体

  • ADD指令举例1000 0100:ADD后4位,2位2位分别代表2个寄存器,
    • 2位可以表示4个值(00--寄存器A;01--寄存器B;10--寄存器C;11--寄存器D)
    • 前2位代表的寄存器(寄存器B)的值,加到后2位代表的寄存器(寄存器A)里
    • 执行该指令,需要整合ALU,“控制单元”复制选择正确的寄存器作为输入,并配置ALU执行正确的操作
    • 对于ADD指令,“控制单元”会启用寄存器B,作为ALU的第一个输入;还启用寄存器A,作为ALU的第二个输入,ALU可以执行不同操作所以控制单元必须传递ADD操作码告知ALU执行什么操作。
    • 结果应该存到寄存器A
      • 但不能直接写入寄存器A,这样新
  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值