计算机系统结构组成与工作原理-微处理器系统结构与嵌入式系统设计-课程学习记录-2

第二章 计算机系统结构组成与工作原理

第一章没什么内容也不会怎么考到所以基本上就是简单复述了一遍课文内容,这一章在整本书的作用反而更像是一个概论吧,这一章主要大致介绍了计算机的组成情况包括四个部分以及四个部分各个工作原理,这四个部分我们也会在后面的四章内容也就是第三章到第六章详细介绍,而第七章到第九章主要以ARM构架为例子详细介绍了ARM的部分知识.
首先看目录:

  • 计算机系统的基本结构与组成
  • 计算机系统的工作原理
  • 微处理器体系结构的改革
  • 计算机体系结构分类
  • 计算机性能评测

第一部分主要是四个内容:计算机的层次,结构,组成和实现接下来我一一介绍

如果我们把一个计算机抽象成一个双向链表,我们把一端到另一端想象成计算机一步一步从最最基本的逻辑门结构到完整的一个电脑的过程或者相反

1.他第一步就是最地层的数字逻辑层次,也就是只保存了01数据,只对01数据进行处理的层次,这个层次也叫寄存器级,因为01数据主要就是保存在寄存器中的.

2.第二步就是把01数据通过各种门电路达成执行程序的功能,这样组合最基本数据形成了新的功能,这个层次就是微体系结构层也叫微程序级,微也就是小,相比之下,我们在pycharm上面写的程序是不是可比这个大多了.

3.有了第二步将基本01数据搭建成微程序级,我们也就不需要和硬件打交道了,现在第三步我们来到了硬件和软件的交界之处:指令系统层,也叫机器语言级,相信大部分人已经听说过这个词了,我们知道,第二步中我们把01数据搭建成了各种程序,他们在计算机中可能以"011110101"这样的形式表现,这个也叫做机器语言,也就是机器可以理解的语言,但是吧,如果我们想要操作这个计算机,我们可看不懂这些东西,或者说很难看懂,那么我们在此之上就建立了汇编语言,汇编语言设定了一种有规律更易于理解的和这些机器语言的一种映射关系,这个关系我们叫他指令系统.

4.有了规定了标准的汇编指令,我们就可以统一进行编程了,那么为了可以构建一个计算机整体,我们需要一个软件来整体地管理所有功能,这样操作系统就诞生了,第四步我们来到了软件方面的系统软件,操作系统层也称操作系统虚拟机,这个层次中,我们用一个软件整体地管理全部的功能,在这个软件上我们可以继续写更分支的软件,也可以管理整体的计算机运行

5.还是在系统软件这一层次中,其实汇编语言还是不够好理解,所以有了大家现在耳熟能详的C语言,python,java等等一系列编程语言,这些语言设定更好理解的语法,让大家都可以写出在操作系统上的小软件,而我们写下的语言会被转化成汇编指令进入操作系统让操作系统理解,而这一过程就是语言处理层,也叫汇编语言层

6.而后的层次就好理解不那么抽象了,第六步我们有了编程语言就可以写小软件了,这个层次就是用户程序层,编程软件直接和我们进行交互的层次,也叫高级语言虚拟机

7.第七步是系统分析层,也叫应用语言层,就是我们直接使用的软件,这个被一步一步封装好的软件直接和我们进行交互

到这里我们才刚刚讲完计算机的层次,也就是把计算机的抽象概念分层讲述,接下来就是计算机的体系结构

一个好的体系结构可以给计算机带来良好的性能,早在埃尼亚克的年代,就有一种体系结构叫:冯诺依曼结构,这个结构中存在如下几个部分:输入,存储器,控制器,运算器,输出,总线.

以二进制存储数据编制好的程序(包括指令和数据)预先经由输入设备输入并保存在存储器中;计算机开始工作后,在不需要人工干预的情况下由控制器自动、高速地依次从存储器中取出指令并加以执行。

在这里插入图片描述
由图可以看出,这个结构以存储器为中心,这个结构的诞生很早,几乎和电子管计算机的诞生一样早,但是直至今天冯·诺依曼体系结构依然是绝大多数数字计算机的基础.

基于冯诺依曼结构,人们后来提出了哈佛结构,这个后面会有详细介绍.

计算机的组成:上面说了的冯诺依曼结构依然是绝大多数数字计算机的基础,因此,现代计算机的结构也大差不差,只不过将输入输出合并为IO子系统,总线子系统,存储子系统,将运算器和控制器,寄存器合并为cpu子系统,这样现代计算机的组成主要就是:cpu,bus,存储器,IO

总线方面,我们有三种经典的总线结构:

  • 单总线:cpu,IO,存储器都一起连到bus上
  • 双总线:在单总线的基础上cpu和存储器直接也有一条总线
  • 三总线:在原来双总线的基础上再拓展一条总线,用来连接低速IO设备

模型机也就是现代计算机的结构大致可以看成如下图所示以总线为核心:
在这里插入图片描述
这里的四个部分简单总结一下:

  • cpu:一个芯片,执行数据的计算,对计算机的控制
  • 存储器:保存了数据内容和程序内容
  • IO:连接外部设备
  • 总线:承载了全部的运输工作

模型机的总线按传输信息的不同,可将总线分为数据总线DB、地址总线AB和控制总线CB三类

  • 地址总线通常是单向的,由主设备(如CPU)发出,用于选择读写对象(如某个特定的存储单元或外部设备)
  • 数据总线用于数据交换,通常是双向的
  • 控制总线包括真正的控制信号线(如读/写信号)和一些状态信号线(如是否已将数据送上总线),用于实现对设备的监视和控制

模型机内存结构由许多字节单元组成,每个单元都有一个唯一的编号(地址),保存的信息称为存储单元内容

模型机cpu子系统有三个部分:运算器,寄存器,控制器,这个部分主要是对指令系统也就是汇编指令的设计
同时也要记忆其内部构造:

在这里插入图片描述

单纯的看图片可能不是很能理解其底层逻辑,建议看黑马嵌入式教程手把手教你模拟cpu.

模型机指令系统技术会在后面章节详细介绍特别是最后对ARM汇编系统的介绍.
但是我们也可以先了解一下汇编指令的样子,汇编指令是操作码+操作数的大致结构,比如:add R0 R0 R1,意思可以是把寄存器R0和R1的内容相加并放置结果到R0.此外还有许许多多的指令比如:sub,jump,mul,ldr,mov,str…

模型机工作流程本质上就是执行程序的过程

  • 顺序执行:指令执行的基本过程可以分为取指令(fetch)、分析指令(decode)和执行指令(execute)三个阶段
  • 非顺序执行:
      1. 转移(jump):执行条件/无条件转移指令,不返回
      1. 过程(procedure)调用:主程序调用子程序后返回断点
      1. 中断(interrupt):外界突发事件处理完后返回断点
      1. 异常( exception):程序本身产生的某些例外处理完后重新执行
      1. 陷阱(trap) :程序本身产生某些例外条件处理完后返回断

程序的执行过程

  1. 取指(Fetch):在这个阶段,CPU从内存中读取下一条指令。
  • 程序计数器(Program Counter, PC):保存当前要执行的指令的内存地址。
  • 取指操作:CPU将PC中的地址发送到内存,然后读取该地址处的指令到指令寄存器(Instruction Register, IR)。
  • PC更新:PC的值增加,指向下一条指令的地址。
  1. 译码(Decode):在这个阶段,CPU将取回的指令进行译码,以确定要执行的操作。
  • 指令译码器(Instruction Decoder):分析IR中的指令,将其分解为操作码(Opcode)和操作数(Operands)。
  • 控制单元(Control Unit):生成相应的控制信号,以便执行指令。
  1. 执行(Execute):在这个阶段,CPU执行译码后的指令。
  • 算术逻辑单元(ALU):如果是算术或逻辑指令,ALU执行相应的操作。
  • 内存访问:如果指令涉及读取或写入内存,CPU会相应地访问内存。
  • 寄存器操作:如果指令涉及寄存器操作,CPU会在寄存器之间移动数据或更新寄存器的值。
  1. 写回(Write-back):在这个阶段,CPU将执行结果写回到寄存器或内存中。
  • 寄存器更新:如果执行结果需要存储在寄存器中,CPU会更新相应的寄存器。
  • 内存更新:如果执行结果需要存储在内存中,CPU会写入相应的内存地址。
  1. 循环(Loop)CPU重复上述步骤,继续取指、译码、执行下一条指令,直到程序结束。

加法指令的执行过程:
假设我们有一个简单的加法指令 ADD R1, R2, R3,表示将寄存器R2和R3的值相加,并将结果存储在寄存器R1中。以下是该指令在CPU中的执行过程:

  • 取指:
    程序计数器(PC)指向加法指令所在的内存地址。
    从该地址取回指令 ADD R1, R2, R3 到指令寄存器(IR)。
    PC增加,指向下一条指令。
  • 译码:
    指令译码器分析指令,将其分解为操作码 ADD 和操作数 R1, R2, R3。
    控制单元生成控制信号,指示执行加法操作。
  • 执行:
    算术逻辑单元(ALU)接收控制信号,并从寄存器R2和R3读取操作数。
    ALU执行加法操作,将R2和R3的值相加。
  • 写回:
    将加法结果写回寄存器R1。
  • 循环:
    CPU继续取指、译码、执行下一条指令,直到程序结束。

由于冯·诺依曼型计算机的本质特点也造成了其瓶颈:指令执行的串行性和存储器读取的串行性,为了对冯·诺依曼体系结构进行改进,我们会在3到6章分析如何对冯诺依曼的四个部分进行优化来改进,比如cpu指令集的优化,存储器的分层,输入输出的多接口,已经此外的改变串行执行模式,发展并行技术,改变控制方式,发展数据、需求、模式等其它驱动方式.

cpu指令集的优化主要在于两点:cisc,risc

  • cisc:不断增强指令的功能以及设置更复杂的新指令取代原先由程序段完成的功能,从而实现软件功能的硬化
  • risc:通过减少指令种类和简化指令功能来降低硬件设计复杂度,从而提高指令的执行速度

而现代计算机都是同时采样以上两种策略的

对于CISC而言,其有如下特点:

  • 许多复杂指令很少被使用,“2-8原则”
  • 控制器硬件复杂(指令多,且具有不定长格式和复杂的数据类型),占用了大量芯片面积,且容易出错
  • 指令操作繁杂,速度慢
  • 指令规整性不好,不利用采用流水线技术提高性能

而对于RISC而言:

  • 指令条数少,格式简单,易于译码
  • 提供足够的寄存器,只允许load和store指令访问内存
  • 指令由硬件直接执行,在单个周期内完成
  • 充分利用流水线
  • 依赖优化编译器的作用

这两种结构的数据流如下:
在这里插入图片描述
对于存储器来说,优化分层结构,可以达到很好的效果,不同的存储介质有不同的优点,按照层次从上到下分别是:寄存器,cache,主存,辅存.其存储大小从上到下也是依次增加但速度确实依次减少,而成本依次降低,为了平衡这些指标,提出了分层的结构

除此之外我们也可以对于冯诺依曼体系本身进行优化,之前提及了哈佛结构,就是冯诺依曼结构的一种改良,其特点有:

  • 程序存储器与数据存储器分开
  • 提供了较大的数存储器带宽
  • 适合于数字信号处
  • 大多数DSP都是哈佛结构
  • ARM9是哈佛结

哈佛结构使用两套总线分别处理程序数据和内容数据,考虑到冯诺依曼结构的串行性,这样的处理可以加快计算机的效率

总线方面,也有改良,高速并行总线和多级总线结构都很好地优化了总线的传输效率
其中流水线技术要重点掌握
在这里插入图片描述
多级流水线使得计算机可以穿插同时处理不同的程序指令,大大加快了程序运行的速率,一般的流水线包括以下步骤:

  • 取指(FI)
  • 指令译码(DI)
  • 计算操作数地址(CO)
  • 取操作数(FO)
  • 执行指令(EI)
  • 写操作数(WO)

流水线提高了性能但是也有其缺点:

  • 增加了硬件成本
  • 流水寄存器会引入延迟和时钟偏移,这些额外开销会使每条指令的执行时间有所增加,同时限制了流水线的深度
  • 流水线中各段的操作存在关联时可能会引起流水线中断,从而影响流水线的性能和效率

第三点缺点中的冒险有多种包括:

  • 数据冲突:后面的计算要用到前面的结果
  • 定向技术可将结果数据从其产生的地方直接传送到所有
  • 需要它的功能部件– 编译器可利用流水线调度技术来重新组织指令顺序
  • 结构冲突:硬件资源不够
  • 增加额外的同类型资源,哈佛结构存储器、超标量
  • 改变资源的设计使其能被同时使用,多端口的寄存器堆
  • 控制冲突:分支等跳转指令引起
  • 可采用分支预测及预测执行技术最大限度地使处理器各部分保持运行状态

计算机体系结构的分类:
在这里插入图片描述
计算机系统的性能测定:
用MIPS (Million Instructions Per Second,每秒百万条指令)或MFLOPS(每秒百万次浮点操作)的数值来衡量计算机系统的硬件速度,用CPU执行时间T来量化硬软件结合系统的有效速度.
f(时钟频率): CPU的基本工作频率
IC(指令数目):运行程序的指令总数
CPI(Cycles Per Instruction):指令执行的平均周期数,可从运行大量测试程序或实际程序产生的统计数据中计算出来
运算方程式如下:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值