目录
- 一. 计算机的发展
- 二. 计算机硬件的基本组成
- 2.1 早期冯诺依曼机
- 2.2 现代计算机的结构
- 三. 各硬件的工作原理
- 3.1 主存储器的基本组成
- 3.2 运算器的基本组成
- 3.3 控制器的基本组成
- 四. 计算机的工作过程
\quad
一. 计算机的发展
计算机系统 = 硬件 + 软件
\quad
第一台电子计算机:ENIAC(1946)
\quad
硬件的发展
发展阶段 | 逻辑元件 | 优缺点 |
---|---|---|
第一代 | 电子管 | 体积超大,耗电量超大 |
第二代 | 晶体管 | 体积、功耗降低, 出现面向过程的程序设计语言:FORTRAN,有了操作系统雏形 |
第三代 | 中小规模集成电路 | 计算机主要用于科学计算等专业用途,高级语言迅速发展,开始有了分时操作系统 |
第四代 | 超大规模集成电路 | 开始出现 “微处理器”、微型计算机、个人计算机(PC)萌芽, 操作系统:window、MacOS、Linux |
\quad
微处理器的发展
微处理器的定义:
微处理器是由一片或少数几片大规模集成电路组成的中央处理器。这些电路执行控制部件和算术逻辑部件的功能。
微处理器能完成取指令、执行指令,以及与外界存储器和逻辑部件交换信息等操作,是微型计算机的运算控制部分。它可与存储器和外围电路芯片组成微型计算机。
微型计算机的发展以微处理器技术为标志
机器字长: 一次整数运算所能处理的二进制位数
\quad
\quad
\quad
故事是这样的:
肖克利发明了晶体管, 创建了公司卖晶体管
后来那八个人慕名加入了肖克利公司
由于肖克利管理公司能力欠佳, 那八人离开了肖克利公司,
被称为八叛徒的他们创立了仙童半导体公司
…
\quad
摩尔定律
摩尔定律揭示了信息技术进步的速度, 集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,整体性能也将提升一倍
也就是说
就是说我现在买了个2000元的晶体管, 过了18个月后,还用两千元就可以买到性能是之前两倍的晶体管
\quad
计算机目前的发展趋势
“两极分化”:
1.是微型计算机向更微型化、网络化、高性能、多用途方向发展(智能手表,手机)
2.是巨型机向更巨型化、超高速、并行处理、智能化方向发展(神威.太湖之光)
\quad
二. 计算机硬件的基本组成
\quad
\quad
2.1 早期冯诺依曼机
\quad
“存储程序” 的概念是指将指令以二进制代码的形式事先输入计算机的主存储器, 电脑再一条一条的去执行, 而不是像之前的每执行一条程序就要手动接线
\quad
\quad
程序指令的解析是由控制器来决定的
控制器指挥程序运行
\quad
在计算机系统中, 软件和硬件在逻辑上是等效的
Eg: 对于乘法运算, 可以设计一个专门的硬件电路实现乘法运算, 也可以用软件的方式, 执行多次加法运算来实现
软件和硬件都可以实现某个功能
软件实现的话,性能更低, 当然成本也更低
硬件实现的话(可以设计运算器的结构),性能更高, 成本也更高
效率低的原因就是输出设备要从存储器里取出数据还需要通过运算器来完成
以运算器为中心
\quad
2.2 现代计算机的结构
\quad
现代计算机以存储器为中心
CPU=运算器+控制器
需要注意的是: 主机=内存+CPU, 而不是包含风扇和其他的
主存就是内存, 辅存是机械硬盘和固态硬盘
\quad
\quad
\quad
三. 各硬件的工作原理
\quad
3.1 主存储器的基本组成
MAR是地址寄存器
MDR是数据寄存器
CPU的读写操作与我们取快递类似
存储单元: 每个存储单元存放一串二进制代码
存储字长:存储单元中二进制代码的位数
存储字(word):存储单元中二进制代码的组合
(一个存储字可代表一个二进制数,也可代表一串字符,如存储字为0011011001111101,既可表示为由十六进制字符组成的367DH(ASCII码),又可代表16位的二进制数,此值对应十进制数为13 949,还可代表两个ASCII码:“6”和“}”。一个存储字还可代表一条指令。)
存储元:即存储二进制的电子元件,每个存储元可存1bit
例如:
MAR=4位
\quad
->总共可以有24个存储单元
MDR=16位
\quad
->每个存储单元可以存放16bit
\quad
1字节(Byte) = 8位(bit)固定的,注意B与b的区别
在16位的系统中(比如8086微机) 1字 (word)= 2字节(Byte)= 16(bit)
在32位的系统中(比如win32) 1字(word)= 4字节(Byte)=32(bit)
在64位的系统中(比如win64)1字(word)= 8字节(Byte)=64(bit)
\quad
3.2 运算器的基本组成
\quad
运算器:用于实现算术运算(加减乘除)、逻辑运算(与或非)的
ACC(累加器):用于存放操作数或运算结果
MQ(乘商寄存器):在乘除运算时,用于存放操作数或运算结果
X(通用操作数寄存器):用于存放操作数
ALU(算术逻辑单元):通过内部复杂的电路实现算术运算、逻辑运算,是运算器的核心部件
\quad
3.3 控制器的基本组成
CU(控制单元):分析指令,给出控制信号,是控制器的核心部件
IR(指令寄存器):存放当前执行的指令
PC(程序计数器):存放下一条指令地址,有自动加1功能
\quad
\quad
四. 计算机的工作过程
\quad
\quad
以c语言为例 运行y=a*b+c的过程
指令由操作码和地址码构成
这个是16bit的指令(有16位二进制)
\quad
寄存器名加上括号的意思是寄存器里面的内容(比如(MAR=0))
Memory(存储器)
程序计数器PC指向第一条指令, 主存地址为0, PC存放的内容需要通过地址总线传送到MAR(地址寄存器)中, 也就是说控制器要向主存地址要0号地址的指令,而且是读操作, 那么MAR就去存储体里面找出0号地址所对应的指令取出来放到MDR(数据寄存器)
\quad
\quad
IR为指令寄存器, MDR的指令传到IR里面
\quad
IR会把操作码送到CU控制单元里面, CU就会分析这个操作码, 结果是取数操作, 所以把这条指令的地址码对应的数据取出来放进ACC寄存器中(地址码所对应的十进制数是5, 那么就在主存地址5中拿到原始数据是a=2,然后a=2就会被送到ACC累加寄存器中)
第1~4步是取指令的过程
第5步是分析指令
第6~9步是执行取数指令
在完成取指令之后pc会自动加1
MQ(乘商寄存器)
被乘数a先被放在X(通用寄存器), b被放在MQ里面, 最后CU会让ALU(算数逻辑单元)进行乘法运算, 最后把乘得的结果放到ACC里面
如果ACC放不下, 就会把结果的低位放在MQ里面
ACC存放加数, X存放被加数
存数指令, 会把ACC里面的值传到MDR,而且MAR里面是存数指令地址为8, CU会告诉存储体为写操作, 于是存储器就会根据MAR里的地址把MDR的值存在存储体里
CPU区分指令和数据的依据: 指令周期的不同阶段
现在的计算机通常把MAR、MDR也集成在CPU内
科普:CPU是超大规模的集成电路的一种,而集成电路都可以叫做芯片
链接: 王道考研计算机组成原理