cpu-architecture相关内容

今天有两个栈任何活着的CPU架构?

它是简单的prevent缓冲区溢出与一般两个栈的探索? 一个堆栈变量和传递参数,其他为返回地址。 还是喜欢NX / XD位的东西(在AMD /英特尔X86)为不可执行堆栈做的更好? 解决方案 安腾有两个堆栈。相信的是,用于存储局部变量(例如数组和东西),而其他为返回地址。通过这种方式,你不能覆盖由超速缓冲返回地址。 https://blogs.msdn.microsoft.com/ ..
发布时间:2016-07-18 21:55:12 .NET Framework

是MESI协议就够了,或者是记忆障碍仍需要? (英特尔CPU)

我发现其中规定,当字符串(不是的std ::字符串,但组装字符串指令)使用内存屏障是必要的,以prevent他们的英特尔文件由CPU被重新排序。 然而,当两个线程(在两个不同的内核)正在访问相同的内存也需要记忆障碍是什么?我脑子里想的情形是,它没有CPU的一个“自己”的高速缓存行写入此内存和核心写入到存储缓冲区(而不是缓存)。内存屏障是必需的,以刷新存储缓冲区缓存的价值,所以其他核心能够获得这个 ..
发布时间:2016-07-18 21:36:34 .NET Framework

86 32位运算codeS,在x86的64位不同或者完全删除

我抬头一看维基百科在x86的64位x86的向后兼容性和它说: x86-64的是完全的16位和32位的x86向后兼容 code.Because全86的16位和32位指令集留 在硬件中实现没有任何插入仿真,现有 86可执行文件没有兼容性或性能运行 处罚,而那些重codeD现有的应用程序取 优势的处理器设计的新功能,可以达到 性能改进。 所以,我测试了一些说明,看到一些实际上是产 ..
发布时间:2016-07-18 21:26:24 .NET Framework

什么是第r代表在RAX,RBX,RCX,RDX,RSI,RDI,RBP,RSP?

在x86汇编语言已经不得不改变的x86处理器架构从8位更改为16bit的,以32位和64位,现在 我知道,在32位汇编​​寄存器名称(EAX,EBX等),每个名字的电子preFIX代表引申意义寄存器的32位形式,而不是16位的形式(AX,BX等)。 什么是代表64位中,这些寄存器名称第r preFIX? 解决方案 我认为这只是R代表“注册”,因为有额外的寄存器R8 - 对x86-64的 ..
发布时间:2016-07-18 21:15:48 .NET Framework

机code对齐

我想了解机器code对齐的原则。我有一个汇编实现,它可以生成运行时间机器code。我使用的每一个分支目标的16字节对齐,但看起来是不是最佳的选择,因为我发现,如果我删除比对齐有时同一code工作得更快。我认为这是与高速缓存行的宽度,使一些命令是因为这样一个高速缓存行和CPU经验摊位切割。因此,如果调整​​的一些字节在一个地方插入,将移动指令还通过地方高速缓存的边界线...... 我希望实现自动对 ..

什么是在SandyBridge的微架构栈引擎?

我读 http://www.realworldtech.com/sandy-bridge/ 并且我面临着一些问题,在了解了一些问题: 专用堆栈指针跟踪器还美元的Sandy Bridge p $ psent 并将其改名为堆栈指针,省去序列依赖性和 移除一些微指令的。 什么是专用堆栈指针跟踪实际上? 有关的Sandy Bridge(和P4),英特尔仍然使用术语ROB。但它 关键 ..
发布时间:2016-07-18 20:58:59 .NET Framework

内存映射I的缓存行为/ O

有谁知道CPU缓存行为,类型(例如,不可缓存的写入合并)被分配到的文件备份的,内存映射现代x86系统的I / O?有什么方法来检测是哪种情况,并有可能覆盖默认行为? Windows和Linux感兴趣的主要操作系统。 解决方案 施加到地址空间区域高速缓存策略通常独立于操作系统并且只在型地址空间页后面设备的依赖。事实上operatng系统无任何缓存策略适用于任何内存区域,但incorectly分 ..
发布时间:2016-07-18 20:53:36 C/C++开发

可以分支prediction导致非法指令?

在下面的伪code: 如果(rdtscp硬件支持){ 调用“rdtscp”指令 }其他{ 调用“RDTSC”指令 } 假设CPU不支持 rdtscp 指令,所以我们退回到else语句。 如果CPU误predicts分支,是有可能的指令流水线来尝试​​执行 rdtscp 并抛出一个 Illgal指令错误? 解决方案 有明确记载在Intel处理器手册的#UD陷阱(无效运算co ..
发布时间:2016-07-18 20:53:10 .NET Framework

多少位是一个词,就是不断在不同的架构?

是一台机器的字的始终是相同的还是它依赖于机器架构? 而这个词的意思的字的上下文敏感的或普遍适用? 解决方案 本机字的大小取决于系统的架构,同时也是操作系统是如何运行的应用程序。 在视窗64例如一个应用程序可以运行或者作为一个64位应用程序(具有64位mahine字),或者作为一个32位应用程序(具有32位计算机的字)。这样一个机器字的大小可以在同一台机器上,即使不同这取决于如何使用它 ..
发布时间:2016-07-18 20:46:01 .NET Framework

微架构归零通过寄存器更名寄存器的:性能与一个MOV?

我读的在博客帖子,最近的X86微架构还能够处理常见的寄存器清零成语(如异或与自身的寄存器)登记更名;在笔者的话: “寄存器更名也知道如何执行这些指令 - 它可以零寄存器本身” 是否有人知道这是如何在实践中?我知道,有些国际审计准则,比如MIPS,包含始终在硬件设置为零的建筑名册;这是否意味着在内部,X86微架构也有类似的“零”注册的内部寄存器映射到时候方便呢?或者是我的心智模型不是这个 ..
发布时间:2016-07-18 20:42:19 .NET Framework

随着可变长度指示如何在电脑知道该指令被获取的长度?

在哪里不是所有的指令都是相同长度的架构,如何在电脑知道有多少在一个指令读取?例如,在英特尔IA-32的一些指令是4字节,有些是8字节,所以它是如何知道是否要阅读4个或8个字节?难道当机器上电的第一条指令红有一个已知的大小和每个指令包含下一个的大小? 解决方案 首先,处理器不需要知道多少字节抓取,它可以读取足以为典型或平均提供有针对性的吞吐量字节方便数指令长度。任何额外的字节可以是发生在一个缓冲 ..
发布时间:2016-07-18 20:25:51 .NET Framework

什么是循环指令(ROL,RCL在x86)的目的是什么?

我总是在想什么的移位指令,某些CPU有目的(ROL,RCL在x86,例如)。什么样的软件,利用这些指令?我首先想到它们可用于加密/计算哈希codeS,但这些库在C,它不具有映射到这些指示运营商通常写。结果 有没有人发现他们的使用?为什么他们加入到指令集? 解决方案 用于旋转都需要跨越多个字位的变化。当你SHL低位字,高位位流溢到随身携带。为了完成该操作,则需要更高的字(S)而到了低位带来 ..
发布时间:2016-07-18 20:09:21 .NET Framework

读程序计数器直接

可以运行在Intel CPU的程序计数器可直接读取(也就是没有'招数')在内核模式或一些其他模式? 解决方案 没有,(E / R)IP不能直接访问。为了得到它: 通话_here _here:流行EAX ; EAX现在拥有电脑。 ..
发布时间:2016-07-18 19:43:35 .NET Framework

为什么循环指令慢?无法英特尔已经有效地实现了吗?

循环递减ECX,如果非零跳转。 它很慢,但不能有英特尔廉价使它快?单癸和分支UOP已经可能的(唯一的区别是,设置标志)。 循环在不同的微架构,从瓦格纳雾的表: K8 / K10:7 M-OPS 推土机家族:1米-OP(同样的成本作为宏融合的比较和分支,或 jecxz ) P4:4微指令(同 jecxz ) P6(PII / PIII):8微指令 的Pentium M,酷睿2 ..
发布时间:2016-07-18 19:41:48 .NET Framework

和OperatingSystem.Platform在Windows RT Environment.GetEnvironmentVariable(; PROCESSOR_ARCHITECTURE&QUOT&QUOT)的输出

我正在写一个跨平台的应用程序,我真的需要有关系统的一些基本信息。 不只是切换它(我可以使用汇编变量,因为我有同样的code在特定平台的项目链接)。 所以,不要告诉我,知道平台和架构的信息是无用的:结果 的Windows RT和C# 任何人能为我提供这个信息,因为我没有任何简单的方法由我自得到它(我没有模拟器/设备用,我用安装了Linux的上网本的工作,所以没有VT-D能力等)。 P.S。 ..
发布时间:2016-05-29 15:01:16 C#/.NET

哪些部分的的ARMv4 / 5/6 code将无法在ARMv7的工作吗?

这是我的理解是ARMv7的处理器,如在Cortex-A9,与code为老年人ARM架构的版本大多是向后兼容的。不过,我读过段错误尝试在Cortex-A8的,例如 什么ARM版本的零件/ 5/6(ARM7TDMI / ARM9 / ARM11)code不会上的ARMv7处理器的工作?哪些功能或建筑特征,可能会导致专为这些版本的失败对ARMv7的程序这些旧ARM架构的版本存在? 解决方案 有 ..

版本"臂QUOT之间的差异; (仅可用于ARMv7)

基本上我想知道ARMv7l和ARMv7 ^ h L之间的区别? 我买了一个armv7l ARM处理器,并有对ARMv7 ^ h →很多转的的 我不知道到底是什么,我有搜索,以获取有关的信息。 这是什么“后缀”叫什么名字?是否有任何其他类型的?他们在做什么不同? 谢谢! 解决方案 我会认为它表明编译→ ittle端和 ^ h ARD-浮动ABI包适当的 - 也就是说,它的软件的事情, ..
发布时间:2016-05-29 14:54:01 服务器开发

如何指令从数据区别?

在阅读ARM核心文件,我得到了这个疑问。如何在CPU区分数据总线读出​​的数据,是否执行其作为指令或者作为它可以根据操作数据? 从文档参考节选 - “数据进入所述处理器核心 通过数据总线。该数据可以是 执行一条指令或数据 项目“。 预先感谢启发我! / MS 解决方案 每个运算code将包括N个字节的指令,然后期待后续的M个字节的数据(内存指针等)。因此CPU使用每个 ..
发布时间:2016-05-29 14:48:57 其它硬件开发