关于APIC的一些概念,很早以前某个大神通过studyOS机制,研究出来的APIC的工作模式,特摘录部分概念。

事实上,老久的PIC在很早以前就被淘汰了,取而代之的是APIC。由于APIC可以兼容PIC,所以在很多单处理器系统上我们看到的PIC实际是APIC的兼容PIC模式。APIC主要应用于多处理器操作系统,是为了解决IRQ太少和处理器间中断而产生的,当然,单处理器操作系统也可以使用APIC(不是模拟PIC)。APIC的HAL和PIC的HAL有很大的不同,很突出的一个特点就是APIC的HAL不用再象PIC的HAL那样虚拟一个中断控制器,IRQL的概念已经可以通过中断向量的形式被APIC支持。事实上,因为被APIC所支持,所以在APIC HAL里IRQL的实现比PIC HAL那样虚拟一个中断控制器要简单得多了。

现在来简单介绍一下APIC的结构(关于APIC详细的描述请参考《IA-32 Inel Architecture Software Developer's Manual Volume 3 Chapter 8》)。整个APIC系统由本地APIC、IO APIC和APIC串行总线组成(在Pentium 4和Xeon以后,APIC总线放到了系统总线中)组成。每个处理器中集成了一个本地APIC,而IO APIC是系统芯片组中一部分,APIC总线负责连接IO APIC和各个本地APIC。本地APIC接收该处理器产生的本地中断比如时钟中断,以及由该处理器产生的处理器间中断,并从APIC串行总线接收来自IO APIC的消息;IO APIC负责接收所有外部的硬件中断,并翻译成消息选择发给接收中断的处理器,以及从本地APIC接收处理器间中断消息。

和PIC一样,控制本地APIC和IO APIC的方法是通过读写该单元中的相关寄存器。不过和PIC不一样的是,Intel把本地APIC和IO APIC的寄存器都映射到了物理地址空间,本地APIC默认映射到物理地址0xffe00000,IO APIC默认映射到物理地址0xfec00000。windows HAL再进一步把本地APIC映射到虚拟地址0xfffe0000,把IO APIC映射到虚拟地址0xffd06000,也就是说对该地址的读写实际就是对寄存器的读写,本地APIC里几个重要的寄存有EOI寄存器,任务优先级寄存器(TPR),处理器优先级寄存器(PPR),中断命令寄存器(ICR,64位),中断请求寄存器(IRR,256位,对应每个向量一位),中断在服务寄存器(ISR,256位)等。IO APIC里几个重要的寄存器有版本寄存器,I/O寄存器选择寄存器、I/O窗口寄存器(用要访问的I/O APIC寄存器的索引设置地址I/O寄存器选择寄存器,此时访问I/O窗口寄存器就是访问被选定的寄存器)还有很重要的是一个IO重定向表,每一个表项是一个64位寄存器,包括向量和目标模式、传输模式等相关位,每一个表项连接一条IRQ线,表项的数目随处理器的版本而不一样,在Pentium 4上为24个表项。表项的数目保存在IO APIC版本寄存器的[16:23]位。APIC系统支持255个中断向量,但Intel保留了0-15向量,可用的向量是16-255。并引进一个概念叫做任务优先级=中断向量/16,因为保留了16个向量,所以可用的优先级是2-15。当用一个指定的优先级设置本地APIC中的任务优先级寄存器TPR后,所有优先级低于TPR中优先级的中断都被屏蔽,是不是很象IRQL的机制?事实上,APIC HAL里的IRQL机制也就是靠着这个任务优先级寄存器得以实现。同一个任务优先级包括了16个中断向量,可以进一步细粒度地区分中断的优先级。

关于APIC的一些概念相关推荐

  1. Virtualbox源码分析16 APIC虚拟化1 APIC概念和初始化

    文章目录 中断是什么 中断是如何被发送给CPU的 16.1 xAPIC and x2APIC 16.2 Local APIC Page里的寄存器和对应的重要概念 APIC ID 中断优先级类型的寄存器 ...

  2. Linux kernel 3.10内核源码分析--TLB相关--TLB概念、flush、TLB lazy模式

    一.概念及基本原理 TLB即Translation Lookaside Buffer,是MMU中的一种硬件cache,用于缓存页表,即缓存线性地址(虚拟地址)到物理地址的映射关系. 如果没有TLB,那 ...

  3. 计算机系统和中断的概念

    概念: cpu:特指处理器核心,而不是处理器封装,因为很多处理器将桥芯片和内存控制器芯片都封装在一起,造成一种误解,实际上处理器核心并不包含这些内容. 外设:带有处理逻辑的集成电路核心. 一.CPU和 ...

  4. 八千字硬核长文梳理Linux内核概念及学习路线

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 来源 :头条号@Linux学习教程,冰凌块儿 整理:公众号:嵌入式Linux,发哥 ...

  5. Intel SDM Chapter 10: APIC

    原文:https://tcbbd.moe/ref-and-spec/intel-sdm/sdm-basic-ch10/ 目录 Overview Basics Registers Handling Lo ...

  6. APIC -- 高级可编程中断控制器

    文章目录 APIC -- 高级可编程中断控制器 1.x86 中断 2.Local APIC 2.1.1 使能或禁止 Local APIC 2.1.2 重定位 Local APIC 寄存器基地址 2.2 ...

  7. 【x86架构】APIC -- 高级可编程中断控制器

    APIC – 高级可编程中断控制器 x86架构的中断类型以及实现方式上有很多种.从中断控制器模块上分,x86中有8259中断控制器.Local APIC 以及 I/O APIC ,另外在PCI/PCI ...

  8. linux 禁用cpu的acpi,Linux中的ACPI和APIC

    Linux中的ACPI和APIC 发布时间:2007-12-21 01:00:21来源:红联作者:qtsmy 今天一朋友笔记本系统启动有问题,用的是ubuntu,据说是启动速度越用越慢,今天是完全进不 ...

  9. HTT超线程技术,CPU,core,package,die的概念

    超线程技术 Intel超线程技术(Intel HT技术)是为了在多任务环境下执行多线程操作系统和应用程序代码或单线程应用程序时提高IA-32处理器的性能而开发的.超线程技术使单个物理处理器可以使用共享 ...

最新文章

  1. 想学python有什么用-我们为什么要选择学习python?学习python有什么用?
  2. 【PAT乙级】1039 到底买不买 (20 分)
  3. springMVC+ajaxFileUpload中文名乱码的问题
  4. PL/SQL 语言 一
  5. wordpress漏洞上传php文件夹,WordPress Asset-Manager PHP文件上传漏洞
  6. sid更新 续订sas软件_顶级统计软件sas9.4 64位sid 有效期至2017年6月底
  7. 领域驱动设计的简略设计步骤
  8. 为什么手机显示itunes store无法连接服务器,无法连接到itunes store是什么意思怎么办...
  9. 第八章 了解tempdb数据库
  10. 使用Echarts实现地图3D效果
  11. 银河麒麟桌面操作系统sp1 2203双硬盘ghost备份及手动分区还原
  12. 无线通信网络学习之LTE网络架构篇(20141208)
  13. 四阶段法-交通分布预测方法-算法复现
  14. 苹果手机一直显示搜索服务器,苹果手机safari浏览器搜索页面没有了
  15. 虚拟化平台就在你身边-ARM架构虚拟化扩展, 以及SMMU对虚拟化等解决方案的重要性(白皮书 2010)
  16. 八千里路云和月 | 2021年最新从零到大数据专家学习路径指南
  17. 电脑任务栏卡死的解决方法
  18. 固态硬盘linux 性能,一种提高linux系统固态硬盘性能的方法与流程
  19. java调用OPC-DA出现0x00000005错误
  20. GBASE 8s 数据库 安装与卸载

热门文章

  1. W ndows10如何清理使用痕迹,Windows10操作技巧系列——删除最常用,最常访问,快速访问记录...
  2. 数字创意产业定义与研究范围
  3. 转:明茨伯格:管理者工作的传说和现实
  4. 批量修改python2.7版本print加括弧问题
  5. Shell脚本学习-阶段二十七-命令解释二
  6. 滚动视差让你不相信“眼见为实”
  7. 情感分析-英文电影评论
  8. HTML+CSS大作业:购物商城网页设计与实现——手机主题网站
  9. TVP周年庆:“用科技影响世界”,一起出发!
  10. 第12章 GUI编程与Tkinter相关组件介绍