微机原理及应用->微处理器与总线

2024-02-10 18:40

本文主要是介绍微机原理及应用->微处理器与总线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微处理器与总线

  • 一些英文
    • 8088/8086微处理器
      • 8086/8088 CPU的特点
      • 8088/8086的两种工作模式
        • 两种工作模式的选择
    • 8088的主要引线及内部结构
      • 主要引脚信号
        • 地址线和数据线
        • 主要控制信号(内存或接口控制,#WR,#RD,IO/#M,#DEN,DT/#R,ALE,RESET)
        • 外部同步控制信号(Ready)
        • 中断请求和响应信号(INTR,NMI,#INTA)
        • 总线保持信号(HOLD,HLDA)
        • 8086和8088引线功能区别
      • 8088内部结构
        • 执行单元 (EU)
          • 构成
          • 功能
        • 总线接口单元(BIU)
        • 结论
      • 8088内部寄存器
        • 类型
        • 8个通用寄存器
          • 数据寄存器
          • 地址指针寄存器
            • BX和BP在应用上的区别
          • 变址寄存器
        • 控制寄存器IP
        • 状态寄存器FR/Flags
          • 状态标志位(CF,OF,ZF,SF,PF,AF)
            • CF,OF ZF SF注意
          • 控制标志位
        • 段寄存器
      • 实地址模式下的存储器寻址
        • 内存储器管理
        • 内存地址变换
        • 内存单元的编址
          • 存储器的编址
        • 实地址模式下的存储地址变换
        • 段寄存器
        • 逻辑段与逻辑地址
        • 堆栈及堆栈段的使用
      • 总线
        • 总线时序
        • 总线
          • 总线结构
            • 单总线结构
            • 多总线结构
            • 面向CPU的双总线结构
            • 面向存储器的双总线结构
            • 现代微机中的多总线结构
          • 总线的基本功能
          • 总线的主要性能指标
      • 小结
        • 重点
        • 内部寄存器
        • 实地址模式下的存储器寻址

一些英文

ALE=Address Lock Enable地址锁存
BIU=Bus interface Unit总线接口部件
PC=Programming Counter程序计数器
IP=Instruction Pointer指令指针,同PC功能
ALU=Arithemetic Logic Unit 算数逻辑单元

中断请求和响应信号:
INTR=Interrupt Require
NMI=Non Maskable Interrupt
INTA=Interrput Answer

8088/8086微处理器

8086是十六位的处理器,但是为了兼容旧的程序,因此同时推出了相似的8位处理器8088,8086的数据总线是20位,8088是8位。
授课内容以8位芯片为例。

1.8088/8086 CPU能够实现指令并行流水工作的原因;

因为取指需要CPU和存储器通过总线交换内容,而译码和执行都在CPU内部,总线有空余,因此可以通过并行进一步提高效率。

2.实地址模式下的存储器地址变换原理;

今天很多存储器是保护模式,但也可以自行选择实地址模式。(这不是重点,只是提一下)

3.如何知道CPU当前工作状态及指令运算结果的特征?

8086/8088 CPU的特点

特点是指和过去相比

采用并行流水线工作方式:通过设置指令预取队列实现,这是CPU内部结构决定的
在这里插入图片描述

对内存空间实行分段管理
将内存分为4个段并设置地址段寄存器,以实现对1MB空间的寻址

实模式存储器寻址
内存单元16位,对应物理地址也就越长,就好像酒店越高门牌号越长一样。寄存器、运算单元、总线上的信息全部都是16位的。
但即便是16位(216)体系的CPU,想要管理1MB(220)空间,显然是不大够用的,

支持协处理器

可以选择工作模式
协处理器主要的功能是帮助处理浮点数小数运算

8088/8086的两种工作模式

8088/8086可工作于两种模式下
{  最小模式   最大模式  \left\{\begin{array}{l}\text { 最小模式 } \\ \text { 最大模式 }\end{array}\right. { 最小模式  最大模式 
最小模式为单处理器模式,所有控制信号由微处理器产生
最大模式为多处理器模式,部分控制信号由外部总线控制器产生(用于包含协处理器的情况下)

最小模式结构图如下
在这里插入图片描述
地址信息→控制信息→数据信息

ALE要将送出去的信息锁在柜子里,因为原本的地址信息通道可能会被新的信息覆盖,就好像家里来客人,大家知道名字,谁进来都了解,但计算机里只有01,哪儿的01是哪儿的01,就得先记好它家在哪才行,不然新信息送过来,就忘了家哪儿的了

最大模式结构图如下
在这里插入图片描述

就是多出需要总线控制器产生一部分控制信息而已

两种工作模式的选择

8088是工作在最小还是最大模式由 M N / M X ‾ MN/\overline{MX} MN/MX引线的状态决定。

上横线的意思是,低电平有效,也就是0有效。

M N / M X ‾ = 0 MN/\overline{MX}=0 MN/MX=0一工作于最大模式
M N / M X ‾ = 1 MN/\overline{MX}=1 MN/MX=1一工作于最小模式

8088的主要引线及内部结构

大部分情况都工作在最小模式下,就以最小模式为例。( M N / M X ‾ = 1 MN/\overline{MX}=1 MN/MX=1

8088最小模式下的主要引脚信号 → 4组

  • 完成一次访问内存或接口所需要的主要信号(电源和地就不说了)
  • 外部同步控制信号
  • 中断请求和响应信号
  • 总线保持和响应信号

微机读取一条指令的工作过程

冯诺依曼结构中,编写的程序都储存在硬盘里,调用时,就会先编译成机器码写到内存中。
那么第一条怎么找呢,PC会产生一个地址,然后送到地址寄存器中,然后自身加一继续,直到取完。

在这里插入图片描述

微机读取一条指令的控制过程

读数据就取出来,读到指令就译码。
PC发出地址→命令→执行
数据包括指令、运算对象,不单单是操作数

  1. 发出读取数据所在的目标地址(地址信号
    内存储器单元地址
    I/O接口地址
  2. 发出读控制信号(控制信号
  3. 送出传输的数据(数据信号

主要引脚信号

地址线和数据线

地址信号(总线宽度是20位,8088和8086都是,也就是220=1M地址编码)
从前面读指令我们可以知道先有地址然后才有数据

A D 0 − A D 7 : \mathrm{AD}_{0}-\mathrm{AD}_{7}: AD0AD7: 低8位地址和低8位数据信号分时复用。在传送地 址信号时为单向,传送数据信号时为双向。

复用就是说不同的时间段可以有不同的功能
低8位在一次指令操作中先传送8位地址,然后传送8位数据(没有指令怎么知道要拿什么数据嘛,就像没菜单怎么点菜一样)

A 16 − A 19 : \mathrm{A}_{16}-\mathrm{A}_{19}: A16

这篇关于微机原理及应用->微处理器与总线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/697811

相关文章

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时