论文解析——Implementing Precise Interrupts in Pipelined Processors

本文主要是介绍论文解析——Implementing Precise Interrupts in Pipelined Processors,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者及发刊详情

James E. Smith and Andrew R. Pleszkun. 1988. Implementing Precise Interrupts in Pipelined Processors. IEEE Trans. Comput. 37, 5 (May 1988), 562–573. https://doi.org/10.1109/12.4607

摘要

当一条指令执行结束另一条指令开始前,如果保存的进程状态和程序执行的顺序模型相关时,中断要求非常精确。在一个流水线处理器中,由于上一条指令已经完成,下一条指令也许会被初始化,因此中断的精确控制通常是很困难的。本文描述和评估了在流水线处理器中的对精确中断问题的解决方案。
首先将描述精确中断问题,然后将详细描述第一个解决方案。第一个是强制指令按照架构顺序完成和修改处理器状态,其他的四种将允许指令以任意的序完成,但是将需要额外的硬件,以致于当中断发生时,精确的状态很难恢复。所有的方法将在并行流水下下讨论。基于CRAY-IS标量架构的仿真结果显示,第一种方法将导致性能下降16%,另外四种方法出现了类似的性能,其中三种导致了3%的性能损失。几种其他的扩展,包括虚拟内存和线性流水线架构也将会被讨论。

正文

高性能的处理器必定是流水化的,允许多条指令同时执行在不同阶段

流水线处理器发生中断时对指令执行序的影响

当中断来领时,并行执行的指令也许会调整处理器状态,导致指令执行序和顺序架构模型不同

当中断被检测到时,硬件也许不会处于和某一特定程序计数器值一致的状态

待保存的状态包括程序计数器(PC),寄存器和存储。具体根据如下条件而定:

a. 该指令前的所有指令全被执行且已经正确调整了处理器状态
b. 该指令后的所有指令尚未被执行且还没有调整处理器状态
c. 如果中断是被指令的异常所引起,PC也指向被中断的指令,由于架构或中断原因的不同,中断指令也许已经执行或尚未被执行

如果被保存的处理器状态和顺序架构模型不一致,或不满足上述条件,中断是不精确的。

中断的类型

程序中断,即自陷,在指令取指或执行时导致的异常引发

例如非法指令,数据溢出,页错误等

外部中断

例如IO中断、定时器中断

文章框架

第二章描述了模拟精确中断实现的模型架构
第三章到第六章描述了实现精确中断的方法
第七章呈现了仿真结果

方法一:顺序指令执行

通过这种方式,指令只能在先前所有提交的指令没有异常的情况下才能调整进程状态。

方法二:使用重排序buffer缓存即将issue的指令

当一条指令完成,结果和异常条件都会被发送到重排序buffer,当有效结果到达buffer入口时,硬件将检查异常,如无异常,则结果写回,若有异常,指令提交将会停止,并准备中断处理,后续写寄存器将会被停止。

方法三:通过历史记录buffer保存指令计算结果

硬件架构和方法二的reorder buffer类似,但所不同的是,但有效结果到达buffer入口时,无论异常即写回到寄存器文件中,同时异常报告也会保存到history buffer中,如果有异常则进行中断处理
当history buffer占满时,issue被堵塞
相比reorder buffer,该方法提高了流水线效率

方法四:建立提前于通用寄存器的寄存器副本

指令执行的结果和异常报告预先写到寄存器副本中,同样该副本也有reorder buffer,根据副本的状态再确认是否更新真寄存器文件的值。

性能评估

流水线处理器中精确中断的实现

相关链接

知乎中关于精确中断的讨论
答主“三郎”介绍的很清晰。

这篇关于论文解析——Implementing Precise Interrupts in Pipelined Processors的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注

Python中的sort()和sorted()用法示例解析

《Python中的sort()和sorted()用法示例解析》本文给大家介绍Python中list.sort()和sorted()的使用区别,详细介绍其参数功能及Timsort排序算法特性,涵盖自适应... 目录一、list.sort()参数说明常用内置函数基本用法示例自定义函数示例lambda表达式示例o

SpringBoot加载profile全面解析

《SpringBoot加载profile全面解析》SpringBoot的Profile机制通过多配置文件和注解实现环境隔离,支持开发、测试、生产等不同环境的灵活配置切换,无需修改代码,关键点包括配置文... 目录题目详细答案什么是 Profile配置 Profile使用application-{profil

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

Java中的volatile关键字多方面解析

《Java中的volatile关键字多方面解析》volatile用于保证多线程变量可见性与禁止重排序,适用于状态标志、单例模式等场景,但不保证原子性,相较synchronized更轻量,但需谨慎使用以... 目录1. volatile的作用1.1 保证可见性1.2 禁止指令重排序2. volatile的使用

Python lambda函数(匿名函数)、参数类型与递归全解析

《Pythonlambda函数(匿名函数)、参数类型与递归全解析》本文详解Python中lambda匿名函数、灵活参数类型和递归函数三大进阶特性,分别介绍其定义、应用场景及注意事项,助力编写简洁高效... 目录一、lambda 匿名函数:简洁的单行函数1. lambda 的定义与基本用法2. lambda

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

全面解析Golang 中的 Gorilla CORS 中间件正确用法

《全面解析Golang中的GorillaCORS中间件正确用法》Golang中使用gorilla/mux路由器配合rs/cors中间件库可以优雅地解决这个问题,然而,很多人刚开始使用时会遇到配... 目录如何让 golang 中的 Gorilla CORS 中间件正确工作一、基础依赖二、错误用法(很多人一开