|
发表于 2024-5-8 22:00:31
|
显示全部楼层
关于引退,我的理解是这样的,如果不正确请题主海涵....
比如如下4条指令
1、mov eax,[mem1] ;从mem1内存物理地址取出值放入到寄存器eax
2、mov ebx,[mem2] ;从mem2内存物理地址取出值放入到寄存器ebx
3、add ebx,eax ;将ebx+eax并将结果存入到ebx中
4、shl eax,3 ;将eax左移3位
传统上这4条指令是《串行》执行的即第一条执行完做第二条然后第三条第四条。
但是CPU引入了《流水线、乱序执行以及寄存器重命名》技术后,
在执行完第一条指令后,其实eax已经有值了,这个时候程序在执行第二条的同时,其它独立机构也能并行的执行第4条,你肯定会很好奇如果执行第四条后eax的值被左移了三位,那么第三条执行的时候eax的值就不是mem1内存中的值了啊,其实确实是这样的,但实际情况是CPU在运行完第一条指令的时候,找一个临时寄存器假如叫T_eax,让这个T_eax的值等于eax,然后第四条指令先让T_eax左移3位,把值放入T_eax先运行好放这放着,等前面的第二条第三条全部执行完毕之后,再把T_eax的值赋值给eax,这就叫引退技术。 |
|