当前位置:首页 > 公众号精选 > Linux阅码场
[导读]作者简介   王柏生  资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟化技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。著有畅销书《深度探索Linux操作系统》(2013年出版)。谢广军  计算机专业博士...

作者简介

     王柏生  资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟化技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。著有畅销书《深度探索Linux操作系统》(2013年出版)。

谢广军  计算机专业博士,毕业于南开大学计算机系。资深技术专家,年的IT行业工作经验。现担任百度智能云副总经理,负责云计算相关产品的研发。多年来一直从事操作系统、虚拟化技术、分布式系统、大数据、云计算等相关领域的研发工作,实践经验丰富。 

本文内容节选自《深度探索Linux虚拟化技术》,已获得机械工业出版社华章公司授权。

欢迎读者文末留言,阅码场和机械工业出版社华章公司将为每位精彩留言获奖用户奉送该书一本。


PIC虚拟化


计算机系统有很多的外设需要服务,显然,CPU采用轮询的方式逐个询问外设是否需要服务,是非常浪费CPU的计算的,尤其是对那些并不是频繁需要服务的设备。因此,计算机科学家们设计了外设主动向CPU发起服务请求的方式,这种方式就是中断。采用中断方式后,在没有外设请求时,CPU就可以继续其他计算任务,而不是进行很多不必要的轮询,极大地提高了系统的吞吐[1] 在每个指令周期结束后,如果CPU关中断标识(IF)没有被设置,那么其会去检查是否有中断请求,如果有中断请求,则运行对应的中断服务程序,然后返回被中断的计算任务继续执行。

CPU不可能为每个硬件都设计专门的管脚接收中断,管脚数量的限制、电路的复杂度、灵活度等方方面面都不现实,因此,需要设计一个专门管理中断的单元。由中断管理单元接受来自外围设备的请求,确定请求的优先级,并向CPU发出中断。1981年IBM推出的第1代个人电脑PC/XT使用了一个独立的8259A作为中断控制器,自此,8259A就成为了单核时代中断芯片事实上的标准。因为可以通过软件编程对其进行控制,比如当管脚收到设备信号时,可以编程控制其发出的中断向量号,因此,中断控制器又称为可编程中断控制器(programmable interrupt controller),简称PIC。单片8259A可以连接8个外设的中断信号线,可以多片级联支持更多外设。

8259A和CPU的连接如图5所示。

图5 8259A和CPU连接

片选和地址译码器相连,当CPU准备访问8259A前,需要向地址总线发送8259A对应的地址,经过译码器后,译码器发现是8259A对应的地址,因此会拉低与8259A的CS连接的管脚的电平,从而选中8259A,通知8259A,CPU准备与其交换数据了。

8259A的D0~7管脚与CPU的数据总线相连。从CPU向8259A发送ICW和OCW,从8259A向CPU传送8259A的状态以及中断向量号,都是通过数据总线传递的。

当CPU向8259A发送ICW、OCW时,当把数据送上数据总线后,需要通知8259A读数据,CPU通过拉低WR管脚的电平的方式通知8259A,当8259A的WR管脚收到低电平后,读取数据总线的数据。类似的,CPU准备好读取8259A的状态时,拉低RD管脚通知8259A。

8259A和CPU之间的中断信号的通知使用专用的连线,8259A的管脚INTR(interrupt request)和INTA(interrupt acknowledge)分别与处理器的INTR和INTA管脚相连。8259A通过管脚INTR向CPU发送中断请求,CPU通过管脚INTA向PIC发送中断确认,告诉PIC其收到中断并且开始处理了。8259A与CPU之间的具体中断过程如下:

1)8259A的IR0~7管脚高电平有效,所以当中断源请求服务时,拉高连接IR0~7的管脚,产生中断请求。

2)8259A需要将这些信号记录下来,因此其内部有个寄存器IRR(Interrupt Request Register),负责记录这个中断请求,针对这个例子,IRR的bit 0将被设置为1。

3)有的时候,我们会屏蔽掉某个设备的中断。换句话说,就是的当这个中断源向8259A发送信号后,8259A并不将这个中断信号发送给CPU。读者不要将屏蔽和CPU通过cli命令关中断混淆,CPU关中断时,中断还会发送给CPU,只是在关中断期间CPU不处理中断。8259A中的寄存器IMR(Interrupt Mask Register)负责记录某个中断源是否被屏蔽,比如0号中断源被设备了屏蔽,那么IMR的bit 0将被设置。那么这个IMR是谁设置的呢?当然是CPU中的操作系统。因此这一步,8259A将会检查收到的中断请求是否被屏蔽。

4)在某一个时刻,可能有多个中断请求,或者是之前存在IRR中的中断并没有被处理,8259A中积累了一些中断。某一个时刻,8259A只能向CPU发送一个中断请求,因此,当存在多个中断请求时,8259A需要判断一下中断优先级,这个单元叫做priority resolver,priority resolver将在IRR中选出优先级最高的中断。

5)选出最高优先级的中断后,8259A拉高管脚INTR的电平,向CPU发出信号。

6)当CPU执行完当前指令周期后,其将检查寄存器FLAGS的中断使能位IF(Interrupt enable flag),如果允许中断,那么将检查INTR是否有中断,如果有中断,那么将通过管脚INTR通知8259A处理器将开始处理中断。

7)8259A收到CPU发来的INTA信号后,将置位最高优先级的中断在ISR(In-Service Register)中对应的位,并清空IRR中对应的位。

8)通常,x86 CPU会发送第2次INTA,在收到第2次INTA后,8259A会将中断向量号(vector)送上数据总线D0~D7。

9)如果8259A设置为AEOI(Automatic End Of Interrupt)模式,那么8259A复位ISR中对应的bit,否则ISR中对应的bit一直保持到收到系统的中断服务程序发来的EOI命令。

我们知道,中断服务程序保存在一个数组中,数组中的每一项对应一个中断服务程序。在实模式下,这个数组称为IVT(interrupt vector table);在保护模式下,这个数组称为IDT(Interrupt descriptor table)。

这个数组中保存的服务程序,并不是全部都是外部中断,还有处理CPU内部异常的以及软中断服务程序。x86CPU前32个中断号(0-31)留给处理器异常的,比如第0个中断号,是处理器出现除0(Divide by Zero)异常的,不能被占用。因此,假设我们计划IVT数组中第32个元素存放管脚IR0对应的ISR,那么我们初始化8259A时,通过ICW,设置起始的irq base为32,那么当8259A发出管脚IR0的中断请求时,则发出的值是32,管脚IR1对应的是33,依此类推。这个32、33就是所谓的中断向量(vector)。换句话说,中断向量就是中断服务程序在IVT/IDT中的索引。下面就是设置irq_base的代码,在初始化时,通过第2个初始化命令字(ICW2)设置:

commit 85f455f7ddbed403b34b4d54b1eaf0e14126a126

KVM: Add support for in-kernel PIC emulation

linux.git/drivers/kvm/i8259.c

static void pic_ioport_write(void *opaque, u32addr, u32 val)

{

  …

    switch(s->init_state) {

    …

    case 1:

      s->irq_base = val
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

北京2023年8月9日 /美通社/ -- 浪潮云海经过13年的发展,到今天形成了以服务器虚拟化、超融合、InCloudOS 为代表的云海产品家族,凭借领先的产品技术能力和丰富的行业实践,满足不同行业、场景下客户的上云需求...

关键字: DMA 虚拟化 软硬件 CPU

北京2023年2月6日 /美通社/ -- 近日,浪潮正式推出G7系列超融合一体机。该新品基于面向智慧计算场景优化的新一代G7服务器平台和功能丰富的云软件栈,通过双擎驱动一体化底座整合了更多的生态解决方案。同时,丰富的硬件...

关键字: 虚拟机 虚拟化 数字化 接口

北京2022年12月21日 /美通社/ -- 近日,浪潮信息正式发布服务器操作系统KOS,为智慧时代数据中心软硬件协同设计与优化,提供了稳定可靠、高效协同、广泛兼容、全天候运维的基础软件平台支撑。伴随KOS的发...

关键字: 操作系统 OS 芯片 虚拟化

北京2022年11月28日 /美通社/ -- 近日,国际数据公司(IDC)发布《2022Q2中国软件定义存储及超融合市场研究报告》数据显示,2022上半年浪潮超融合以47.65%市场占有率在能源行业市场份额持续领跑,排名...

关键字: 虚拟化 云计算 数据中心 IDC

今天,小编将在这篇文章中为大家带来云计算的有关报道,通过阅读这篇文章,大家可以对云计算具备清晰的认识,主要内容如下。

关键字: 云计算 虚拟化 分布式

近日,中国ICT产业权威的市场研究和咨询机构计世资讯(CCW Research)发布《2021-2022年中国服务器虚拟化市场及技术发展趋势研究报告》。根据报告显示,紫光股份旗下新华三集团以25.5%的市场份额,位居20...

关键字: 新华三 服务器 虚拟化

北京2022年11月10日 /美通社/ -- 日前,思享无限旗下红人直播发布新版本,升级虚拟人形象及元宇宙生态,增强用户虚拟形象在思享无限元宇宙空间中的具象表达,提升用户与主播间的交互体验。 近期,虚拟人火爆...

关键字: 虚拟化 BSP MEDIA RESEARCH

北京2022年11月10日 /美通社/ -- 随着互联网和云计算经济规模的快速发展,各行各业的数据中心规模日益变大,服务器需求的膨胀、高密度数据中心的发展、IT架构的变更等因素促进了国内外客户对多核数的双路服务...

关键字: AMD 数据中心 大规模数据 虚拟化

BeFootball推出了SuperPlayer,在Meta Quest商店向公众免费提供,这是该公司正在开发的沉浸式足球元宇宙的第一步。SuperPlayer是一款虚拟现实足球游戏,提供在虚拟化真实足球体育场进行的两种...

关键字: 虚拟现实 PLAYER SUPER 虚拟化

(全球TMT2022年11月2日讯)近日,VMmark发布了最新的性能测试结果,浪潮信息inMerge1100超融合产品以25.74分的成绩,刷新了vSAN架构(Intel双路平台)的虚拟化性能测试记录。...

关键字: MARK GE 虚拟化 Intel
关闭