二.调度 之 基于最简单的CPU的问题

来源:互联网 发布:数据标准化到任一区间 编辑:程序博客网 时间:2024/05/21 09:09

根据一中我们对智能芯片添加的规则

现在我们再假定物理内存在0x2000地址开始存在与上面0x1000地址有相同的程序(指令序列)
物理内存安排如下:
0x1000:        nop
0x1001:        nop
0x1002:        nop
0x1003:        nop
0x1004:        nop
0x1005:        nop
0x1006:        jmp 0x1000
  .
  .
  .
0x2000:        nop
0x2001:        nop
0x2002:        nop
0x2003:        nop
0x2004:        nop
0x2005:        nop
0x2006:        jmp 0x2000
并且假定我们的智能芯片当前正在0x1000处执行循环

 

思考一个问题:在不改变上述指令序列的情况下如何让我们的智能芯片既执行0x1000处的循环又执行0x2000处的循环呢?

 

方法1:向智能芯片添加规则
规则八.存在一个指令指针寄存器IP1,用于指示要读取的物理内存地址
规则九.如果当前执行的是NOP指令,IP1=IP1+1
规则十.如果当前执行的是JMP指令,IP1=(JMP指令的后两个字节)
规则十一.IP1内容改变时到物理内存中取指令
方法1的弱点,如果物理内存中有多处存在上述的指令序列,并都要执行,就得为每处指令序列添加方法1的规则

 

方法2:向智能芯片添加规则
规则八.存在一个寄存器SP,用于指示内存的某个地址
规则九.可以处理MOV指令,可以把寄存器的内容保存到物理内存中(比如 MOV [0x0050], SP),也可以把内存中的内容加
载到寄存器(比如 MOV SP, [0x0050]),也可以给寄存器赋值(比如 MOV SP, 1234), 指令长度3个字节
规则十.可以处理IRET指令,指令执行时自动把SP指向的物理内存中的值赋给IP, 指令长度1个字节
规则十一.智能芯片的外部有个输入引脚,当该引脚的电平从低变化到高时,打断指令的执行,自动把当前IP的值保存到
SP指向的物理内存中,并且IP的内容自动变成0x0000