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

本文探讨了在不改变指令序列的前提下,使智能芯片能够同时执行两组相同循环的方法。提出了两种方案:一是通过增加指令指针寄存器来分别执行不同地址的循环;二是利用寄存器保存和恢复指令指针,实现多任务切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

现在我们再假定物理内存在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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值