[toc]
最近在bilibili上看到一套视频《计算机科学速成课》,这套教程我觉得很适合新手拿来做当做计算机系列的科普视频,评价也非常的好。
1947年12月16日,晶体管之父––威廉·肖克利和约翰·巴顿,沃特·布拉顿在贝尔实验室共同研制出世界上第一块晶体管,人类在信息技术方面展开了一场潜移默化的变革,只不过这场革命在多年以后才会爆发。 1971年11月15日,英特尔公司造出了世界上第一块CPU––4004微处理器,它的晶体管数只有大概2300颗晶体管之间的距离只有10纳米,能处理4bit的数据,频率有108KHZ,其性能与现在的CPU进行比较,简直就是蜗牛和跑车的速度比较,但是,它却具有极大的跨时代意义。 具体的介绍可以看知乎的这篇文章《CPU的历史》。
- 机器指令:其实就是二进制,CPU可以直接识别并执行。(早期程序员就是用0、1数字来写程序不得不说真牛逼。)
- 汇编指令:为了方便阅读和记忆所以就有了汇编指令(想想也是,你用0和1写个程序不小心漏了个0,这时候要怎么找bug)
- 指令:指令通常由操作码和地址码(操作数)两部分组成
- 指令集:每种CPU都有自己的汇编指令集。
汇编语言由3类指令组成。
- 汇编指令
- 伪指令:没有对应的机器码,由编译器执行,计算机并不执行
- 其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
编译器:够将汇编指令转换成机器指令的翻译程序每一种CPU都有自己的汇编指令集。 在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。
存储器用来存放CPU执行的指令和数据,也就是我们平时说的“内存”或者“硬盘”。
- 指令和数据:在计算机中所有指令和数据都是0和1
- 存储单元: 一个存储器有128个存储单元
- 随机存储器(RAM)在程序的执行过程中可读可写,必须带电存储
- 只读存储器(ROM)在程序的执行过程中只读,关机数据不丢失
;要把一个二进制看成数据或指令,由程序员来确定,根据汇编代码上下文来确定。
1000100111011000 -> 89D8H (数据)
1000100111011000 -> mov ax,bx(指令)
- 地址线
- 数据线
- 控制线
CPU是通过地址总线来指定存储单元的。 假设:一个CPU有10根地址总线,那么他的寻址能力就是2^10次方,1024 10位二进制数 如下图。
CPU通过数据总线来与内存或者其他设备传输数据。 比如:CPU只有8根数据总线,那么他一次最大只能传送8位也就是一个字节(0-255)(0x00-0xFF)
CPU对外部设备的控制就是通过控制总线进行的。 这是一个总称:比如CPU对内存的读,是通过“读信号输出”的控制线进行的,那么写就是“写信号输出”的控制线。 CPU有多少根控制总线,那就意味着CPU提供了对外部器件的多少种控制