zoukankan      html  css  js  c++  java
  • CPU结构与指令执行过程简介

    CPU(Central Processing Unit)是计算机中进行算术和逻辑计算处理指令的主要部件.

    CPU结构

    CPU由通用寄存器组,运算器,控制器和数据通路等部件组成.

    寄存器包括

    • 数据寄存器: AX,BX,CX,DX;

    • 指针与变址寄存器:SP, BP, SI,DI

    • 栈寄存器: CS,DS,SS,ES

    详情参见寄存器与寻址方式的介绍

    运算器主要是指算术逻辑单元(arithmetic and logic unit, ALU).

    上图所示的CPU采用单总线结构, ALU通过两个暂存器T,S与总线相连.

    控制器的主要组成部分是微命令形成电路, 以及3个控制寄存器和时序逻辑部件.

    • 程序状态字(Program Status Word,PSW): 存放结果状态和标志

    • 程序计数器(Program Counter,PC): 记录下一条指令的内存地址

    • 指令寄存器(Instruction Register,IR): 寄存正在执行的指令

    为了与系统总线交互设置单向地址寄存器AR和双向数据寄存器DR.

    CPU为了IO等功能还设置了外部中断INT,直接内存访问(Direct Memory Access,DMA)等部件.

    现代CPU通常还集成了高速缓存(Cache)和流水线等组件.

    CPU时钟

    时钟周期由时钟部件提供,是CPU中原子计时单位.

    一般把CPU对内存的一次访问当作一个机器周期.

    CPU执行一条指令的时间为一个指令周期,不同指令的指令周期不一样.

    指令执行过程

    机器指令: 是CPU能直接识别并执行的指令,为二进制编码的形式, 汇编指令是二进制机器指令的助记符.

    微指令: 在微程序控制的计算机中,微指令是同时发出的控制信号的组合.

    一次能定义并执行多个并行操作微命令的微指令,叫做水平型微指令.水平型微指令的一般格式为:
    控制字段 判别测试字段 下地址字段

    垂直型微指令的结构类似于机器指令的结构.它有操作码,在一条微指令中只有l-2个微操作命令,每条微指令的功能简单.

    微操作是CPU的原子操作,以一个寄存器的数据读写操作为标志.

    每一个微操作是控制器向相应部件发送控制信号(微命令)而触发的.

    一般在微操作的层面上研究指令的执行过程.

    一般机器指令执行过程分为取指令(Fetch Instruction), 取数据(Fetch Data), 执行(Execute)等操作

    FIC微操作

    PC->AR
    AR->MainMemory
    Read ;将Memory中的数据传到系统总线上
    PC+1
    M->DataBus
    DastaBus->DR
    DR->IR
    

    FDC微操作

    在进行取操作数之前先进行译码操作,首先根据16位指令编码的形式分析指令类型:

    • 双操作数指令: 0000 xxxx

    • 单操作数指令: 0000 1110 xxxx

    • 转移指令: 0000 1111 xxxx

    • 无操作数指令: 0000 1111 1111 xxxx

    EXEC微操作

    转移指令执行过程

    PC->ALU
    ADD PC Disp->T
    T->PC
    

    INC指令:

    ALU: S+1->T
    BX->MainMemory
    T->DB
    Write ;结果写入内存
    

    微程序控制器与硬布线控制器

    微程序控制器

    微程序控制器设计简单,规范化;功能可编程,成本低,错误少但是速度较慢.

    硬布线控制器

    硬布线控制器用与或逻辑阵列将微指令转换为控制信号,设计复杂,无法编程修改功能但是速度较快.

  • 相关阅读:
    [译文] 实体与值对象到底是不是一回事?
    实现 WebApi 自托管服务宿主于 WinForms 及其交互
    [译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
    [译文] 为什么你在 C# 里总是应该使用 "var" 关键字
    通过设置iis在局域网中访问网页
    windows 10 安装使用kafka
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 4) 整合Polly实现瞬时故障处理
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 3) 使用Handler实现传出请求中间件
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 2) 定义命名化和类型化的客户端
    Asp.net Core 2.0 OpenId Connect Handler缺失Claims?
  • 原文地址:https://www.cnblogs.com/Finley/p/5641806.html
Copyright © 2011-2022 走看看