发展简史
计算机发展的四个阶段
第一个阶段1946-1957年 电子管计算机
- 第二次世界大战是电子管计算机产生的催化剂
- 英国为了解密德国海军的密文
- 埃尼阿克ENIAC
- 战争使用了飞机和火箭
- 打的准则需要计算射击参数
- 射击参数需要几千次运算才能计算起来
- 18000多个电子管
- 运行耗电量150千瓦
- 重量达30吨,占地1500平方英尺
- 不足:
- 集成度小,空间占用大
- 功耗高,运行速度慢
- 操作复杂,更换程序需要接线
第二个阶段1957-1964年 晶体管计算机
贝尔实验室的三个科学家发明晶体管(跨时代的)
- 全世界第一台晶体管计算机TX-0 诞生于林肯实验室
- 全世界第一台晶体管计算机PDP-1 4k内存,每秒20 000指令 ,配备512x512的显示器
优势:
- 集成度相对较高,空间占用相对小
- 功耗相对较低,运行速度较快
- 操作相对简单(一个科学家就能操作),交互更加方便(显示器)
第三个阶段1964-1980年 集成电路计算机
背景
德州仪器的工程师发明了集成电路(IC)
- 计算机变得更小
- 功耗变得更低
- 计算速度变得更快
上述条件让计算机走入了寻常百姓家
第四个阶段1980-现在 超大规模集成电路计算机
- 一个芯片集成了上百万的晶体管
- 速度更快,体积更小,价格更低,更能被大众接受
- 用途丰富:文本处理、表格处理、高交互的游戏与应用
- 乔布斯的Apple和Apple二代
第五个阶段:未来计算机
以蛋白质分子作为主要原材料
生物计算机
- 体积小,效率高
- 不易损坏,生物级别的自动修复
- 不受信号干扰,无热损耗
量子计算机
- 2013.5 谷歌和NASA发布了D-Wave Two
- 2017.5 中国科学院宣布制造出光学量子计算机
- 2019.1 IBM展示了世界首款商业化量子计算机
- 腾讯在2017组建了量子实验室
- 阿里在2017年成立了达摩院
微型计算机(PC)的发展
受限于性能
- 单核cpu
- 1971->1973 500KHz频率的微型计算机(字长8位)
- ->1978 高于1MHz频率(字长8位)
- ->1985 500MHz频率(字长8位)
- ->2000 高于1GHz频率(字长32位)
- ->现在 2GHz频率(字长64位)
摩尔(intel 创始人)定律
集成电路的性能,每18-24个月就会提升一倍
多核CPU
- (2005)intel奔腾系列双核CPU、AMD速龙系列
- (2006)intel酷睿四核cpu
- intel酷睿系列16核cpu
- intel至强系列56核cpu
分类
超级计算机
- 功能强大、运算速度快速,存储容量大的计算机
- 多用于国家高科技领域和尖端技术研究
- 标识他们运算速度的单位是TFlop/s
- 1TFlop/s=每秒一万亿次浮点计算
大型计算机
IBM Z9
- 又称大型机、大型主机、主机
- 具有高性能、可处理大量数据与复杂的运算
- 在大型机市场领域,IBM占领着很大的份额
迷你计算机 (普通服务器)
工作站
微型计算机
个人计算机,是最普通的一类计算机
体系结构
冯洛伊曼体系
概念
将程序指令和数据一起存储的计算机设计概念结构
诞生背景
结构
- 必须有一个存储器
- 必须有一个控制器
- 必须有一个运算器
- 必须有输入设备
- 必须有输出设备
现代计算机都是冯洛伊曼机
作用
- 能够把需要的程序和数据送至计算机中
- 能够长期记忆程序、数据、中间结果及最终运算结果的能力
- 能够具备算术、逻辑运算和数据传送等数据加工处理的能力
- 能够按照要求将处理结果输出给用户
早期冯洛伊曼机示意图
缺点
- 将cpu和存储器分开,不是一个好的选择,会导致CPU和存储器速率之间的问题无法调和(cpu速度是非常快的,但是存储器读取速度相对而言较慢)
现在计算机的结构
概念
本质上还是冯洛伊曼体系中的计算机,但是在其体系结构上做了一些修改,将存储器放在了CPU内部
存储器指的是高速缓存L1、L2、L3、寄存器(通用寄存器、特殊寄存器、指令寄存器)
以存储器为核心的结构
层次与编程语言
程序翻译与程序解析
问题:
- 为什么需要程序翻译与程序解析?
将人类语言解析为计算机语言,需要进行语言之间的转换
什么是程序翻译?
使用高级的计算机语言L1 编写的代码,需要通过编译器的编译之后才能运行,编译器是将高级语言的代码生成等价的低级计算机语言L0(计算机实际执行的语言),这个编译生成等价的低级语言代码的过程就是程序翻译。
什么是程序解析?
使用低级语言编写一个程序(jvm是有c语言编写的),用高级语言(java语言编译生成字节码文件)作为输入,执行过程中由这个程序将字节码转换为汇编指令(机器指令),由计算机执行,这个过程就叫做程序解析(从字节码文件到汇编指令)
两个的异同
- 计算机执行的指令都是汇编指令
- 解释过程由低级语言编写的解释器去解释高级语言的代码
程序翻译、解释分别有哪些语言
程序翻译
C/C++
Object-C
Golang
程序解释
Python
Javascript
Php
翻译 + 解释
Java : java程序 -> 字节码文件 翻译 , 字节码文件-> 机器码(汇编指令) 解释
C#
计算机的层次与相关的编程语言
层次
硬件逻辑层
- 门、触发器等逻辑电路组成
- 属于电子工程的领域
微程序机器层
- 编程语言是微指令集
- 微指令所组成的微程序直接交由硬件执行
传统指令层
- 编程语言是CPU指令集(机器指令)
- 编程语言和硬件是直接相关
- 不同架构的cpu使用不同的cpu指令集
微指令 微程序 机器指令 之间的关系
- 一条机器指令对应一个微程序
- 一个微程序对应一组微指令
操作系统层
- 向上提供了简易的操作界面
- 向下对接了指令系统,管理硬件资源
- 操作系统是在软件和硬件之间的适配层
汇编语言层
- 编程语言就是汇编语言
- 汇编语言可以翻译成可直接执行的机器语言
- 完成翻译的过程的程序就是汇编器
计算单位
容量单位
- 物理层面,高低电平记录信息
- 理论上只认识0/1两种状态
- 0/1能够表示的内容太少了,需要更大的容量表示方法
0/1 称为 bit(比特位)
字节:1Byte=8bits
为什么网上买的移动硬盘500G,格式化之后就只剩465G了?
硬盘商一般用10进位标识容量,(500 * 1000 * 1000 * 1000)/(1024 * 1024 * 1024)约等于465G
速度单位
网络速度
网络常用单位为(Mbps)
100M带宽 = 100Mbps = 100Mbit /s
100Mbit/s = (100/8)MB/s = 12.5MB/s
cpu速度
- cpu速度一般体现为CPU的时钟频率
- 时钟频率的单位一般是赫兹(Hz)
- 主流CPU的时钟频率都在2GHz以上
- Hz其实就是秒分之一,它是每秒钟的周期性变动重复次数的计量
- Hz并不是描述计算机领域的专有单位
- 2GHz = 2 * 1000 * 1000 * 1000 Hz = 每秒20亿次