【计算机组成原理】第一章、计算机系统概述

思维导图

在这里插入图片描述

1.1计算机发展历程

1.1.1计算机硬件的发展

计算机系统=硬件+软件
计算机硬件的发展:

  • 第一代:电子管
  • 第二代:晶体管
  • 第三代:小规模集成电路
  • 第四代:大规模集成电路

经历了4代,计算机的速度越来越快,体积越来越小。
发展趋势:更微型、多用途;更巨型、超高速。

摩尔定律:集成电路上的晶体管数量每18个月就会翻一番,所以每18个月计算机的处理效率就会提高一倍

1.1.2计算机软件的发展

计算机软件技术的发展,促进计算机系统的发展

计算机语言的发展经历了面向机器的机器语言和汇编语言、面向问题的高级语言。其中高级语言的发展真正促进了软件的发展,它经历了从科学计算和工程计算的FORTRAN、结构化程序设计PASCAL到面向对象的C++和适应网络环境的Java

同时,直接影响计算机系统性能提升的各种系统软件也有了长足的发展,特别是操作系统,如Windows、UNIX、Linux等

1.1.3计算机的分类与发展方向

可以分为:

  • 电子模拟计算机和电子数字计算机

数字计算机又可以按照用途分为:

  • 专用计算机和通用计算机
  • 通用计算机又分为:巨型机、大型机、中型机、小型机、微型机和单片机6类

按照指令和数据流可以分为:

  • 单指令流和单数据流,即传统的冯诺依曼体系结构
  • 单指令流和多数据流系统,包括阵列处理器和向量处理器系统
  • 多指令流和单数据流系统,这种计算机实际上不存在
  • 多指令流和多数据流系统,包括多处理器和计算机系统

1.2计算机系统层次结构

1.2.1计算机系统的组成

计算机系统由硬件系统和软件系统共同构建起来

1.2.2计算机硬件的基本组成

1、早期的冯诺依曼机

美籍匈牙利科学家冯·诺依曼最先提出“程序存储”的思想,并成功将其运用在计算机的设计之中,根据这一原理制造的计算机被称为冯·诺依曼结构计算机。由于他对现代计算机技术的突出贡献,因此冯·诺依曼又被称为“现代计算机之父”。

什么是存储程序原理?按照此原理,计算机应具有哪几大功能?
程序存储:指令以代码的形式事先输入到计算机的主存储器中,然后按照其在存储器中的首地址执行程序的第一条指令,以后就按照该程序的规定顺序执行其他指令,直到程序执行结束。即按地址访问并顺序执行指令。

计算机按照此原理应该具有5大功能:数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能

冯诺依曼体系结构特点

  • 计算机硬件系统由五大部分组成:运算器、存储器、控制器、输入设备、输出设备
  • 指令和数据同等地位存于存储器,可按地址寻访
  • 指令和数据以二进制形式表示
  • 指令由操作码和地址码组成
  • 存储程序
  • 以运算器为中心

早期的冯诺依曼机以运算器为中心,且是单处理机,最根本的特征是采用“存储程序”原理,基本工作方式是控制流驱动方式

在这里插入图片描述

2.线代计算机的组织结构
在这里插入图片描述

3、计算机的功能部件
主机:主存、运算器、控制器
在这里插入图片描述
五大部分:

  • 输入设备:是指将外部信息以计算机能读懂的方式输入进来,比如键盘、鼠标等
  • 输出设备:就是将计算机处理的信息以人能接受的方式输出出来,比如显示屏、打印机
  • 存储器:存储器分为主存储器(内存储器,CPU能直接访问)和辅助存储器(外存储器,协助主存储器记忆更多的信息,辅助存储器的信息需要导入到主存储器中,才可以被CPU访问)

主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式(相连存储器既可以按照地址寻址,又可以按照内容寻址,为了与传统存储器区别,又称为内容寻址的存储器)

主存储器是由地址寄存器MAR和数据寄存器MDR,存储体,时序控制逻辑,地址寄存器存放访存地址,经过地址译码后找到所选的存储单元。数据寄存器,是存储器与其他部件的中介,用于暂存要从存储器读或者写的信息。时序控制逻辑用于产生存储器操作所需要的各种时序信号。在现代CPU,MAR和MDR是在CPU中的。

在这里插入图片描述

  • 运算器:计算机的运算单元,用于算术运算和逻辑运算
    运算器的核心单元是算术逻辑单元ALU

在这里插入图片描述

  • 控制器:控制器是计算机的指挥中心,由其指挥各部件自动协调进行工作,现代计算机将运算器和控制器集成到一个芯片上,合称为中央处理器,简称CPU。有程序计数器PC、指令寄存器IR和控制单元CU

在这里插入图片描述

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

如下图所示wield冯诺依曼模型机,CPU包含ALU、通用寄存器组、标志寄存器、控制器、指令寄存器IR、程序计数器PC、存储器地址寄存器MAR和存储器数据寄存器MDR。图中从控制器送出的虚线就是控制信号,可以控制如何修改PC以得到下一条指令的地址,可以控制ALU执行什么运算,可以控制主存是进行读操作还是写操作(读/写控制信号)
在这里插入图片描述

CPU和主存之间通过一组总线相连,总线中有地址、控制和数据3组信号线。MAR中的地址信息会直接送到地址线上,用于指向读/写操作的主存存储单元;控制线中有读/写信号线,指出数据是从CPU写入主存还是从主存读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中。

1.2.3计算机软件的分类

1.系统软件和应用软件
计算机软件,一般分为系统软件和应用软件

  • 系统软件包括操作系统,数据库管理系统,语言处理系统(比如编译器),分布式软件系统,网络软件系统,标准库系统,服务性系统(比如连接程序)
  • 应用软件包括各种科学计算类程序,工程设计类程序,数据统计与处理程序。

注意:数据库管理系统和数据库系统是有区别的。数据库管理系统是系统软件,而数据库系统一般是由数据库,数据库管理系统,数据库管理员和应用系统构成。所以只能说它里面有系统软件,但并不能说它为系统软件。

2、三个级别的语言

  • 机器语言:又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。
  • 汇编语言:汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为计算机的机器语言后,才能在计算机的硬件系统上执行。
  • 高级语言:高级语言是为了方便程序设计人员写出解决问题的处理方案和解题过程的程序,通常由高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。

由高级语言转换到汇编语言的过程叫编译,由汇编语言转换到机器语言的过程叫汇编,边翻译边执行的叫做解析。

机器语言是唯一可以控制cpu的语言,因为它的符号不利于人识别和书写,为了方便理解和记忆,将机器语言换一些通俗易懂的符号,这就变成了汇编语言。一般来说在编译器中高级语言先转换为汇编在转换为机器语言,也有直接转换为机器语言的。

1.2.4计算机的工作过程

2、指令过程的描述
IR存放当下将要执行的指令;PC存放下一条指令的地址
MAR存放将要访问的存储单元地址;MDR存放从存储单元取来的数据
地址译码器是主存的构成部分,不属于CPU;地址寄存器虽然一般属于主存,但是现代计算机中绝大多数CPU内集成了地址寄存器。

关于CPU存取速度的比较:寄存器(CPU内部)>Cache(高速的SRAM)>内存(SDRAM)

计算机的工作流程:首先PC将指令地址发送给MAR,MAR根据地址在存储体中找到指令数据存放在MDR中,之后MDR将指令存放在IR中,取指令结束,之后指令中的操作码进入CU中,地址码重复上述取指令步骤,将数据发送到ACC中,执行指令结束。追区分指令和数据的依据:指令周期的不同阶段。

1.3计算机性能指标

在这里插入图片描述

机器字长
计算机的位数(机器字长),表示计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数。计算机字长通常选定为字节(8位)的整数倍,通常是2,4,8倍。不同的计算机,字长可能不同。

机器字长、指令字长、存储字长的区别和联系是什么?

  • 机器字长:计算机能直接处理的二进制数据的位数,机器字长一般等于内部寄存器的大小,它决定了计算机的运算精度。
  • 指令字长:一个指令字中包含的二进制代码的位数。
  • 存储字长:一个存储单元存储的二进制代码的长度。等于MDR的位数,他们都必须是字节的整数倍。
  • 数据字长:数据总线一次能传送信息的位数,它可以不等于MDR的位数
    指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2次访存来取出一条指令,因此取值周期为机器周期的两倍;若指令字长等于存储字长,则取值周期等于机器周期。
    早期的计算机存储字长一般和机器的指令字长与数据字长相等,因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展,指令字长可变,数据字长也可变,但他们必须都是字节的整数倍。
    请注意64位操作系统是指特别为64位架构的计算机而设计的操作系统,它能够利用64位处理器的优势。但64位机器既可以使用64位操作系统,又可以使用32位操作系统。而32位处理器是无法使用64位操作系统的。

数据通路带宽
数据总线一次所能传送信息的位数
主存容量
MAR的位数反映存储单元的个数,如MAR为16位,表示存储单元为2^16=64K;若MDR为32位,则存储容量为 2 ^16x32
运算速度
吞吐量,指系统在单位时间内处理请求的数量;从用户观点看,它是评价计算机系统性能的综合参数!
响应时间,指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结构的等待时间。

CPU时钟周期。通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,每个动作至少需要1个时钟周期。

主频(CPU时钟频率)。机器内部主时钟的频率,是衡量机器速度的重要参数。

  • CPU周期又称为机器周期,由多个时钟周期组成。
  • 指令周期>CPU周期>时钟周期

CPI,即执行一条指令所需的时钟周期数
CPU执行时间,指运行一个程序花费的时间
CPU执行时间=CPU的时钟周期数/主频=(指令条数*CPI)/主频
CPU的性能取决于三个要素:主频、CPI、指令条数

IPS=主频/平均CPI,每秒执行多少条指令
MIPS=每秒执行多少百万条指令
MFLOAPS=浮点操作次数/(执行时间x10^6),即每秒执行多少百万次浮点运算
GFLOAPS=浮点操作次数/(执行时间x10^9),即每秒执行多少十一次浮点运算。
TFLOAPS=浮点操作次数/(执行时间x10^12),即每秒执行多少万亿次浮点运算。

1.4本章重点问题

1、计算机由哪几部分组成?以哪部分为中心?

计算机由运算器、存储器、控制器、输入设备以及输出设备五大部分构成,现代计算机通常把运算器和控制器集成在一个芯片上,合称中央处理器。
而在微处理器面世之前,运算器和控制器分离,而且存储器的容量很小,因此设计成以运算器为中心的结构,其他部件都通过运算器完成信息的传递。
随着微电子技术的进步,同时计算机需要处理、加工的信息量也与日俱增,大量的IO设备的速度和CPU的速度差距悬殊,因此以运算器为中心的结构不能满足计算机发展的要求。现代计算机已经发展为以存储器为中心,使IO操作尽可能地绕过CPU,直接在IO设备和存储器之间完成,以提高系统的整体运行效率。

2、主频高的CPU一定比主频低的CPU快吗?为什么?

衡量CPU运算速度的指标有很多,不能单独以某个指标来判断CPU的好坏。CPU的主频,即CPU内核工作的时钟频率。CPU的主频表示CPU内数字脉冲信号震荡的速度,主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公示能够定量两者的数值关系,因为CPU的运算速度还要看CPU的流水线的各方面性能指标(架构、缓存、指令集、CPU的位数、Cache的大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的CPU实际运算速度较低的现象。

3、翻译程序、汇编程序、编译程序、解释程序有什么差别?各自的特性是什么?

翻译程序是把高级语言源程序翻译成机器语言程序的软件。
翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,每次执行程序时,只需要执行目标程序,因此只要源程序不变,就无需重新翻译,请注意同一种高级语言在不同体系结构下,编译成目标程序是不一样的,目标程序与体系结构相关,但仍不是计算机硬件能够直接执行的程序。另一种是解释程序,它是将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直到所有源程序语句全部被翻译并执行完成。所以解释程序的执行过程是翻译一句执行依据,并且不会生成目标程序。
汇编语言也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。汇编语言是种面向机器的低级语言,是机器语言的符号表示,与机器语言一一对应。
编译程序与汇编程序的区别:若源程序是诸如C、C++、Java等高级语言,而目标语言是诸如汇编语言或机器语言之类的低级语言,则这样的一个翻译程序称为编译程序。若源语言是汇编语言,而目标语言是机器语言,则这样的一个翻译程序称为汇编程序。

4、不同级别的语言编写的程序有什么区别?哪种语言编写的程序能被硬件直接执行?

机器语言和汇编语言与机器指令对应,而高级语言不与指令直接对应,具有较好的可移植性。其中机器语言可以被硬件直接执行。

1.5常见问题

1、同一个功能既可以由软件实现又可以由硬件实现吗?

软件和硬件是两种完全不同的形态,硬件是实体,是物质基础;软件是一种信息,看不见、摸不着。但在逻辑功能上,软件和硬件是等效的。因此,在计算机系统中,许多功能既可以由硬件直接实现,又可以在硬件的配合下由软件实现。
一个最大的区别就是,硬件实现比软件实现的速度快很多,但是成本也高!所以,芯片在流片之后,如果发现bug可以用软件修复。
例如,乘法运算既可用专门的乘法器(主要由加法器和移位器组成)实现,也可以用乘法子程序(主要由加法指令和移位指令)来实现。

2、什么是透明性?是指什么都能看见吗?

在计算机领域,站在某类用户的角度,若感觉不到某个事物或属性的存在,即“看”不到某个事物或属性,则称为“对该用户而言,某个事物或属性是透明的”。这与日常生活中的“透明”概念(公开、看得见)正好相反。
例如,对于高级语言程序员来说,浮点数格式、乘法指令等这些指令的格式、数据如何在运算器中运算都是透明的;而对于机器语言或者汇编语言程序员来说,指令的格式、及其结构、数据格式等则不是透明的。
在CPU中,IR、MAR和MDR对各类程序员都是透明的。

4、机器字长、指令字长、存储字长的区别和联系是什么?

机器字长:计算机能直接处理的二进制数据的位数,机器字长一般等于内部寄存器的大小,它决定了计算机的运算精度。
指令字长:一个指令中包含的二进制代码的位数。
存储字长:一个存储单元存储的二进制代码的长度。等于MDR的位数,他们都必须是字节的整数倍。
数据字长:数据总线一次能传送信息的位数,它可以不等于MDR的位数。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2次访存来取出一条指令,因此取指周期为机器周期的2倍;若指令字长等于存储字长,则取值周期等于机器周期。
早期的计算机存储字长一般和机器的指令字长与数据字长相等,因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展,指令字长可变,数据字长也可变,但他们必须都是字节的整数倍。

5、计算机体系结构和计算机组成的区别和联系是什么

计算机体系结构是指机器语言或汇编语言程序员所看的到的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大都属于抽象的属性。
计算机组成是指如何实现计算机体系结构所体现的属性,它包含对许多程序员来说透明的硬件细节。例如,指令系统属于结构的问题,但指令的视线即如何取指令、分析指令、取操作数如何运算等都属于组成的问题。因此,当两台机器指令系统相同时,只能认为他们具有相同的结构,至于这两台机器如何实现其指令,完全可以不同,即可以认为他们的组成方式是不同的。例如,一台机器是否具备乘法指令是一个结构的问题,但实现乘法指令采用什么方式则是一个组成的问题。(简言之,看有没有这个属性,就是结构问题;看怎么实现,就是组成问题)。
许多计算机厂商提供一系列体系结构相同的计算机,而他们的组成却有相当大的差别,即使是同一系列的不同型号机器,其性能和价格差异也很大。

6、基准程序执行的越快说明机器的性能越好吗?

一般情况下,基准测试程序能够反映机器性能的好坏。但是,由于基准程序中的语句存在拼读的差异,因此运行结果并不能完全说明问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值