计算机组成原理与体系结构知识概括
计算机组成原理与体系结构知识概括
计算机组成原理与体系结构
关系解释:
- 计算机系统是由硬件和软件两部分组成,《计算机组成原理》讲述的是计算机的硬件组成原理,《操作系统》讲述的是配置在计算机硬件上的第一层软件
- 计算机组成原理是讲硬件实现的,计算机系统结构是讲结构设计的
- 计算机体系结构是指那些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性。计算机系统的属性通常是指用机器语言编程的程序员所看到的传统机器的属性,包括指令集、数据类型、存储器寻址技术、I/O机理等,大都属于抽象的属性。由于计算机系统具有多级层次结构,因此,站在不同层次上编程的程序员所看到的计算机属性页是各不相同的。
- 计算机组成原理是指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是透明的硬件细节。例如,指令系统体现了机器的属性,这是属于计算机结构的问题。但指令的实现,即如何取指令、分析指令、取操作数、运算、送结果等,这些属于计算机组成的问题。例如,一台机器是否具备乘法指令的功能,这是一个结构的问题,可是,实现乘法指令采用什么方式,则是一个组成问题。
- 微机原理 只是对非计算机专业的学生开的,大部分将8086的结构以及如何工作,还有汇编语言怎麼写。
计算机组成原理 探讨计算机的各个部分怎麼实现(电路)。
计算机体系结构讲的是在计算机组成原理的基础上,如何根据不同的场景和使用情况的设计计算机,以及各种设计的优缺点。
举例:
①缓存来说,计算机组成原理讲的是缓存怎麼做的(DRAM四个晶体管构成一个单元),而计算机体系结构讲的是缓存在cpu里怎么用(多级缓存,不同级别的缓存采用不同的寻址方式),才可以达到最大性能,不同使用方法的优缺点以及在实际中根据不同情况怎么折衷。
②在计算机组成原理里讲的硬盘怎么做的,磁头读写的物理机制,而计算机体系结构讲如何设计磁盘排列才能以最低的成本使发生意外数据损失的概率达到要求
计算机组成原理
计算机的发展历史
计算机的层次与编程语言
程序翻译和程序解释
程序翻译和程序解释:
- 计算机执行的指令都是L0
- 翻译过程生成新的L0程序,解释过程不生成新的L0程序
- 解释过程由L0编写的解释器去解释L1程序
程序翻译和程序解释语言:
- 程序翻译语言:C/C++,Object-C,Golang
- 程序解释语言:Python,PHP,Javascript
- 程序+翻译语言:Java,C#
计算机的层次与编程语言
计算机层次:
-
硬件逻辑层: 门,触发器等逻辑电路组成, 属于电子工程领域
-
微程序机器层:编程语言是微指令集,微指令所组成的微程序直接交由硬件执行
-
传统机器层:编程语言是CPU指令集(机器指令),编程语言是直接和硬件相关的,不同架构的CPU使用不同的CPU指令集。
-
操作系统层:向上提供了简易的操作界面,向下对接了指令系统,管理硬件资源,操作系统层是在软件和硬件之间的适配层。
-
汇编语言层:编程语言是汇编语言,汇编语言可以直接翻译成可直接执行的机器语言,完成翻译的过程的程序就是汇编器。
-
高级语言层:编程语言为广大程序员所接受的高级语言,高级语言的种类非常多,有几百种
-
应用层:满足计算机针对某种用途而专门设计
冯诺依曼结构
冯诺依曼结构:
南北桥架构演变:
存储程序的概念:
- 数据和程序均以二进制代码形式不加区别地存放在存储器中,存放的位置由存储器的地址指定。
- 计算机在工作时能自动地从存储器中取出指令加以执行。
数学家冯·诺依曼(von Neumann)在研究EDVAC机时提出了“储存程序”的概念.以此为基础的各类计算机通称为冯·诺依曼机.它有如下特点:
- 计算机由运算器,控制器,存储器,输入和输出五部分组成
- 指令和数据以同等的地位存放于存储器内,并可按地址寻访
- 指令和数据均用二进制数表示
- 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置
- 指令在存储器内按顺序存放
- 机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成
- 运算器用来完成算术运算和逻辑运算并将的中间结果暂存在运算器内
- 存储器用来存放数据和程序
- 控制器用来控制,指挥程序和数据的输入,运行以及处理运行结果
- 输入设备用来将人们熟悉的信息转换为机器识别的信息
- 输出设备将机器运算结果转为人熟悉的信息形式
指令系统
机器指令的形式
指令由操作码和操作数组成:
操作码 | 地址码 |
---|---|
①操作码指明本指令完成的操作②操作码的位数反映了机器操作的种类 | ①地址码直接给出操作数或者操作数的地址②地址码分三地址指令、二地址指令、一地址指令。 |
地址码形式:
- 三地址指令:
- 二地址指令:
- 一地址指令:
- 零地址指令:
机器指令的操作类型
- 数据传输
①寄存器之间、寄存器与存储单元、存储单元之间
②数据读写、交换地址数据、清零置一等操作 - 算术逻辑操作
①操作数之间的加减乘除运算
②操作数的与或非等逻辑位运算 - 移位操作
① 数据左移(乘2)、数据右移(除2)
②完成数据在算术逻辑单元的必要操作 - 控制指令
①等待指令、停机指令、空操作指令、中断指令。
机器指令的寻址方式
指令寻址:
- 顺序寻址
- 跳跃寻址
数据寻址:
-
立即寻址
-
直接寻址
-
间接寻址
计算机指令执行的过程
计算机的工作过程就是执行指令的过程
指令执行过程
指令执行过程:
- 取指令
- 分析指令
- 执行指令
CPU的流水线设计
CPU的流水线设计:
- 类似工厂的装配线
- 工厂的装配线使得多个产品可以同时被加工
- 在同一时刻,不同的 产品均处于不同的加工阶段
校验码CheckDigit
数据校验码是一种常用的带有发现某些错误或自动改错能力的数据编码方法.其实现原理,是加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码.
这样,可以通过检测编码的合法性来达到发现错误的目的.合理地安排非法编码数量和编码规则,可以提高发现错误的能力,或达到自动改正错误的目的.
码距:码距根据任意两个合法码之间至少有几个二进制位不相同而确定的,仅有一位不同,称其码距为1.
定点数和浮点数
- 定点数,所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。通常将定点数据表示成纯小数或纯整数,为了将数表示成纯小数,通常把小数点固定在数值部分的最高位之前;而为了将数表示成纯整数,则把小数点固定在数值部分的最后面,如下图所示:
- 定点数表示法的缺点在于其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大或特别小的数,最终,绝大多数现代的计算机系统采纳了浮点数表达方式,这种表达方式利用科学计数法来表达实数,即用一个尾数(Mantissa,尾数有时也称为有效数字,它实际上是有效数字的非正式说法),一个基数(Base),一个指数(Exponent)以及一个表示正负的符号来表达实数,比如123.45用十进制科学计数法可以表示为1.2345x102,其中1.2345为尾数,10为基数,2为指数。浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。
计算器功能和机构
计算器组成部分:
算术逻辑单元ALU的功能和机构:
- ALU部件是运算器中的主要组成部分,又称多功能函数发生器,主要用于完成各种算术运算和逻辑运算.
- ALU的算术运算部件包含加法器,减法器,乘法器,除法器,增量器(+1),减量器(-1),BCD码运算器等组件.
- ALU的主要工作是根据CPU指令要求执行各种指定运算,如加法,减法,乘法,除法,比较,逻辑移位等操作.
数据缓冲器:
- 分为输入缓冲和输出缓冲
- 输入缓冲暂时存放外设送过来的数据
- 输出缓冲暂时存放送往外设的数据
控制器的功能和机构
控制器的功能:
计算机对信息进行处理(或计算)是通过程序的执行而实现的,程序是完成某个确定算法的指令序列,要预先存放在存储器中.控制器的作用是控制程序的执行,它必须具有以下基本功能:
1).取指令
2).分析指令
3).执行指令
计算机不断重复顺序执行上述三种基本操作:取指,分析,执行;再取指,再分析,再执行,如此循环,直到遇到停机指令或外来的干预为止.
4).控制程序和数据的输入与结果输出
根据程序的安排或人的干预,在适当的时候向输入输出设备发出一些相应的命令来完成I/O功能,这实际上也是通过执行程序来完成的.
5).对异常情况和某些请求的处理
当机器出现某些异常情况,诸如算术运算的溢出和数据传送的奇偶错等;或者某些外来请求,诸如磁盘上的成批数据需送存储器或程序员从键盘送入命令等,此时由这些部件或设备发出:
(1)“中断请求”信号.
(2)DMA请求信号.
控制器的组成部分:
程序计数器:
- 程序计数器用来存储下一条指令的地址
- 循环从程序计数器中拿出指令
- 当指令被拿出时,指向下一条指令。
时序发生器:
- 电气工程领域,用于发送时序脉冲
- CPU依据不同的时序脉冲有节奏的进行工作。
指令译码器:
- 指令译码器是控制器的主要部件之一
- 计算机指令由操作码和地址码组成
- 翻译操作码对应的操作 以及控制传输地址码对应的数据
存储器
存储器分类:
存储器的层次结构:
缓存、主存、辅存的作用:
- 缓存-主存层次主要解决CPU和主存速度不匹配的问题
- 主存-辅存层次主要解决存储系统的容量问题
- 从CPU角度来看缓存-主存层次的速度接近于缓存,高于主存;其容量和价位却接近于主存,这就从速度和成本的矛盾中获得了理想的解决办法.
- 主存-辅存层次从整体分析,其速度接近于主存,容量接近于辅存,平均价位也接近于低速的、廉价的存储价位,这又解决了速度、容量、成本这三者之间的矛盾.(当主存需要计算的空间不足时会借助辅存来计算)
只读存储器(ROM):
只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。ROM所存数据通常是装入整机前写入的,整机工作过程中只能读出,不像随机存储器能快速方便地改写存储内容。ROM所存数据稳定 ,断电后所存数据也不会改变,并且结构较简单,使用方便,因而常用于存储各种固定程序和数据。
主存
- 主存也就是常说的内存
- 当计算机断电时,内存数据会丢失
- 内存是一种随机存储存储器(RAM)
- RAM是一种通过电容存储数据,必须每隔一段时间刷新一次
辅存
- 辅存也就是常说的外存,也就是磁盘
- 当计算机断电时,磁盘数据不会丢失
- 磁盘表面是一种可磁性的硬磁特性材料
缓存
- 缓存(Cache)通常由两部分组成,块表和快速存储器.其工作原理是:处理机按主存地址访问存储器,存储器地址的高段通过主存-Cache地址映象机构借助查表判定该地址的存储单元是否在Cache中,如果在,则Cache命中,按Cache地址访问Cache.否则,Cache不命中,则需要访问主存,并从主存中调入相应数据块到Cache中,若Cache中已写满,则要按某种算法将Cache中的某一块替换出去,并修改有关的地址映象关系.
- Cache中主存块的替换算法
随机算法RAND
先进先出FIFO
近期最少使用法LRU
优化替换算法OPT
虚拟存储器
- 虚拟存储器是主存的扩展,虚拟存储器的空间大小取决于计算机的访存能力而不是实际外存的大小,实际存储空间可以小于虚拟地址空间.从程序员的角度看,外存被看作逻辑存储空间,访问的地址是一个逻辑地址(虚地址),虚拟存储器使存储系统既具有相当于外存的容量又有接近于主存的访问速度.
- 虚拟存储器的访问也涉及到虚地址与实地址的映象,替换算法等,这与Cache中的类似,前面我们讲的地址映象以块为单位,而在虚拟存储器中,地址映象以页为单位.设计虚拟存储系统需考虑的指标是主存空间利用率和主存的命中率.
- 虚拟存储器与Cache存储器的管理方法有许多相同之处,它们都需要地址映象表和地址变换机构.但是二者也是不同的.
- 虚拟存储器的三种不同管理方式:按存储映象算法,分为段式,页式和段页式等,这些管理方式的基本原理是类似的.
寄存器
- 指令寄存器(IR)
①用以存放当前正在执行的指令,以便在指令执行过程中,控制完成一条指令的全部功能. - 通用寄存器组(GPRs)
①是一组存取速度最快的存储器,用于保存参加运算的操作数和中间结果.访问寄存器无需高速缓存,也不需要运行总线周期,因此指令的执行速度很快.几乎所有的指令都要将寄存器指定为一个操作数,有些指令还要求将操作数存放在专用的寄存器中. - 主存数据寄存器(MDR)
①发送到或从数据线取来的信息存放在主存数据寄存器中 - 主存地址寄存器(MAR)
①CPU送到地址线的主存地址应先存放在主存地址寄存器 - 标志寄存器(状态字寄存器)
①ALU运算的结果会产生标志信息,例如结果是否为0(零标志ZF),这些标志信息需要记录在专门的标志寄存器中。
②存放运算状态(条件码,进位,溢出,结果正负等)
③存放运算控制信息(调试跟踪标记位,允许中断位等)
总线
总线概述:
- 总线是连接各个部件的信息传输线,是各个部件共享的传输介质,总线上信息的传送分为串行和并行传输
总线的分类:
- 片内总线:芯片内部的总线
- 系统总线:计算机各部件之间 的信息传输线
1、数据总线:双向 与机器字长,存储字长有关
2、地址总线:单向 与存储地址, I/O地址有关
3、控制总线:部分出部分入 控制器控制所有部件
总线仲裁:
- 由于总线上连接着多个部件,何时由哪个部件发送信息,如何定时,如何防止信息丢失,如何避免多个设备同时发送,如何规定接收部件等一系列问题都需要总线控制器统一管理,主要包括总线的判优控制(仲裁逻辑)和通信控制.
- 总线仲裁逻辑可分为集中式和分布式两种,前者将控制逻辑集中在一处(如在CPU中),后者将控制逻辑分散在总线的各个部件之上.
总线标准:
- 总线标准是用来规范系统与各模块、模块与模块之间的一个互联的标准。
- 有了总线标准,不同的厂商就可以按照同样的标准和规范来生产设备,达到互通互联的目的。
- 常见标准:ISA、PCI、USB、PCIe。
CPU与IO设备的通信
DMA 方式与程序中断方式的比较
– | 中断方式 | DMA方式 |
---|---|---|
(1) 数据传送 | 程序 | 硬件 |
(2) 响应时间 | 指令执行结束 2 | 存取周期结束 |
(3) 处理异常情况 | 能 | 不能 |
(4) 中断请求 | 传送数据 | 后处理 |
(5) 优先级 | 低 | 高 |
程序中断方式
- 计算机在执行程序的过程中,当出现异常情况或者特殊情况时,CPU停止当前程序的运行,转向对这些异常情况或者特殊情况的处理,处理结束之后再返回到现行程序的间断处继续运行,该过程就是中断.
- 程序中断是一种低速设备通知CPU的一种异步方式
- CPU可以高速运转同时兼顾低速设备的响应
DMA方式
- DMA是I/O设备与主存储器之间由硬件组成的直接数据通路,用于高速I/O设备与主存之间的成组数据传送.
- 数据传送是在DMA控制器控制下进行的,由DMA控制器给出当前正在传送的数据字的主存地址,并统计传送数据的个数以确定一组数据的传送是否已结束.在主存中要开辟连续地址的专用缓冲器,用来提供或接收传送的数据.在数据传送前和结束后要通过程序或中断方式对缓冲器和DMA控制器进行预处理和后处理.
- DMA工作时不需要CPU的参与
计算机体系结构
计算机体系结构:
- 计算机体系结构(ComputerArchitecture)是程序员所看到的计算机的属性,即概念性结构与功能特性。按照计算机系统的多级层次结构,不同级程序员所看到的计算机具有不同的属性。一般来说,低级机器的属性对于高层机器程序员基本是透明的,通常所说的计算机体系结构主要指机器语言级机器的系统结构。(也就是针对冯诺依曼结构的层次)经典的关于“计算机体系结构(computerarchitecture)”的定义是1964年C.M.Amdahl在介绍IBM360系统时提出的,其具体描述为“计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性”
- 计算机体系结构就是指适当地组织在一起的一系列系统元素的集合,这些系统元素互相配合、相互协作,通过对信息的处理而完成预先定义的目标。通常包含的系统元素有:计算机软件、计算机硬件、人员、数据库、文档和过程。其中,软件是程序、数据结构和相关文档的集合,用于实现所需要的逻辑方法、过程或控制;硬件是提供计算能力的电子设备和提供外部世界功能的电子机械设备(例如传感器、马达、水泵等);人员是硬件和软件的用户和操作者;数据库是通过软件访问的大型的、有组织的信息集合;文档是描述系统使用方法的手册、表格、图形及其他描述性信息;过程是一系列步骤,它们定义了每个系统元素的特定使用方法或系统驻留的过程性语境。
计算机体系结模型:
- 机内数据表示:硬件能直接辨识和操作的数据类型和格式
- 寻址方式:最小可寻址单位、寻址方式的种类、地址运算
- 寄存器组织:操作寄存器、变址寄存器、控制寄存器及专用寄存器的定义、数量和使用规则
- 指令系统:机器指令的操作类型、格式、指令间排序和控制机构
- 存储系统:最小编址单位、编址方式、主存容量、最大可编址空间
- 中断机构:中断类型、中断级别,以及中断响应方式等
- 输入输出结构:输入输出的连接方式、处理机/存储器与输入输出设备间的数据交换方式、数据交换过程的控制
- 信息保护:信息保护方式、硬件信息保护机制。
计算机体系结构-发展历程:
- 第一阶段
60年代中期以前,是计算机系统发展的早期时代。在这个时期通用硬件已经相当普遍,软件却是为每个具体应用而专门编写的,大多数人认为软件开发是无需预先计划的事情。这时的软件实际上就是规模较小的程序,程序的编写者和使用者往往是同一个(或同一组)人。由于规模小,程序编写起来相当容易,也没有什么系统化的方法,对软件开发工作更没有进行任何管理。这种个体化的软件环境,使得软件设计往往只是在人们头脑中隐含进行的一个模糊过程,除了程序清单之外,根本没有其他文档资料保存下来。 - 第二阶段
从60年代中期到70年代中期,是计算机系统发展的第二代。在这10年中计算机技术有了很大进步。多道程序、多用户系统引入了人机交互的新概念,开创了计算机应用的新境界,使硬件和软件的配合上了一个新的层次。实时系统能够从多个信息源收集、分析和转换数据,从而使得进程控制能以毫秒而不是分钟来进行。在线存储技术的进步导致了第一代数据库管理系统的出现。计算机系统发展的第二代的一个重要特征是出现了“软件作坊”,广泛使用产品软件。但是,“软件作坊”基本上仍然沿用早期形成的个体化软件开发方法。随着计算机应用的日益普及,软件数量急剧膨胀。在程序运行时发现的错误必须设法改正;用户有了新的需求时必须相应地修改程序;硬件或操作系统更新时,通常需要修改程序以适应新的环境。上述种种软件维护工作,以令人吃惊的比例耗费资源。更严重的是,许多程序的个体化特性使得它们最终成为不可维护的。“软件危机”就这样开始出现了。1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机课题,在这次会议上正式提出并使用了“软件工程”这个名词,一门新兴的工程学科就此诞生了。 - 第三阶段
计算机系统发展的第三代从20世纪70年代中期开始,并且跨越了整整10年。在这10年中计算机技术又有了很大进步。分布式系统极大地增加亍计算机系统的复杂性,局域网、广域网、宽带数字通信以及对“即时”数据访问需求的增加,都对软件开发者提出了更高的要求。但是,在这个时期软件仍然主要在工业界和学术界应用,个人应用还很少。这个时期的主要特点是出现了微处理器,而且微处理器获得了广泛应用。以微处理器为核心的“智能”产品随处可见,当然,最重要的智能产品是个人计算机。在不到10年的时间里,个人计算机已经成为大众化的商品。 - 第四阶段
在计算机系统发展的第四代已经不再看重单台计算机和程序,人们感受到的是硬件和软件的综合效果。由复杂操作系统控制的强大的桌面机及局域网和广域网,与先进的应用软件相配合,已经成为当前的主流。计算机体系结构已迅速地从集中的主机环境转变成分布的客户机/服务器(或浏览器/服务器)环境。世界范围的信息网为人们进行广泛交流和资源的充分共享提供了条件。软件产业在世界经济中已经占有举足轻重的地位。随着时代的前进,新的技术也不断地涌现出来。面向对象技术已经在许多领域迅速地取代了传统的软件开发方法。