二.调度 之 基于最简单的CPU的问题
2009-11-19 13:29
197 查看
根据一中我们对智能芯片添加的规则
现在我们再假定物理内存在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
现在我们再假定物理内存在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
相关文章推荐
- 在SSH框架下使用基于配置的Spring3的调度任务每次执行2次的问题
- 简单的cpu飙高问题定位脚本
- 简单的cpu飙高问题定位脚本
- netback的tasklet调度问题及网卡丢包的简单分析
- 无线通信中功率/速率调度的优化问题:一种最简单的情形
- 单例的Double check问题和CPU动态调度共存时的线程安全问题。
- Keras基于TensorFlow实现的简单分类问题
- 【微信支付】分享一个失败的案例 跨域405(Method Not Allowed)问题 关于IM的一些思考与实践 基于WebSocketSharp 的IM 简单实现 【css3】旋转倒计时 【Html5】-- 塔台管制 H5情景意识 --飞机 谈谈转行
- 基于Spark SQL 读写Oracle 的简单案例分析常见问题
- 简单的cpu飙高问题定位脚本
- 简单的cpu飙高问题定位脚本
- 基于JavaScript实现流水作业调度问题
- 网易2017实习笔试题-CPU双核调度问题(动态规划解决)
- 简单的cpu飙高问题定位脚本
- 简单的cpu飙高问题定位脚本
- 图的点着色、区间着色问题及其应用(基于贪心思想的DFS回溯法求点着色问题和区间着色算法求解任务调度问题)
- 基于一个简单内核mykernel的Linux内核时间调度的分析
- Spring @Async配置4. 基于@Async无返回值调用 使用的方式非常简单,一个标注即可解决所有的问题: 1 @Async //标注使用 2 public void asyncMe
- 打印质数的算法----基于算法复杂度的考虑,很多问题并不那么简单
- 简单的cpu飙高问题定位脚本