cpu读取指令一条一条的,而不是一下取几条。
一条指令的执行其实是一系列独立的操作:
程序在执行前必须装入内存,IP包含要执行的下一条指令地址,指令队列存放若干条即将被执行的指令。指令的执行需要3个步骤
1,取指令2,译码3,执行
如果指令使用了内存操作数还要需要额外的步骤:取操作数和存储输出操作数。
当一条指令被读取到EU(执行单元)的同时,cpu从BIU(总线接口单元)读入一条指令,指令队列按照“先进先出”的方式工作。也就是说, 当指令队列出现空缺(有指令被读取执行)的时候,BIU会自动取指令弥补这一空缺。
在8086cpu里,指令的读取在BIU,指令的执行在EU,这两个单元相互独立分别完成各自的操作。
因为取指令是最频繁的操作,每条指令的长度不一,如果采用先读取再执行的方法, 效率上大大降低。
笨人观点。仅供参考。 |