百科问答小站 logo
百科问答小站 font logo



对于这一条add指令,ALU是不是会被使用2次来分别计算有效地址和数据?而且是在1个阶段内还是2个阶段 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

对于最近几代Intel的CPU来说,有好几个ALU用来计算。其中,有通用的ALU,比如执行INC/DEC这些指令用到的ALU,还有是专用的ALU,就是用来说地址计算的。

在这个链接(

Intel's Haswell CPU Microarchitecture

)里,有这么一张图:


可以看到里面有LEA的ALU,就是专门做地址计算用的。

对于现代的CPU来说,调度器这里已经是被分解后的微指令了,一条ADD指令被拆分成多个微指令,再送到调度器里执行。

1、对EA的计算可以在译码阶段也可以在执行阶段;

在前面链接的前一页(

Intel's Haswell CPU Microarchitecture

),有图:


译码阶段不负责计算地址(Decoder跟ALU不直接连接)。

2、如果对EA的计算是发生在译码阶段的话,那么在执行阶段就没有任何事情做了,然后等到写回和访存阶段直接传送数据即可;

add dword ptr 100[ebx],eax实际上是被拆分成2-3条微指令,其中计算EA和ADD的操作是两条指令。

3、如果对EA的计算是发生在执行阶段的话,译码阶段就可以少一个步骤。

现代CPU不是完全按照书上的那种取指、译码、执行、访存、写回这几步走的,宏观的一条指令被拆分成微指令以后才会有上面的步骤。

----------------------

对于Intel的CPU来说,表面上是CISC,但内部是RISC,一条指令可能对应一个微指令(比如INC/DEC),也可能对应多个微指令(比如MOV EAX, [EBP+ESI*4+0x10]),教科书上讲的东西已经不完全适用于Intel的CPU了。当然,过去(比如8086)的CPU是什么架构我也说不清楚,过去有没有计算EA的ALU不能保证。




  

相关话题

  程序员找不到对象到底是为什么? 
  计算机基础知识对程序员来说有多重要? 
  汇编下call和ret指令是否有内存屏障的作用? 
  美本计算机 去 cmu-sv 卡内基梅隆硅谷校区 读 Software Management怎么样? 
  数字信号在物理层传输时,本质上是数字信号还是模拟信号,为什么? 
  生物信息博士如果刷完leetcode,计算机水平够用吗? 
  为什么得不到「自由意志」会让那么多人难以接受? 
  如何看待计算机科学几乎渗透到所有学科的研究当中? 
  我们高中数学为什么不重视算法?高中学的数列,三角函数,求导,圆锥曲线相关问题的解法和算法有什么关系? 
  为什么 CPU 的浮点运算能力比 GPU 差,为什么不提高 CPU 的浮点运算能力? 

前一个讨论
如何评价刚出的酷睿第七代低压处理器?
下一个讨论
如何看待长沙火车站候车室有空调故意不开空调,而外包的商务候车厅收费提供空调服务。?





© 2024-06-03 - tinynew.org. All Rights Reserved.
© 2024-06-03 - tinynew.org. 保留所有权利