小编Nor*_*g74的帖子

究竟什么"程序状态"setjmp保存?

我已经读过传入的jmp_buf变量中的setjmp"保存程序状态",但是我还没有找到任何关于它究竟是什么的描述.它是否复制了所有应用程序的内存?只是寄存器?堆栈?

c longjmp setjmp

9
推荐指数
2
解决办法
1547
查看次数

分支错误预测是否会冲洗整个管道,即使是非常短的if语句主体?

我读过的所有内容似乎都表明分支错误预测总会导致整个管道被刷新,这意味着浪费了很多周期.我从来没有听到任何人提到短期if条件的任何例外情况.

这似乎在某些情况下会非常浪费.例如,假设您有一个单独的if语句,其中包含一个非常简单的主体,该主体被编译为1个CPU指令.if子句将被编译为一条指令的条件跳转.如果CPU预测分支不被采用,则它将开始执行if-body指令,并可立即开始执行以下指令.现在,一旦if条件的评估已经到达管道的末端,也就是说,例如,12个周期之后,CPU现在知道它的预测是对还是错.如果它被错误预测,并且分支实际被占用,则CPU实际上只需要丢弃来自管道的1条指令(if-body中的指令).但是,如果它刷新整个管道,那么在以下指令中完成的所有工作也都被浪费了,并且必须无缘无故地重复.这是一个深度流水线架构上浪费的大量周期.

那么现代CPU有没有任何机制可以只丢弃短if体内的少数指令?或者它真的冲洗整个管道?如果是后者,那么我认为使用条件移动指令会获得更好的性能.顺便说一下,有没有人知道现代编译器是否善于将短if语句转换为cmov指令?

performance x86 branch cpu-architecture branch-prediction

9
推荐指数
2
解决办法
3584
查看次数

MSYS2:安装后 pip 不在路径中(找不到命令)

我在 MSYS2 shell 中使用以下命令在 MSYS2 上安装了 pip:( pacman -S mingw-w64-x86_64-python-pip 包的网页: https: //packages.msys2.org/package/mingw-w64-x86_64-python-pip

安装后,当我尝试在 MSYS2 shell 中运行 pip 时,我得到:bash: pip: command not found

由于某种原因,它没有在 MSYS2 系统路径中的任何位置安装 pip。中没有名为“pip”的文件C:\msys64\usr\bin。然而,安装过程确实在C:\msys64\mingw64\bin. 此目录不是 MSYS2 使用的默认路径的一部分。

我应该添加C:\msys64\mingw64\bin到我的 MSYS2 PATH 吗?更重要的是,为什么它将 pip 安装到不在 PATH 中的目录?这种烦恼有理由吗?

python pip msys msys2 pacman-package-manager

4
推荐指数
1
解决办法
3232
查看次数