二.调度 之 基于最简单的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
- 二.调度 之 基于最简单的CPU的问题
- 一.调度 之 一个最简单的CPU
- 四. MMU 之 基于最简单CPU的第二个问题
- 三. 调度 之 最简单的调度
- 最简单易懂的RxJava2.0学习教程之RxJava2的线程调度(二)
- Linux内核分析(二)之简单的进程调度
- Linux内核分析(二)之简单的进程调度
- 一个最简单的爬虫-调度程序
- 使用Cloudsim实现基于多维QoS的资源调度算法之二:实现基于多维QoS的资源调度算法
- cpu调度的层次
- DFS之最简单的迷宫问题
- 无线通信中功率/速率调度的优化问题:一种最简单的情形
- 最简单的Ogre系列之二——画线
- [DirectX游戏开发笔记之二] 最简单的DirectX
- 最简单的Ogre系列之二——画线
- 奇怪的问题之cpu
- Android最简单的基于FFmpeg的例子(二)---测试编译好的SO库
- java爬虫之基于httpclient的简单Demo(二)
- Json-lib
- 比薪水更重要的 ?
- Oracle 10g中新的SQL optimizer hints
- 度过有意义的生命
- JS触发事件
- 二.调度 之 基于最简单的CPU的问题
- 页式地址变换机构模拟 C++
- 公告
- android application 要点备忘 2
- 关于Android1.5 porting
- 随感
- pku 1150 The Last Non-zero Digit 阶乘最后一位非零数
- 使用Windows计数器的方法
- Flex程序开发心得小结