热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

X86保护模式编程总结(9)完

高速缓存,流水线和缓冲PentiumCPU利用指令高速缓存和数据高速缓存一个时钟周期内最多访问两个数据引用和32个字节的原始操作码.(数据和指令高速缓存每个有8K字节大.每个行组3

高速缓存,流水线和缓冲
PentiumCPU利用指令高速缓存和数据高速缓存一个时钟周期内最多访问两个数据引用和32个字节的原始操作码.(数据和指令高速缓存每个有8K字节大.每个行组32字节)
软件通过使各个页表项中PCD位置位来禁止.硬件通过对位于该区域的地址的总线周期撤销KEN#信号来禁止.(仅对读不命中时高速缓存行组的填充动作才产生,不对写不命中产生)

PentiumCPU数据高速缓存的更新策略:
1,通写: 对高速缓存中某一行组的写请求, 高速缓存和主存均作更新.通写对诸如图形桢缓冲这样的应用是有用的.
2,回写: 对高速缓存中某一行组的写请求,回写策略通过去除许多存储器不必要的写来减少总线流量, 对高速缓存中某一行组的写不直接转送到主存,而积累在高速缓存中.在执行回写操作时,被更新的高速缓存行组在以后写到这存.当需要回收已分配的高速缓存行组,例如已满时分配新的行组.触发写回操作.也可用于维护高速缓存一致性的机制触发.
注: CPU允许存储器的任意区域遵循以上任一策略.采用何种策略可通过页表项的PWT位.

指令高速缓存仅实现MESI协议的SI部分,因为它不是可写的. 指令高速缓存监控数据高速缓存中的变化,以维护指令被修改时高速缓存间的一致性.

内部高速缓存的操作: 软件通过对CR0的CD=1,NW=1禁止高速缓存

禁止内部高速缓存的步骤:
1,CR0的CD=1,NW=1
2,清洗高速缓存


高速缓存管理指令:
INVD: 使所有内部(指令和数据) 高速缓存项无效.(它不写回已修改的高速缓存行组,所以它会使数据高速缓存和系统中其他存储器不一致.一般只在测试和故障恢复时用,否则用WBINVD)
WBINVD: 首先写回数据高速缓存中任何修改的行组,然后使所有内部(指令和数据) 高速缓存项无效,它保证了维护高速缓存和主存的一致性.

自修改的代码: 修改一条高速缓存的指令,将会使预取指令队列无效.


电源管理(SMM-系统管理方式)
SMM: 系统管理方式,这是在对系统管理中断进行服务时,CPU进入的操作环境
SMI: 系统管理中断.这是SMM接口的一个部分.
SMM处理程序: 系统管理方式处理程序,当CPU处于SMM中时,将执行这段程序,这段代码可能实现的一个应用实例是电源管理或系统控制功能.
RSM: 恢复指令,这条指令供SMM处理程序用来退出SMM,并返回被中断的操作系统或程序
SMRAM: 这是专门用于SMM的物理存储器.SMM处理程序代码和相关的数据驻留在这里,这个存储器也供CPU在执行SMM处理程序之前存储其上下文.OS和应用成不能访问它.



推荐阅读
  • 探讨Redis的最佳应用场景
    本文将深入探讨Redis在不同场景下的最佳应用,包括其优势和适用范围。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • 深入解析 Synchronized 锁的升级机制及其在并发编程中的应用
    深入解析 Synchronized 锁的升级机制及其在并发编程中的应用 ... [详细]
  • 双指针法在链表问题中应用广泛,能够高效解决多种经典问题,如合并两个有序链表、合并多个有序链表、查找倒数第k个节点等。本文将详细介绍这些应用场景及其解决方案。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 单片机入门指南:基础理论与实践
    本文介绍了单片机的基础知识及其应用。单片机是一种将微处理器(类似于CPU)、存储器(类似硬盘和内存)以及多种输入输出接口集成在一块硅片上的微型计算机系统。通过详细解析其内部结构和功能,帮助初学者快速掌握单片机的基本原理和实际操作方法。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 性能测试中的关键监控指标与深入分析
    在软件性能测试中,关键监控指标的选取至关重要。主要目的包括:1. 评估系统的当前性能,确保其符合预期的性能标准;2. 发现软件性能瓶颈,定位潜在问题;3. 优化系统性能,提高用户体验。通过综合分析这些指标,可以全面了解系统的运行状态,为后续的性能改进提供科学依据。 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 在《Linux高性能服务器编程》一书中,第3.2节深入探讨了TCP报头的结构与功能。TCP报头是每个TCP数据段中不可或缺的部分,它不仅包含了源端口和目的端口的信息,还负责管理TCP连接的状态和控制。本节内容详尽地解析了TCP报头的各项字段及其作用,为读者提供了深入理解TCP协议的基础。 ... [详细]
  • 本文深入解析了JDK 8中HashMap的源代码,重点探讨了put方法的工作机制及其内部参数的设定原理。HashMap允许键和值为null,但键为null的情况只能出现一次,因为null键在内部通过索引0进行存储。文章详细分析了capacity(容量)、size(大小)、loadFactor(加载因子)以及红黑树转换阈值的设定原则,帮助读者更好地理解HashMap的高效实现和性能优化策略。 ... [详细]
author-avatar
merlion-p
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有