Mik*_*keF 3 x86-64 intel interrupt cpu-architecture amd-processor
我正在阅读有关控制寄存器的 Intel 文档,但我很难理解 CR8 寄存器的使用方式。引用文档(2-18卷3A):
\n\n\n\n\n任务优先级(CR8 的位 3:0)\xe2\x80\x94 这设置对应于要阻止的最高优先级中断的阈值\n。A\n 值为 0 表示所有中断均已启用。该字段在 64 位模式下可用。值 15 表示所有中断将被禁用。
\n
如果您不介意的话,我有 3 个简短的问题:
\n\n因此 CR8 的位 3 到 0 构成了这 16 个优先级值。但优先事项是什么?我认为是一个正在运行的“线程”,对吗?
但是,与接收中断以查看是否必须被阻止时相比,CR8 中的优先级值是多少?
当中断被阻塞时,这意味着什么?它是“延迟”到以后的时间,还是只是被丢弃,即丢失?
CR8表示CPU当前的优先级。当中断待处理时,中断向量编号的位 7:4 与 CR8 进行比较。如果向量更大,则对其进行服务,否则将保持待处理状态,直到 CR8 设置为较低值。
假设 APIC 正在使用,它有一个 IRR(中断请求寄存器),每个中断向量号有一位。当该位被设置时,中断处于待处理状态。它可以永远保持这种状态。
当中断到达时,它会被或运算到 IRR 中。如果中断已处于待处理状态(即该向量的 IRR 位已设置),则新中断将与前一个中断合并。(你可以说它被删除了,但我不这么认为;相反,我说两者合而为一。)由于这种合并,中断服务例程必须设计为处理所有准备好的工作,而不是期望每个工作单元都有明显的中断。