. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于8086CPU工作过程的疑问  [待解决] 回复[ 1次 ]   点击[ 270次 ]  
sleepinglion
[帖 主]   [ 发表时间:2010-07-18 01:01 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-13 23:22
大家都知道:8086具有6B指令流队列。按照第二版所讲的8086CPU的工作工程的讲解。指令队列中一次只会有一条指令(因为书上说是执行指令后,再将读取的指令进入指令缓冲器 P35),那么剩下的空余的指令空间就浪费了。这显然不是硬件设计者所希望看到的。不符合流水线的设计原则。所以……书上的解释是不是有点不合理?
我觉得:应该是先读取下面的几条指令进入指令队列,然后再执行队列。希望高手指点!
masmaster
[第1楼]   [ 回复时间:2010-07-18 10:19 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
cpu读取指令一条一条的,而不是一下取几条。
一条指令的执行其实是一系列独立的操作:
程序在执行前必须装入内存,IP包含要执行的下一条指令地址,指令队列存放若干条即将被执行的指令。指令的执行需要3个步骤
1,取指令2,译码3,执行
如果指令使用了内存操作数还要需要额外的步骤:取操作数和存储输出操作数。
当一条指令被读取到EU(执行单元)的同时,cpu从BIU(总线接口单元)读入一条指令,指令队列按照“先进先出”的方式工作。也就是说, 当指令队列出现空缺(有指令被读取执行)的时候,BIU会自动取指令弥补这一空缺。
在8086cpu里,指令的读取在BIU,指令的执行在EU,这两个单元相互独立分别完成各自的操作。
因为取指令是最频繁的操作,每条指令的长度不一,如果采用先读取再执行的方法, 效率上大大降低。
笨人观点。仅供参考。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved