zoukankan      html  css  js  c++  java
  • 组成原理(五)中央处理器CPU

    第五章 中央处理器CPU

    5.1 CPU的功能和结构

    1. 控制器的功能
      (1)取指令
      (2)分析指令
      (3)执行指令,发出各种操作命令
      (4)控制程序输入及结果输出
      (5)总线管理
      (6)处理异常和特殊请求

    2. 运算器的功能
      实现算术运算和逻辑运算

    3. CPU结构框图
      image_1atgs7k2e1h2j15k1revm9qk961g.png-7.1kB

    4. CPU寄存器
      (1)用户可见的寄存器
            ( a ) 存放操作数:可做某种寻址方式所需的专用寄存器
            ( b ) 数据寄存器:存放操作数(满足各种数据类型)。两个寄存器拼接可存放双字长的数据
            ( c ) 地址寄存器:存放地址,其位数应满足最大的地质范围。
            ( d ) 条件码寄存器:存放条件码,作为程序分支的依据。eg:正,负,0,溢出,进位
      (2)控制和状态寄存器(用户不可见)
            ( a ) 控制寄存器:
                  PC -> MAR -> M -> MDR -> IR
                  控制CPU操作,其中除PC用户可见外,其他寄存器均不可见。
            ( b ) 状态寄存器:存放条件码和PSW寄存器
      其中PSW寄存器即为程序状态寄存器,可以用来区分改程序处于用户态还是内核态。每个进程都有一个PSW状态字,1表示自身是内核态

    5.2 指令执行过程

    一. 三种周期

    1. 指令周期:
      (1)指令从取指,分析指令,到执行完成的全过程所需的全部时间。
      (2)有时指令周期还包括间指周期(间接寻址访问主存)和中断周期(响应中断)
      (3)执行完指令后才能进入中断周期,响应中断
    2. 机器周期:
      (1)通常把一个指令周期划分为若干个机器周期,每个机器周期完成一个基本操作
      (2)不同的指令包含不同个数的机器周期
      (3)因为指令的而全部过程有多个步骤,取耗时最长的那个步骤作为机器周期
    3. 时钟周期
      (1)一个机器周期内,要完成若干个微操作,每个微操作要耗费1个节拍,一个节拍就是一个时钟周期

    二. 指令周期的数据流

    1. 取指周期(分成以下几个微操作)
      (1)这些微操作都在时钟控制下进行,每个微操作占用一个节拍

      微操作 解释
      (pc)-> MAR -> 地址线 PC寄存器中的指令地址打给MAR,MAR打给主存
      1 -> R (读控制线置1) 控制线置驻村为读信号,说明对该主存单元进行读操作
      M(MAR)-> MDR 把主存相应位置的数据打给MDR
      MDR -> IR 把MDR中督导的指令打到IR指令寄存器
      OP(IR) -> CU 把指令中的操作码字段打给控制单元CU
      (PC)+ 1 -> PC PC寄存器中的值根据编址方式+n,表示下次取指的内存单元号
    2. 执行周期
      (1)非访存指令

      指令 作用 微操作
      CLA 请A 0 -> ACC
      COM 取反 (overline{ACC}) -> ACC
      SHR 算术右移 L(ACC) -> R(ACC),ACC(_0) -> ACC()
      CSL 循环左移 R(ACC) -> L(ACC),ACC(_0) -> ACC()
      STAP 停机指令 0 -> G

    (2)访存指令
          ( a ) 加法指令:ADD X

    |            指令|解释|
    |:--------|:--------:|
    |            i. Ad(IR) -> MAR|指令寄存器的地址码部分打到MAR|
    |            i. 1 -> R|CU控制发出读信号|
    |            iii. M(MAR) -> MDR|把MAR地址上的数据打到MDR|
    |            iv. (ACC) + (MDR) -> ACC|把ACC寄存器中的结果加上MDR中的结果,放到ACC寄存器中|
    

          ( b ) 存数指令:STA X

    |            指令|解释|
    |:--------|:--------:|
    |            i. Ad(IR) -> MAR|指令的地址码部分放到MAR|
    |            ii. 1 -> W|CU控制器发出写信号|
    |            iii. ACC -> MDR|ACC中的值打给MDR寄存器|
    |            iv. MDR -> M(MAR)|MDR寄存器的值打给MAR中的地址|
    

          ( c ) 取数指令

    |            指令|解释|
    |:--------|:--------:|
    |            i. Ad(IR) -> MAR|指令的地址码部分放到MAR|
    |            ii. 1 -> R|CU控制器发出读信号|
    |            iii. M(MAR) -> MDR|MAR中的值打给MDR寄存器|
    |            iv. MDR -> ACC|MDR寄存器的值打给ACC寄存器|
    

    三. 控制单元CU的外部特性

    1. 输入信号
      (1)时钟
              ( a ) CU收全局时钟控制
              ( b ) 一个是时钟脉冲,发出一个操作命令或一组需要同时执行的操作命令
      (2)指令寄存器
              ( a ) OP(IR) -> CU 指令的操作码字段发给CU控制单元
              ( b ) 控制信号与操作码有关
      (3)标志
              CU 受标志控制,如溢出标志
      (4)外来信号
              eg:INTR 中断请求 HRQ 总线请求
    2. 输出信号
      (1)CPU内部的各种控制信号
      image_1atj0gndgk8l12061vacp3k17m8m.png-7kB
      (2)送至总线的信号
              MREQ : 访存控制信号
              IO/M : 访IO/存储器的控制信号
              RD : 读命令
              WR : 写命令
              INTA : 中断响应信号
              HLDA : 总现响应信号

    四. 控制信号举例(2种数据通路)

    1. 不采用CPU内部总线的方式:
      (1)不采用CPU内部总线的方式连接,则CPU内各个组件之间要单独进行连接(与非门电路)
      (2)通过与非门电路开关的开闭进行通路。一般指令的执行从取指到执行,每个部件的工作顺序是一定的,也就是这些开关的开闭顺序是一致的,因此,把这些顺序记录下来变成微程序发送给哦控制器,就能控制指令执行
      image_1atjdn9uf5sa1sj11u4k1k5jadr9.png-105.3kB
    2. 采用CPU内部总线的方式
      (1)不采用CPU内部总线进行数据传输,使得与非门电路的数量很多,不易于管理。采用总线后,每个部件都把数据打到总线,每个部件的数据来源也来自于总线。只要保证同一时刻只有一份数据在总线上即可
      (2)这种方式,每个部件与CPU总线有门电路连接,只要同时把2个部件的开关打开,就能是数据在两个部件上传输
      (3)这种方式,在执行Add命令时,数据不能经ALU计算后立刻打到总线,也可能总线传来的数据不能立即放到ALU,因此引入Y寄存器和Z寄存器,来缓存将要计算的数和计算出来的结果

    五. 多级时序系统

    1. 机器周期
      (1)机器周期的概念:所有指令执行过程的一个基准时间(取指令执行过程中耗时最长的过程的时间,eg:取址,译码,执行)
      (2)确定机器时间的大小需要2个因素:每条指令的执行步骤,每一个步骤所需的时间
      (3)以完成最复杂指令功能的时间为基准
              或以一次访问存储器的时间为基准(间址时访存时间最长)
      (4)若指令字长 = 存储字长,则取指周期 = 机器周期

    2. 时钟周期(节拍,状态)
      (1)每个机器周期完成一个指令阶段,这个阶段包含若干个微操作(即指令的数据流)
      (2)所以,将一个机器周期划分为若干个时间相等的时间段
      (3)一个时钟周期可以完成一个或几个微操作
      【注】:机器周期的时间是指令执行过程中最长阶段的时间,因此,会导致有的阶段节拍空闲,有的阶段街拍满载

    3. 机器速度与机器主频的关系
      (1)机器主频高,使得节拍耗时短,此时相同指令在执行过程中每个阶段虽然节拍数一样,但是每个节拍的耗时变短了
      (2)但是机器速度不只与机器主频有关,还与指令集有关。指令集每个阶段的微操作数越少,机器速度越快

    4. 不同微操作时序的控制方式
      (1)同步控制方式:任一微操作均由统一基准时标的时序信号控制
            以完成最复杂指令功能的时间为基准
            ( a )采用定长的机器周期:以最长的微操作序列和最繁的微操作作为基准
                  eg:以下的指令执行步骤中,每个步骤分为4个机器周期
                  image_1atldm2ad39mje419vbjd1g8s9.png-74.8kB
            ( b )采用不定长的机器周期:每个机器周期内的节拍数不等
                  eg:如下图所示,图1取值阶段占4个节拍,执行阶段占3个节拍.
                  image_1atlecomj1b3hjtsengmmuv8318.png-46.9kB
                  图2执行阶段含有延长时间,比如在执行乘法指令时,一个乘法指令会分解为多个加法指令,造成执行时间延长
                  image_1atledfh11nub111q14ks160i4qg1l.png-48.8kB
            ( c )采用中央控制和局部控制结合的方法:指令在执行过程中,采用中央控制器和局部控制器同时发送时序的方法控制节拍。
      (2)异步控制方式:
            无基准时标信号,无固定的周期节拍和严格的时钟同步方式,而是采用应答方式来确定指令到哪一步
      (3)联合控制方式:同步和异步相结合的方式
      (4)人工控制

    5.3 控制器CU的功能和工作原理

    (剖析CU如何发送指令,这是计算机的核心)基本概念:
    (1)微命令:控制部件向执行部件发出的各种控制命令。它是构成控制序列的最小单位
                       eg:打开或关闭控制们的电位信号,把某个寄存器的值打入脉冲等
    (2)微操作:微命令的操作过程就是微操作
                      微命令和微操作是一一对应的
                      微操作是微命令的操作过程
                      微操作是执行部件中最基本的操作
    (3)由于数据通路的结构关系,微操作分为相容和互斥的两种:
                      互斥的微操作:不能再同一个节拍中执行的微操作。可用编码表示
                      相容的微操作:能够同时在同一个节点并行执行的微操作。必须各站一位。eg:不相关的部件的微操作
    (4)微指令:(并行微命令的集合)
            把同一个CPU周期内并行执行的微操作放在控制信息里,存储在控制存储器里,称为一条微指令。
            一条微指令分为两个部分:
                    - 操作控制字段:又称微操作码字段,用于产生哥哥微操作的控制信号
                    - 顺序控制字段:又称微地址码字段。用于产生下一条要执行的微指令地址。记作(mu mar)(cmar)(control)
                    - 【注】:微指令没有操作数,因为控制单元不用取操作数。而普通指令通过PC找到下条指令,而微指令在指令中给出下条指令的地址
    (5)微程序
    一系列微指令的有序集合就是微程序,一条机器指令对应一个微程序。
    控制单元在拿到操作码后,开始查找内部对应这个操作码的微程序,按序执行这个微程序的每条微指令,每条微指令都在一个节拍下进行并行的微命令,于是执行了这条指令

    控制单元进行控制的设计方法:

    1. 硬布线控制器-组合逻辑设计
      (1)组合逻辑控制单元框图
             image_1atm06ina10muni14vt1hc5pes9.png-20.4kB
      (2)节拍信号
             节拍信号.PNG-134.6kB
      (3)安排微操作时序的原则
             (a)微操作的先后顺不得改变
             (b)一个节拍内尽量完成多的微操作
             (c)占用时间较短的微操作尽量安排在一个节拍内完成,并允许有先后顺序。
      (4)取值周期微操作的节拍安排
      (5)组合逻辑的设计步骤
             (a)列出所有操作码的操作时间表
             (b)写出未操作命令的最简表达式
             (c)画出逻辑图
      所谓硬布线设计逻辑就是把每个存在的命令通过不同的与非门电路开闭顺序控制每个节拍的微操作

    2. 微程序控制器-微程序设计
      (1)组合逻辑实现控制单元的微操作顺序,速度很快,但设计上很复杂,而且电路一经成型,就不能在改变
      ,微程序设计改变了这个缺点,指令的思想进行微指令的设计
      (2)一条机器指令对应一个微程序,既然是程序,就满足存储逻辑
             eg:add,lad对应不同微程序
      (3)微程序设计方式,在CU内部有一个存储器,存储每条指令对应的微程序。这个存储器和主存结构类似,有地址编号,每个编号对应的一行存储微命令和下地址(下一个微命令的CU存储器地址) CMDR结构图
             image_1atm4p1au1qv45du134a9a7159bl.png-17.6kB
      (4)微程序设计的CU内部结构图
             image_1atm5di6s10491ji6buuvh365312.png-25.3kB
      (5)工作原理

      取指(微指令)阶段:
      1. M -> CMAR                                       # 把CU存储单元的地址号发送给CMAR
      2. CM(CMAR) -> CMDR                                # 把CMAR存储块中的微指令发送给CMDR
      3. 由CMDR发出命令,形成下条微指令地址(M+1)       # 下地址形成部件形成下条微指令的地址
         Ad(CMDR) -> CMAR                                # 微指令的下地址部分送给CMAR
         CM(CMAR) -> CMDR                                # 根据下地址取数据发送到CMDR
         由CMDR发命令,形成下条微指令地址(M+2)         # 继续形成下地址
      
      执行(微指令)阶段:以LDA指令举例
      1. OP(IR)-> 微地址形成部件 -> CMAR      # 微地址形成部件根据指令的操作码字段,解析出微指令的地址
      2. CM(CMAR) -> CMDR                    # 把地址上的微指令发送给CMDR
      # 此时,CMDR中的数据是微指令,后面的下地址部分发送给CMAR,便于取值
      3. 由CMDR发出命令,Ad(CMDR) -> CMAR,CM(CMAR) -> CMDR      
      
    3. 微指令的编码方式
      在通过下地址取出下条微指令后,不能直接执行这个微指令的操作码部分,因为这些操作内容是经过编码的
      (1)直接编码方式:
             (a)微指令的运作内实质就是对与非门电路各个开关的开闭控制,例如CM(CMAR)->CMDR这个微操作,只要把CMAR和CMDR之间的开关打开,数据就能流通到CMDR。所以直接编码方式,把每一个微操作(每一个开关闭合)用1位表示,使得微命令的操作码字段对所有开关的开闭用0,1表示.如下图所示:
             image_1atnp08971d5g82aigf17sk1jcq9.png-4.1kB
             (b)直接编码导致CU存储单元很大。因为需要把所有微操作表示出来
      (2)字段直接编码方式
             (a)字段直接编码方式是对直接编码的改进,它把微指令的控制字段分成若干段,你妹断经过译码后确定是那种操作
             (b)eg:可以把操作码的3位分成一段,这样经过编码后,3位能表示7种微操作(保留一个编成空操作)。
             (c)需要注意的是,只有互斥的微操作才可以编到一个段内。
                    因为如果2个微操作相容,则说明可以在同一个时钟周期内同时执行,而编码后只能执行一个微操作。
                      image_1atnpkp9110441to4tsvco11g86m.png-5.6kB
      (3)字段间接编码方式
             字段直接编码在译码过程中,只受本字段数据的影响。而字段间接编码的方式,本字段的译码过程还要受到其它字段的影响。
             image_1atnr2llr18ehgcm1169drdh8f13.png-7kB
      (4)混合方式:直接编码,字段编码(字段直接编码,字段间接编码)混合使用

    4. 微指令序列地址的形成
      (1)根据指令操作码字段,由下地址形成部件产生。eg:add指令对应的微指令地址
      (2)根据微指令的下地址字段指出
      (3)增量计数器的值:(CMAR)+ 1 -> CMAR
      (4)分支转移:
             带有分支转移的微指令格式如下:(其中转移方式也称判别字段,根据外部条件判别跳转。eg:加法指令的溢出位)
             image_1atnrqvht1hab13j413d15gv1td91g.png-5kB
      (5)测试网络
      (6)由硬件产生微程序的入口地址
             整个计算机运行起来的第一条微指令地址由专门的硬件产生。eg:开机时第一条微指令的位置

    eg:某程序控制器中,采用水平直接控制编码的微指令格式,后续微指令的地址由微指令的下地址字段直接给出,已知机器共有28个微指令,6个互斥的可判定外部条件,CU控制器的容量为512×*40位,请设计微指令的格式:
    因为采用直接控制的编码方式,且有28个微指令,所以需要28个bit位来表示这些微操作。6个外部条件互斥,所以用3个bit表示转移方式,且地址由512行,所以下地址需要占用9位((2^9 = 512)
    即:微指令控制信息28bit | 外部转移条件3bit | 下地址9bit

    > **eg:某机器共有52个微操作控制信号,构成5组互斥类的微操作命令组,各组分别有5,8,2,15,22个微命令。已知,可判定的外部条件有2个,微指令字长为28位
    

    (1)按水平型微指令设计微指令格式,要求下地址字段直接给出后续微指令的地址。
    (2)求控制存储器的容量**
    解:因为采用分组的微指令编码形式,每组要保留一个空操作编码,所以每组需要编码的指令个数分别为6,9,3,16,23.各占3,4,2,4,5,共18位.题目中没有说2个外部条件是互斥的,所以要有2位转移控制位,因此剩下的28-18-2=8位做下地址。存储器共(2^8 * 28 位)

    1. 水平微指令和垂直微指令
      (1)上面讲解的所有微指令编码方式,都是用于水平型微指令。水平的意思是经过编码使得一条微指令可以发出多个微操作。而垂直型微指令的格式和机器指令类似,每条微指令都包含操作码,只能表示一种微操作,最多表示2种微操作。

    2. 指令流水线
      六级指令流水。需要6个机器周期

  • 相关阅读:
    第一篇:数据仓库概述
    第五篇:数据库系统的实现
    第四篇:SQL
    Django框架ORM常用参数汇总_模型层
    Django框架ORM常用字段汇总_模型层
    Boost.Asio的使用技巧
    Boost库之asio io_service以及run、run_one、poll、poll_one区别
    Boost::asio io_service 实现分析
    boost asio中io_service类的几种使用
    boost::io_service解读
  • 原文地址:https://www.cnblogs.com/moonlord/p/5938023.html
Copyright © 2011-2022 走看看