现代体系结构(指令流水),中断处理(中断隐指令,中断门,Do_IRQ,关中断,Do_IRQ_Handler, 软中断SWI,中断嵌套与屏蔽),语句同步处理

Table of Contents

 

现代体系结构:

1 流水

2 冒险 

3 乱序 和 意外事件处理

4 中断处理

处理流程

中断x被cpu[由搁置态]正式处理(中断隐指令开始执行)的时机:

考虑更复杂的超标量乱序流水

关于非中断的正常语句的逻辑正确性(同步等)处理

在乱序超标量多cpu的背景下:

其他


现代体系结构:

1 流水

五级流水: (  =》代表经过时钟边缘触发。对于a-》b=》c:b为时钟触发,a为触发前的输入,c为触发后的输出。 -》代表不经过时钟触发器的计算/处理  )
PC=>PC+4->PC->instruction->IR=>RegCtrl->IRex=>ExCtrl->IRmem=>MemCtrl->IRwb=>WbCtrl->Reg
每条命令经过5次 =》 时钟边缘,5个时钟周期
现代体系结构(指令流水),中断处理(中断隐指令,中断门,Do_IRQ,关中断,Do_IRQ_Handler, 软中断SWI,中断嵌套与屏蔽),语句同步处理_第1张图片
现代体系结构(指令流水),中断处理(中断隐指令,中断门,Do_IRQ,关中断,Do_IRQ_Handler, 软中断SWI,中断嵌套与屏蔽),语句同步处理_第2张图片
 
点击打开链接
 

2 冒险 

*解决方法: 前递(及时将Exctrl=》得到的输出电平 输入到IRex=》)  旁路, 预测,空泡, 指令/数据内存cache
 

3 乱序 和 意外事件处理

*最终一致性

4 中断处理

处理流程

考虑单核单流水
一次中断处理: 中断隐指令=》中断门 Intr Gate=》Do_IRQ保存现场及其他处理(如中断计数变化)=》 [开中断] => Do_IRQ_Handler中断处理 => [软中断SWI] => Ret_From_IRQ or Restore_All or 处理其它中断 => IRET  
见 点击打开链接 

中断x被cpu[由搁置态]正式处理(中断隐指令开始执行)的时机:

1 cpu上正在进行的是中断处理y, 而且能够被打断:

 y处于开中断状态且不屏蔽x类型中断:

 开关中断发生在: 1 中断隐指令会关中断、2 Do_IRQ过程中会开/关中断、3返回时IRET指令恢复EFLAGS会开中断

2 cpu上正在运行的是现行程序(各种主动的内核/用户的线程/进程) 

 这种情况下中断也应该是打开的
 
现代体系结构(指令流水),中断处理(中断隐指令,中断门,Do_IRQ,关中断,Do_IRQ_Handler, 软中断SWI,中断嵌套与屏蔽),语句同步处理_第3张图片
点击打开链接

 

考虑更复杂的超标量乱序流水

现代体系结构(指令流水),中断处理(中断隐指令,中断门,Do_IRQ,关中断,Do_IRQ_Handler, 软中断SWI,中断嵌套与屏蔽),语句同步处理_第4张图片

必须保证中断处理时刻的局部顺序性

否则中断处理如例程切换后根本无法恢复原来的进程/中断上下文
怎么处理?
现代体系结构(指令流水),中断处理(中断隐指令,中断门,Do_IRQ,关中断,Do_IRQ_Handler, 软中断SWI,中断嵌套与屏蔽),语句同步处理_第5张图片
点击打开链接
 
 

关于非中断的正常语句的逻辑正确性(同步等)处理

在乱序超标量多cpu的背景下:

 1 每个线程都在1个乱序超标量流水上,指令之间可能并行/乱序提交
 2 每个线程时刻可能被调度出cpu
 2 多个线程/中断在多cpu上并行

1 cpu / 总线 /内存:     spinlock! pg57

现代体系结构(指令流水),中断处理(中断隐指令,中断门,Do_IRQ,关中断,Do_IRQ_Handler, 软中断SWI,中断嵌套与屏蔽),语句同步处理_第6张图片

2 cache : 一致性协议!MESI

 

其他

 分布式机型

你可能感兴趣的:(后端,操作系统)