热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

最小工作模式最大工作模式时序和中断

8886的两种工作模式的配置一.最小与最大的工作模式最小工作模式MNMX*1(高电平)构成小规模的单处理机系统(只有个微处理器80888086)由CPU本身提供控制总线最大工作模式




88/86的两种工作模式的配置


一. 最小与最大的工作模式


最小工作模式


  1. MN/MX* = 1 (高电平)
  2. 构成小规模的单处理机系统 (只有个微处理器 8088/8086)
  3. 由CPU本身提供控制总线

最大工作模式


  1. MN/MX* = 0 (低电平)/地
  2. 构成大规模的多机系统
  3. 协处理器 8087(浮点运算)和 (I/0处理器)8089
  4. 8088和8288(总线控制器)共同形成系统总线信号

二. 8088最小模式与最大模式的总线形成


8088最小规模的系统总线形成


image-20211023205224696
  1. 20位地址总线的形成

    采用3片 8282进行锁存和驱动

    (Inter 8282是三态透明地址缓冲器 8283

    ​ 通用的集成电路芯片 74LS373 74LS273)

  2. 8位的数据总线的形成

    数据收发器 8286 进行双向驱动

    Inter 8286是双向三态8位缓冲器

    Inter 8287

    通用数字集成电路 74LS245等 都是双向

    单向 接口电路中经常使用三态单向缓冲器 74LS244可以用 地址或者数据

  3. 系统控制信号的形成

    由88/86 引脚直接提供


最大模式下的系统形成

image-20211023205255546


  1. 地址总线:采用74LS373 和 74LS244
  2. 数据总线:采用74LS245形成和驱动
  3. 控制总线: 由系统总线控制器8288形成 MEMR* MEMW* IOR* IOW* INTA*

时序图


指令周期


  1. 一条指令从取指令到执行结束的时间
  2. 指令周期包括多个总线周期
  3. NMI INTR:cpu响应中断条件 指令周期结束

总线周期

88/86 最基本的总线周期需要四个时钟周期

若READY在T3测试时为0 则T3~T4之间插入 Tw


时钟周期

T1 若CPU主频=5MHZ , T1=200ns

构成总线周期 => 指令周期


等待状态

通过插入Tw 使速度差别较大的两个部件 保持同步

在读写总线周期中 判断是否插入 Tw


  1. T3的前沿检测 READY 引脚是否有效
  2. READY无效 =0 在 T3~T4之间 插入 一个 Tw 再检测
  3. READY 有效 进入 T4

image-20211023205112627

启动与复位

88/86 CPU引脚 RESET引脚用来使CPU复位/启动

8086服务后 PSW ,DS , ES ,SS和其他寄存器清零 指令队列也清零

段寄存器 CS 初始化位 FFFFH 指令指针IP 初始化位 0000H


中断系统


中断响应周期

CPU在每条指令的T4 检测 INTR* 信号 若有效 IF=1 开中断 则 CPU在当前指令执行完毕以后乡音 进入中断响应周期


中断

当Cpu在执行主程序时 外/内原因 暂时中断主程序的运行 转而去执行子程序,当子程序结束后返回主程序过程


中断源

引起中断的原因或事件 包括外设出现故障和CPU内部执行时出现的异常


中断类型

(外中断和内中断) 88/86系统能处理256个中断


中断类型号

用0-255 (00H-FFH)给256个中断分配编号

在INTA*的响应 第二个周期 由 8259向CPU通道D0~D7传递中断类型号n

image-20211023205836239

CPU获取中断类型号的方式

INTR的中断号由8259中断控制器提供

指令中断(INT n) 的中断号由指令直接给出

NMI 其他中断 由系统预设


中断向量

中断服务子程序 的入口地址 有逻辑地址 CS:IP表示 (段地址:偏移地址) 32位 4字节


中断向量表

存放中断向量的内存空间

256个中断向量 每个向量占用4个字节 共占用 1KB

每个中断向量的低字表示偏移地址 每个高字表示段地址 需占用4个字节

物理地址 00000H-003FFH 地址依次安排各个中断向量 向量从0开始

向量号为n的中断向量的物理地址 = n*4


容量: = 末地址+1-首地址

3FF+1 -0

400= 22*(24)2=210



中断类型

外部的中断 17# NMI 和 18# INTR


image-20211028143553407
  • 内部中断

    CPU内部执行程序出现异常引起的程序中断


    1. 除法错中断 (向量号为0) n =0

      在执行除法指令时,若除法为0或商超出所表示的范围则产生向量号为0的内部中断

    2. 指令中断

      在执行INT n时 产生的一个向量号为n (0~255)的内部中断

    3. 断点中断

      向量号为3的指令中断

    4. 溢出中断

      在执行 INT 0时 OF=1时则产生一个向量号为4的内部中断

    5. 单步中断

      若TF=1时 则每条指令结束后 产生一个向量号为1的内部中断

  • 外部中断

    利用外中断 微机系统可以实时响应能够即时处理外部意外和紧急事件 包括 INTR 和 NMI

    外中断是外设随机产生的 是真的中断

    内中断 是执行程序时出现的 常称为异常


非屏蔽中断和可屏蔽中断的特点


非屏蔽中断 NMI可屏蔽中断 INTR
通过NMI向CPU提出中断请求外设通过INTR向CPU提出中断请求
CPU无法禁止 (非屏蔽)在允许中断 当前指令结束后 予以响应输出INTA*
在当前指令执行结束后予以响应IF=1 开中断 允许响应 IF=0 关中断 禁止中断
中断向量号为2向量号有8259(中断控制器)提供
主要用于处理系统意外和故障主要用于主机与外设交换数据

IF的状态 (中断标志)


IF=0 可屏蔽中断不会被响应IF=1 可屏蔽中断会被响应
关中断 屏蔽中断 中断屏蔽开中断 允许中断 中断开放
系统复位 使 IF=0
中断被响应 使 IF=0
执行指令 CLI 使IF=0执行指令 IRET 恢复原IF状态

优先级(中断)

软件中断 优 ↓

除法错中断 0

指令中断 n

断点中断 3

溢出中断 4

非屏蔽中断 2

可屏蔽中断 n外

单步中断 1


中断过程


五个步骤

中断请求→中断优先级判定→中断响应→中断处理(服务)→中断返回


中断响应过程

Cpu在每执行完一条指令后 如果允许CPU响应 则CPU自动完成以下工作


  1. 取中断类型号 n

  2. 标志寄存器入栈 (PSW入栈)

  3. IF=TF=0

  4. CS和IP入栈

  5. 获取中断向量号(CS:IP)

    执行两个总线读周期 在中断向量表中 n*4 开始的单元取两个字 分别送到IP和CS 获取中断向量处理程序入口地址

    CPU从新CS:IP)值开始执行中断处理程序


中断服务程序的一般构成

开中断 STI

保护现场 Push

中断服务

关中断 CTI

恢复现场 Pop

中断返回 IRET

image-20211028151649671




推荐阅读
  • JUC并发编程——线程的基本方法使用
    目录一、线程名称设置和获取二、线程的sleep()三、线程的interrupt四、join()五、yield()六、wait(),notify(),notifyAll( ... [详细]
  • 关于进程的复习:#管道#数据的共享Managerdictlist#进程池#cpu个数1#retmap(func,iterable)#异步自带close和join#所有 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • Beetl是一款先进的Java模板引擎,以其丰富的功能、直观的语法、卓越的性能和易于维护的特点著称。它不仅适用于高响应需求的大型网站,也适合功能复杂的CMS管理系统,提供了一种全新的模板开发体验。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 题目描述:计算从起点到终点的最小能量消耗。如果下一个单元格的风向与当前单元格相同,则消耗为0,否则为1。共有8个可能的方向。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • 大华股份2013届校园招聘软件算法类试题D卷
    一、填空题(共17题,每题3分,总共51分)1.设有inta5,*b,**c,执行语句c&b,b&a后,**c的值为________答:5 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
  • 深入解析Python进程间通信:Queue与Pipe的应用
    本文详细探讨了Python中进程间通信的两种常用方法——Queue和Pipe,并通过具体示例介绍了它们的基本概念、使用方法及注意事项。 ... [详细]
  • 前言:由于Android系统本身决定了其自身的单线程模型结构。在日常的开发过程中,我们又不能把所有的工作都交给主线程去处理(会造成UI卡顿现象)。因此,适当的创建子线程去处理一些耗 ... [详细]
author-avatar
博客百度2
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有