计算机组成原理概述(上)


盲目的计算机组成原理的学习是十分痛苦滴,那么我们究竟要学习计算机组成原理的什么呢?首先计算机组成原理主要描述的是计算机的内部结构、包括运算器、存储器、控制器、输入输出五大部件,它讲述了数据怎么存储和运算,指令系统又是什么,CPU怎么运转。

很多同学会好奇,我们为什么要学习计算机组成原理呢?学习计算机组成原理可以更好地理解软硬件之间的关系。它是软件和硬件之间的一座桥梁,既隔离了软件和硬件,也提供了让软件无需关心硬件,就能直接操作硬件的接口。学习计组,会对整个软件开发领域的全貌有一个系统的了解。

学习计算机组成原理时,可以抓住《一个中心,两个基本点》,可以分为两层学习,底层是数字电路,上层是功能结构。心里始终要带着一个核心问题:《程序是如何在计算机里跑起来的?》一层层深入、一层层展开就会收获更快。

那么接下来就开始我们的计算机组成原理学习之旅吧!


1.计算机发展历程

计算机发展分为硬件发展软件发展。下面我们将分别展开论述。

1.1. 硬件发展

计算机硬件发展主要经历了四代。分别为:
1)电子管时代(1946-1957)特点:逻辑元件采用电子管,使用机器语言进行编程,主存用延迟线或磁鼓存储信息。
2)晶体管时代(1958-1964)特点:逻辑元件采用晶体管,主存使用磁芯存储器,开始出现高级语言,有了操作系统的雏形。
3)中小规模集成电路时代(1965-1971)特点:逻辑元件采用中小规模集成电路;半导体存储代替磁芯存储,高级语言和操作系统迅速发展,开始有了分时操作系统。
4)超大规模集成电路时代(1972至今)特点:逻辑元件采用大规模集成电路和超大规模继承电路,产生了微处理器;例如并行、流水线、高速缓存、虚拟存储等概念都产生。

1.2. 计算机元件更新换代

摩尔定律:每隔18个月性能便会增加一倍。
半导体存储发展:1KB、4KB、16KB、64KB、256KB、1MB等等。
微处理器发展:Intel8008(8位),8086(16位)等等,这里的位数指的是机器字长(关于机器字长在稍后进行具体介绍,大家不要急哦~)

1.3. 计算机软件发展

计算机软件的发展受到应用和硬件的推动和制约。软件技术发展大致可分为三个不同时期:
1)软件技术发展早期,主要使用机器语言与汇编语言。(上世纪50-60)
2)结构化程序和对象技术发展时期,主要是高级语言的发展(上世纪70-80)
3)软件工程技术发展时期,这一阶段对于各种软件有了长足的发展,特别是操作系统(上世纪90至今)

大家现在可以回想一下,硬件发展有几个时期?软件发展有几个时期?计算机迭代的特点都有什么?

那么我们来做个题练练手吧
例:微型计算机的发展以____技术为标志?
答:微处理器

你有没有答对呢?


2. 计算机系统层次结构

计算机系统中硬件和软件共同构成一个完整的整体。硬件一般是指有形的物理设备,是计算机系统中实例物理装置的总称。软件一般是指运行在硬件上的程序和相关的数据和文档。

计算机系统性能的好坏,很大程度是由软件的效率和作用来表征的,但是软件性能的发挥又离不开硬件的支持。如果某一个功能,既可以用软件实现、又可以用硬件实现,则称为软硬件在逻辑功能上是等价的。 在设计计算机系统时,要进行软硬件功能的分配,一般来说如果一个功能使用频繁且硬件实现较为理想,使用硬件可以提高效率。

软件和硬件的功能是等效的,但是软件和硬件的功能不是等价的。

介绍完了软件和硬件的发展历程,我们接下来就详细介绍一下它们都是什么吧!

2.1. 计算机硬件

一、冯诺依曼机思想
要说到计算机的发展,冯诺依曼绝对是绕不开的,那他的贡献究竟是什么?
——他提出了“存储程序”的概念,也正是“存储程序”的思想,才奠定了现代计算机的基本结构,以此概念为基础的各类计算机统称为冯诺依曼机。

它的基本设计思想是:存储程序和程序控制
存储程序的基本思想:将事先编好的程序和原始数据送到主存后才能执行,程序启动执行后无需操作人员干预,计算机自动逐条执行指令直到程序结束。

它的主要特征是:
1)采用“存储程序”的工作方式
2)计算机硬件系统有五大部件,存储、运算、控制、输入、输出
3)指令和数据以同等地位存储在存储器中,形式上没有区别
4)指令和数据均用二进制码表示,指令由操作码和地址码组成,操作码指出操作类型,地址码指出操作数的地址。

二、计算机的功能部件
(1)输入输出
输入设备:主要将程序和数据以及其能够识别和接收的信息形式输入计算机。最常用的便是键盘鼠标摄像机等。
输出设备:将计算机处理结果以人们所能接收的形式输出。最常见的是显示器、打印机。

IO设备是计算机与外界联系的桥梁,是计算机中不可缺少的重要组成部分。

(2)存储器
存储器 = 主存储器(内存) + 辅助存储器(外存)
主存:CPU能够直接访问存储
外存:帮助主存记忆更多的信息。外存必须调入主存后才能被CPU访问

主存的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式。

主存组成存储体控制电路地址寄存器MAR数据寄存器MDR地址译码五部分组成
在这里插入图片描述
存储体:由许多存储单元组成,每个存储单元包含若干存储元件。每个存储元件可以寄存一位二进制代码0/1

存储体相当于一栋大楼,存储单元相当于一个寝室,存储元件相当于寝室中的单个床位。0代表无人,1代表有人。

存储单元:以8位二进制作为一个存储单元,也就是一个字节

一个存储单元可以存储一串二进制代码,这串二进制代码称为一个存储字,代码位数为存储字长。指令(操作码+地址码)就存放在存储单元中。
存储单元是有编号的,按地址访问,这些地址都是二进制的形式。

MAR地址寄存器:保存了存储单元的地址,位数反映了存储单元的个数。MAR长度与PC长度相等。

例如:4位地址寄存器,可以表示2^4=16个存储单元
MDR数据寄存器:保存了要从某单元写入或者独处的数据(代码),位数反映了存储字长。
例如:8位数据寄存器,数据就是8位,存储字长为8位。

注:MAR和MDR虽然是存储器的一部分,但是在现代计算机中却存在于CPU中,同时Cache也在CPU中。

主存与CPU的联系
要想完成一个取或者存的操作,CPU还得给主存各种控制信号(读写、地址译码驱动)

现代计算机中
1)主存由半导体集成电路构成
2)驱动、译码器和读写电路均在存储芯片中
3)MAR和MDR在CPU芯片中
4)存储和CPU通过总线连接
5)地址总线用来指出存储单元地址号。在这里插入图片描述

存储体存放二进制信息
地址寄存器MAR存放访问地址
经过地址译码后找到对应存储单元
数据寄存器MAR将存储器中读写的信息暂时保存
之后时序逻辑进行产生存储器操作的所需各种信号。

(3)运算器
运算器是计算机的执行部件,主要进行算术运算和逻辑运算。
运算器 = 算术逻辑单元 + 通用寄存器组 + 状态寄存器
根据运算器内部总线的连接方式,可以分为:单总线、双总线以及三总线结构。

算术逻辑单元(Arithmetic and Logical Unit - ALU):中央处理单元的一部分,对计算机指令字中的操作数执行算术和逻辑运算。

通用寄存器组GPRs:用于暂存操作数和中间结果。例如累加器ACC、乘商寄存器MQ、操作数寄存器X、变址寄存器IX、基址寄存器BR等,其中前三个是必须具备的。

程序状态寄存器PSW:也称为标志寄存器,用于存放ALU运算得到的一些标志信息或者处理机的状态信息,例如结果是否溢出、有无进位或者错位、结果是否为负等。

(4)控制器
控制器是计算机的指挥中心,由其指挥各部件自动协调地进行工作,它负责决定执行程序的顺序,给出执行指令时机器各部件需要的操作控制命令。

控制器 = 程序计数器PC + 指令寄存器IR + 控制单元CU

程序计数器PC:用来存放当前欲执行指令的地址。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,同时PC中的地址或自动加1或由转移指针给出下一条指令的地址。它与主存的MAR之间有一条直接通路。

指令寄存器IR:用来存放当前的指令,内容来自主存的MDR。指令中的操作码OP(IR)送至CU,用以分析指令并发出各种微操作命令序列;地址码Ad(IR)送往MAR,用以取操作数。

一般将运算器和控制器集成到同一个芯片上,称为中央处理器(CPU)。CPU和主存共同构成主机,而主机之外的其他硬件(外存、IO设备)等统称为外部设备,简称外设。

CPU = ALU + 通用寄存器组GPRs + 标志寄存器 + 控制器 + 指令寄存器IR + 程序计数器PC + MDR + MAR
在这里插入图片描述
CPU和内存之间通过一组总线相连,总线中有3组信号线:地址、控制和数据。
MAR中的地址信息直接送到地址线上,用于指向读写操作的主存存储单元;
控制线中有读写信号,指出数据是从CPU写入主存还是从主存读出到CPU;
根据读写操作来控制将MDR中的数据直接送到数据线还是将数据线上的数据接收到MDR中

CPU的一般流程便是:
1)取指令:CPU的控制器从内存读取一条指令并放入指令寄存器。指令的格式一般张这个形状:
2)指令译码:指令寄存器中的指令经过译码决定进行何种操作、操作数的位置等。
3)执行指令:有两个主要操作:取操作数 + 进行运算
4)修改指令计数器:决定下一条指令的地址

2.2. 计算机软件

(1)系统软件和应用软件
软件按照功能分类,可以分为系统软件和应用软件
系统软件:操作系统OS、数据库管理系统DBMS、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务型程序等
应用软件:用户为解决某个应用领域中的各类问题而编制的程序,例如工程设计程序、数字处理程序等。

(2)三个级别的语言
1)机器语言:二进制代码语言,计算机唯一可以直接识别和执行的语言。
2)汇编语言:用英文单词缩写代替二进制的指令代码,方便记忆和标识。需要经过汇编程序翻译成机器语言后,才能在执行。
3)高级语言:C,C++,Java等方便程序设计人员编写大型程序。需要经过编译,成为汇编,之后经过汇编得到机器语言

高级语言最终都需要转换成机器语言,这时就需要翻译程序:
1)汇编程序(汇编器):将汇编语言翻译成机器语言
2)解释程序(解释器):将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行
3)编译程序(编译器):将高级语言翻译成汇编或者机器语言程序。

未完待续…

  • 17
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小社恐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值