LOOP(英特尔参考手动输入)递减ecx/rcx,然后如果非零则跳转.这很慢,但是英特尔不能廉价地把它变得很快吗? dec/jnz已经将宏观融合成 Sandybridge家族的一个 uop; 唯一的区别是设置标志.
loop关于各种微体系结构,来自Agner Fog的说明表:
Bulldozer-family/Ryzen:1 m-op(与宏观融合测试和分支相同,或者jecxz)
P4:4次(相同jecxz)
loope/ loopne).吞吐量= 4c(loop)或7c(loope/ne).loope/ loopne). 吞吐量=每5个循环一个,这是将循环计数器保留在内存中的瓶颈!jecxz只有2 uops,吞吐量与普通吞吐量相同jcc难道解码器不能像lea rcx, [rcx-1]/ 那样解码jrcxz吗?这将是3 uops.至少那是没有地址大小前缀的情况,否则它必须使用ecx和截断RIP,EIP如果跳转; 也许奇怪的地址大小选择控制减量的宽度解释了许多uops?
或者更好,只需将其解码为不设置标志的融合分支和分支? dec ecx …
来自Ira Baxter回答,为什么INC和DEC指令不会影响进位标志(CF)?
大多数情况下,我远离
INC而DEC现在,因为他们做的部分条件代码更新,这样就可以在管道中引起滑稽的摊位,和ADD/SUB没有.因此,无关紧要(大多数地方),我使用ADD/SUB避免失速.我使用INC/DEC仅在保持代码较小的情况下,例如,适合高速缓存行,其中一个或两个指令的大小产生足够的差异.这可能是毫无意义的纳米[字面意思!] - 优化,但我在编码习惯上相当老派.
我想问一下为什么它会导致管道中的停顿,而添加不会?毕竟,无论是ADD和INC更新标志寄存器.唯一的区别是INC不更新CF.但为什么重要呢?
我只是想知道除INTEL和AMD之外还有哪些其他CPU架构可用.因此,在Wikipedia上找到了CPU架构列表.
它将值得注意的CPU架构分为以下几类.
我正在分析他们的目的并且几乎没有疑问.以微电脑CPU(PC)架构为参考,并将其与其他人进行比较:
嵌入式CPU架构:
工作站/服务器CPU架构
迷你/大型机CPU架构
混合核心CPU架构
如果可能,请以这种格式保留您的答案:
XYZ CPU架构
- XYZ的目的
- 需要一个新的架构.为什么现在的微机CPU架构不能工作?它们达到3GHZ并具有多达8个核心.
- 需要新的操作系统为什么我们需要一种新的操作系统来实现这种架构?
编辑:
伙计们,这不是一个家庭作业问题.我无法做任何让你相信的事情.我不知道问题是不清楚还是别的,但我只对具体的技术细节感兴趣.
让我以另一种方式提出这个问题的一部分.您正在接受采访,如果面试官问您"告诉我,微电脑处理器速度快,功能强大,我们的PC操作系统也很好.为什么我们需要不同的架构,如SPARC,Itanium,需要不同的操作系统,如Windows Server对于服务器?" 你会回答什么?我希望得到我的观点.
assembly computer-science operating-system computer-architecture
x86反汇编程序如何知道在哪里分解指令?
我正在查看8088指令集.例如,移动指令有7种变化,范围从2到4个字节.说明本身似乎没有遵循特定的顺序.为什么x86难看的另一个原因是什么?.
例如:
76543210 76543210 76543210 76543210
reg/mem to/from reg 100010dw ||regr/m
imm to reg/mem 1100011w ||000r/m dat dat w=1
imm to reg 1011wreg data dat w=1
imm to accum 1010000w addr-low addrhigh
accum to mem 1010001w addr-low addrhigh
reg/mem to seg 10001100 ||0ssr/m
seg to reg/mem 10001100 ||0ssr/m
Legend:
||=mod {NO-DISP=0,DISP-LOW,DISP-HIGH,REG}
ss=seg enum{es=0,cs,ss,ds}
reg=enum{ax=0,bx,cd,dx,bx,sp,bp,si,di (if w=1)} enum{al,bl...} (if w=0)
r/m=reg or mem (mod=3 then REG, else mem)
Run Code Online (Sandbox Code Playgroud)
许多指令可以在第一个字节中重叠:
76543210 76543210 76543210 76543210
push …Run Code Online (Sandbox Code Playgroud)