Crash Course Computer Science—笔记1

以下所有认知来自于b站上的“Crash Course Computer Science”,是趣味科普计算机相关知识的一门课程(由youtube——CrashCourse频道出品,这个频道两岁了,创建此频道的哥俩旨在创造一些对人们有用的教育内容),之前有看王垠在着手写一本科普计算机的书,力求将计算机最本质的东西以白话形式讲明白,看了这套视频以后,我觉得书这种形式还是太单调了,比不上视频这种可以同时调动多种感官的形式来得生动,易于理解,而且传播快速。这套视频制作精良,里面的动画和配色(原谅我只能看到表面)时刻吸引着我,生怕眨眼一秒都会错过点细节,主讲人饱满的情绪让我一个哈欠都不会打,由此可见整个团队的心血,最后由衷感谢CrashCourse字幕组,让我可以在语境中理解很多中英文对应不上的专业词语(我才不会说我没有字幕根本看不懂)。

视频地址:

https://www.bilibili.com/video/av21376839/?p=7

.计算机的起源与发展简介

公元前2500年

先看计算的起源,人们早早就对计算产生了需求,早在,人们就发明了算盘,为什么要发明算盘?因为当时的社会规模已经超出了人们心算的能力,算盘的作用其实是将大脑的算力解放(工具的发明要么是解放人的体力,要么是解放人的智力),随后发明了度量各种别的可度量事物的计算设备,比如星盘算经纬度,时钟算日出,算潮汐。

 

1822年

charles babbage研究出了差分机制造方法,由于硬件限制,没有制造出来(后人依据草稿又造一台而且好用),但是在研究过程中有了制造分析机的灵感,分析机可以做很多事,不只是一种特定运算,所以是首个通用计算机(之前的都是专用的),甚至可以输入数据进行一些列的计算,这一些列的计算就是程序,程序是一个划时代的概念,而Ada由于为分析机写了第一个程序,被公认为第一个程序员,她还预言以后一定会有一门语言为分析而生。

 

1890年

人口越来越多,要进行人口普查费时费力费钱,而且往往普查时间太长,出来的结果与现实状况不符,没有意义了,这样的情况催生了机器的产生,打孔卡片制表机,在纸上打孔,然后把纸放进机器里,机器会根据所打的孔,自己统计符合条件的人数,比如男女各有多少,之后再通过纸把统计结果输出来。这就是后来计算机一开始采用的输入和输出模式。(后来制表机器公司与其他机械公司合并成立了IBM=international business machines)

 

1900

人口爆炸以及全球贸易(社会规模大幅度增长)导致数据大量增长,

1904-1906

真空管,二极管,三极管可代替继电器,开闭速度快,但像灯泡一样易碎,贵

1940

真空管成本降低,政府负担得起,就应用于计算机(计算机从机电转向电子)

1941

阿兰图灵设计Bombo,用来破解纳粹的英格玛通讯加密设备(是一台解密码机不是计算机)

1943

 巨人一号第一次用真空管制造的计算机,用于破解纳粹通信

1944

Harverd mark I最大的计算机之一,IBM给二战同盟国造的,是服务于曼哈顿计划的(政府和军方)。构件使用的是机械继电器(作用就是开关,控制电路开闭),速度慢,齿轮会磨损,故障率很大,甚至一直小虫都会因其故障(bug)。

1946

宾夕法尼亚大学, 世界上第一个真正通用的,可编程的,电子计算机,成本还是很高,而且很容易坏

1947

贝尔实验室,发明了晶体管,固态,小,速度快,很多晶体管半导体的开发在加州位于旧金山和圣荷西之间,后来被称为硅谷(因为材料大多是硅),晶体管创始人也搬过去了,创立了肖克利半导体,里面的员工后来创立了仙童半导体,里面的员工创立了Intel(最大计算机芯片制造商)。

.为啥采用二进制

二进制的本质是电路开关的两种状态(真和假,通路或断路),一开始其实有三进制或者五进制的(多种状态表示),但是进制越多,信号越不容易被区分,而且有一整个数学分支存在,叫布尔代数(George Boole,19世纪自学成才的英国 数学家,是布尔Boolean名字的由来),专门处理真和假的问题,法则和运算都给你处理好了,拿过来直接就能用。

 

Boolean代数里面常用的操作:逻辑与的本质是物理上的串联,逻辑或的本质是物理上的并联,这些操作在计算机里面由最底层的电路(组合晶体管,物理层面)来实现,操作只是电路的高一层次抽象。(抽象允许我们在高层思考而不必在意底层细节,抽象的本质是把复杂包装起来,只留一个简答的接口)

 

ASCLL读/asgi/

 

.算术逻辑单元

算术逻辑单元(ALU)计算机的计算大脑。是计算机里负责运算的组件,包括一个算数单元(加减法,增量计算)和一个逻辑单元(逻辑与或非,判断正负)。

ALU的表示法

                   

 

1970 第一个被封装在单个芯片内的完整ALU,Intel 74181

 

.寄存器和内存

  1. 存储的作用:因为算出来扔掉就没意义了,也许要做连续的操作,所以要存起来。
  2. 寄存器的本质:现在你这存一小下下,我马上就拿走
  3. 锁存器的结构如下,一组锁存器构成一个寄存器

                    

 

(当允许写入线打开时,数据可以输入,当允许写入线被关闭时候,数据即可存在data out 里面不允许被改变了,每个寄存器只能存一个数,这个数是多少位,寄存器的位宽就是多少,比如16位的寄存器本质是由16个二进制单元位构成的)

 

  1. 内存结构(太喜欢他们做的图了,又好看又明了)

        

        

        

        

 

内存的地址是由位数决定的,位数越大,能表示的门牌号(地址)越多,内存数量也就越大,所谓的内存大。

内存的重要特性是可以随时访问任何位置,RAM

 

.CPU(第七集)

  1. CPU的工作是负责处理程序,程序是由一条条操作构成的,操作就是指令(因为它们指示计算机要做什么)
  2. 构建一个CPU

                  

 

寄存器:临时存储和操作数据

指令地址寄存器:追踪程序运行到哪条指令了(存下指令的地址)

指令寄存器:存当前是什么指令(指令的内容)

时钟:以精准的节奏释放电信号,控制单元会用这个信号推进CPU的内部操作

(取指令-解码-执行,这三个操作算一个步骤,步骤的执行速度叫做时钟速度,就是需要多长时间才可以执行完这一步,)

ALU:用来计算

CLU:用来控制

3.运行程序

第一阶段:取址阶段(fetch phase)

第二阶段:解码阶段(decode):对照指令表,把01串翻译成要做的实际操作,并找到被操作数,这个阶段由控制单元完成,控制单元底层也是电路
 

第三阶段:执行阶段:去操作数的地址处取出操作数放到寄存器里(寄存器是由操作所指定的Load_A就是寄存到寄存器a里)

执行过后,把指令地址寄存器加一,就完成了这条指令的执行,准备去执行下一条了

猜你喜欢

转载自blog.csdn.net/Ria_Ria/article/details/85050216