标签: cpu-architecture

是否存在运行时代码修改的智能案例?

你能想到运行时代码修改的任何合法(智能)用法(程序在运行时修改它自己的代码)吗?

现代操作系统似乎对执行此操作的程序不屑一顾,因为病毒已使用此技术来避免检测.

我能想到的是某种运行时优化,它可以通过在运行时知道某些在编译时无法知道的东西来删除或添加一些代码.

executable platform-agnostic cpu-architecture instructions self-modifying

119
推荐指数
10
解决办法
6266
查看次数

为什么布尔1字节而不是1位大小?

在C++中,

  • 为什么布尔1字节而不是1位大小?
  • 为什么不存在类似4位或2位整数的类型?

在为CPU编写仿真器时,我错过了上述内容

c++ cpu-architecture

115
推荐指数
8
解决办法
5万
查看次数

为什么x86难看?为什么与其他人相比,它被认为是劣等的?

最近我一直在阅读一些SO档案,并遇到了针对x86架构的声明.

还有更多的评论

我试过搜索,但没有找到任何理由.我发现x86不好可能因为这是我熟悉的唯一架构.

有人可以给我一些考虑x86丑陋/坏/劣等的理由.

x86 assembly x86-64 mips cpu-architecture

101
推荐指数
6
解决办法
3万
查看次数

为什么x86-64系统只有48位虚拟地址空间?

在一本书中,我读了以下内容:

32位处理器具有2 ^ 32个可能的地址,而当前的64位处理器具有48位地址空间

我的期望是,如果它是一个64位处理器,地址空间也应该是2 ^ 64.

所以我想知道这种限制的原因是什么?

x86-64 cpu-architecture virtual-memory processor-architecture

88
推荐指数
7
解决办法
4万
查看次数

单词和字节之间有什么区别?

我做了一些研究.一个字节是8位,一个字是可以在内存中寻址的最小单元.单词的确切长度会有所不同.我不明白的是有一个字节是什么意思?为什么不说8位?

我问过这个问题的教授,他说这些天大多数机器都是字节可寻址的,但这会产生什么结果呢?

memory hardware assembly terminology cpu-architecture

88
推荐指数
7
解决办法
15万
查看次数

为什么英特尔在其处理器中隐藏内部RISC内核?

从Pentium Pro(P6微体系结构)开始,英特尔重新设计了它的微处理器,并在旧的CISC指令下使用了内部RISC内核.由于Pentium Pro所有CISC指令都分为较小的部分(uops),然后由RISC内核执行.

一开始我很清楚英特尔决定隐藏新的内部架构并强迫程序员使用"CISC shell".由于这一决定,英特尔可以在不破坏兼容性的情况下完全重新设计微处理器架构,这是合理的.

但是我不明白一件事,为什么英特尔仍然保留了多年内隐藏的内部RISC指令集?为什么他们不让程序员使用RISC指令,比如使用旧的x86 CISC指令集?

如果英特尔长期保持向后兼容性(我们仍然在64位模式旁边有虚拟8086模式),为什么它们不允许我们编译程序以便它们绕过CISC指令并直接使用RISC核心?这将开启自然的方式来慢慢放弃x86指令集,现在已弃用(这是英特尔决定在内部使用RISC核心的主要原因,对吧?).

看看新的英特尔'酷睿i'系列,我看到,他们只扩展了CISC指令集,增加了AVX,SSE4等.

x86 intel cpu-architecture

85
推荐指数
5
解决办法
4万
查看次数

原子操作成本

原子操作的成本是什么(比较和交换或原子添加/减少中的任何一个)?它消耗了多少周期?它会暂停SMP或NUMA上的其他处理器,还是会阻止内存访问?它会在无序CPU中刷新重新排序缓冲区吗?

缓存有什么影响?

我对现代流行的CPU感兴趣:x86,x86_64,PowerPC,SPARC,Itanium.

performance atomic cpu-architecture lock-free

79
推荐指数
3
解决办法
3万
查看次数

回写与直写

我的理解是两种方法的主要区别在于,在"直写"方法中,数据立即通过高速缓存写入主存,而在"回写"数据则是在"后期"写入.

我们还需要在"后期"等待内存,那么"直写"的好处是什么?

caching cpu-architecture cpu-cache

77
推荐指数
4
解决办法
12万
查看次数

检测CPU架构编译时

在编译C或C++代码时,找出CPU架构最可靠的方法是什么?据我所知,不同的编译器有自己的一套非标准预处理器定义(_M_X86在MSVS中__i386__,__arm__在GCC 中等).

有没有一种标准的方法来检测我正在构建的架构?如果没有,是否有各种编译器的这种定义的综合列表的来源,例如包含所有样板#ifdef的标题?

c c++ cpu-architecture detection compile-time

76
推荐指数
6
解决办法
6万
查看次数

为什么条件移动不易受分支预测失败的影响?

在阅读了这篇文章后(在StackOverflow上回答)(在优化部分),我想知道为什么条件移动不容易受到分支预测失败的影响.我在一篇关于cond移动的文章中找到了(PDF由AMD提供).在那里,他们声称cond的性能优势.移动.但为什么会这样呢?我没有看到它.在评估ASM指令的时刻,前面的CMP指令的结果尚未知晓.

谢谢.

optimization performance assembly cpu-architecture branch-prediction

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