zoukankan      html  css  js  c++  java
  • CPU的结构和功能

    从今天起,进入CPU的微观世界,将CPU作为一个系统来拆分和讲解。以前的总线,MEM,IO都是结构组成部分,在控制器的控制下,完成取值,执指的流程。

    1.概述(What)

    CPU主要包括运算器控制器两大部分。一旦程序进入存储器后,可由计算机自动完成取指令和执行指令的任务。控制器就是专用于完成此项工作的,它负责协同并控制计算机各部件执行程序的指令序列,其基本功能就是取指令、分析指令和执行指令。

    1.1 组成

    (1)寄存器:存放下一指令地址;存放当前指令;存放操作数和计算结果;
    (2)CU:能发出各种操作命令序列的控制部件
    (3)ALU:完成算术和逻辑运算
    (4)中断系统:处理异常情况和特殊请求

    2.功能(Why)

    CPU需要具备控制程序顺序执行(指令控制)、产生完成每条指令所需的控制命令(操作控制)、对各种操作加以时间上的控制(时间控制)、对数据进行运算(数据计算)以及处理中断的功能。
    CPU的基本功能就是取指令、分析指令和执行指令。
    1.取指令
    控制器能自动形成指令的地址,并能发出取指令的命令,将此地址中的指令取到控制器中。
    2.分析指令
    分析指令包括两部分:(1)此指令完成什么操作,即控制器需要发出什么操作命令(2)分析参与这次操作的操作数地址
    3.执行指令
    执行指令就是根据分析指令产生的“操作命令”和“操作数地址”的要求,形成操作控制信号序列,通过对运算器、存储器和I/O设备的操作,执行此指令。
    4.此外
    控制器还要能控制主机与I/O设备交换信息及对总线的管理,甚至能处理机器运行过程中出现的异常情况(掉电)和特殊请求(打印),即处理中断的能力。

    3.指令周期

    3.1 概述(What)


    周期指每个步骤所耗费的时间
    CPU取出一条指令并执行完成所需的全部时间称为指令周期(花费时间)。设置CPU工作周期标志触发器对设计控制单元十分有利。

    3.2 指令数据流(How)

    3.2.1取指数据流


    1.CU将PC寄存器中存储的指令地址送至MAR
    2.CU将地址经地址总线送至MEM,将读控制命令经控制总线送至MEM
    3.CU控制MEM将存储内容经数据总线送至MDR
    4.CU控制MDR将内容送至IR
    5.CU将PC内容加1

    3.2.2间址周期的数据流


    1.CU检查IR中的指令是否需要间址,如果需要间址,将MDR中的地址送到MAR
    2.CU将MAR中的地址经地址总线送至MEM,将读命令经控制总线送至MEM
    3.CU将有效地址经数据总线送至MDR

    3.2.3执行周期的数据流

    不同指令在执行周期操作不同。涉及CPU内部寄存器的数据传送,对存储器或I/O进行读写,对ALU进行操作

    3.2.4中断周期的数据流


    1.CU将PC的指令地址送到MDR,CU控制数据总线将MDR中的内容送至MEM,向MEM发出写信号,保存断点。
    2.CU将中断服务程序入口的地址送至PC。

    4.优化性能

    4.1概述(What)

    为了提高处理机速度,通常可以从提高器件的性能和改进系统的结构,开发系统的并行性两个方面入手。

    4.2方法(How)

    1.提高器件的性能是提高整机性能的重要途径。人们通过技术改进每一个部分的性能。
    2.改进系统的结构,开发系统的并行性。在同一时刻或同一时间段内,完成两种或两种以上性质相同或不同的功能,只要在时间上相互重叠,就存在并行性。使用并行性,那么要将一个过程再细分为几个步骤,分析每个步骤使用到的资源共享,因果关系。并行时,两个步骤是否争抢同一资源,两个步骤之间是否有前后因果关系。

    5.中断系统

    5.1概述(What)

    中断是一种提醒CPU的机制,提醒CPU暂停执行当前指令序列,让CPU判断是否需要去执行其他序列。知止而后能定,这也是在计算机系统中的体现。

    5.2中断系统需要解决的问题

    1.各中断源如何向CPU提出中断请求
    2.当多个中断源同时提出中断请求,中断系统如何判断优先响应哪个中断源
    3.CPU在什么条件,什么时候,以什么方式响应中断
    4.CPU响应中断后如何保护现场
    5.CPU如何从原程序转入中断服务程序的入口地址
    6.中断处理结束后,CPU如何恢复现场,如何返回原程序的间断处
    7.在中断处理过程中,又有了新请求,CPU如何处理。

  • 相关阅读:
    mysql-day06
    C语言 输出二进制数
    Python学习笔记(一)
    数组指针与指针数组
    重装系统--小白版
    Java 面对对象阶段练手项目【飞机大战】
    Java环境的配置
    在Linux环境下运行C语言程序
    Torrent文件
    ubuntu下载速度慢的解决办法--修改下载源
  • 原文地址:https://www.cnblogs.com/ttkl90/p/9284780.html
Copyright © 2011-2022 走看看