intel相关内容
可能重复:结果 AMD多核编程
..
我怎么会去监视特定进程的执行(即,其分支机构,分支跟踪店)使用的英特尔性能计数器监控,同时过滤掉其他进程的信息? 解决方案 您应该知道,BTS(转移跟踪店)和性能监视事件/计数器(CPU内,其PMU块)是完全不同的事情。 转移跟踪Store是CPU的功能时,它不记录每一个执行的分支(对EIP的 - 分支指令及分支目标的第二个第一,也有加入到每一对标志的字)的内存的特殊区域。它的结果是很喜
..
我注意到,数学函数(如CEIL,圆形,...)运行任何英特尔AVX功能之后采取更多的CPU周期。 请参阅下面的例子: 的#include<&stdio.h中GT; #包括LT&;&math.h中GT; #包括LT&;&immintrin.h GT; 静态unsigned long int类型get_rdtsc(无效) { unsigned int类型A,D;
..
我们正在尝试使用英特尔CLFLUSH指令刷新在Linux下一个进程在用户空间缓存内容。 我们创建一个非常简单的C程序,首先访问一个大阵,然后调用CLFLUSH刷新整个阵列的虚拟地址空间。我们衡量花费CLFLUSH冲洗整个阵列的延迟。在程序中数组的大小是输入,我们改变输入从1MB到40MB具有2MB的步骤 在我们的理解,在CLFLUSH应刷新缓存中的内容的 的。因此,我们希望看到冲洗整个阵列首先
..
我最近(ISO / ANSI C)写了一些code,并且是它取得的糟糕表现感到惊讶。长话短说,原来,罪魁祸首是地板()功能。它不仅是缓慢的,但它并没有向量化(与英特尔的编译器,又名ICL)。 下面是一些基准在2D矩阵的所有单元格进行地板: VC:0.10 ICL:0.20 与此相比,一个简单的转换: VC:0.04 ICL:0.04 哪有地板()是比简单的铸件慢得多?它本质上是做(除
..
我有一个英特尔酷睿i5-2450M(2个物理处理器和4个逻辑处理器),我想找到一种方法,依靠AMD和英特尔CPU的逻辑和物理内核。 但是,一些搜索后,我发现了一些奇怪的。而不是返回4个逻辑单元,我的code给我16。 静态LogicalProcCount中int8_t(无效) { 如果(!超线程) 返回1; uint32_t的未使用的,EBX; CPUID
..
我如何测试如果 __ m128i 变量对任何非零值SSE-2和早期的处理器? 解决方案 在SSE2,你可以这样做: __ m128i零= _mm_setzero_si128(); 如果(_mm_movemask_epi8(_mm_cmpeq_epi32(X,零))== 0xFFFF的) { //将code ... } 这将考验四个整形的VS为零,则返回一个面具每个字节,如此
..
我有一个应该有集SSE4.2指令支持至强W3550处理器,但是当我尝试在我的C程序中使用过去的事情我SSE2得到一个编译错误例如 #ERROR“的SSE4.2指令集未启用” 当我使用 $猫/特效内/ cpuinfo 它检测到所有相关的SSE指令集,但 $ CPUID 只能检测SSE和SSE2。 我的操作系统是Ubuntu的11.04内核2.6.38-11泛型。 这是如何解决这一问题
..
我是今天上午在这里想,这将是扭转了一些正到负和由负最快的方式积极的,当然,最简单的方法可能是: int类型的= 10; A = A *( - 1); 或 int类型的= 10; A = -a; 不过,我想,我采取这一做到这一点,使用命令转移和指针... 这确实有可能改变一个数值的符号,使用命令移位运算和记忆? 解决方案 第一个生产: .file“optimum.c” .D
..
使用内联汇编[GCC,英特尔,C],如何检查进位标志是一种手术后? 解决方案 使用条件跳转 JC (跳跃,如果进位)或 JNC (跳跃,如果没有携带)。 或者你可以存储进位标志, ;; Intel语法 MOV EAX,0 ADC EAX,0;添加带有进
..
我要去虽然计算机系统课程,我试图建立,的肯定的,如果我的基于AMD处理器的电脑是一个小endian机器?我相信这是因为这将是Intel兼容。 具体来说,我的处理器是AMD的Athlon 64 X2。 据我所知,这可以在C编程重要。我正在写C程序和我使用的方法将受此影响。我试图找出如果我能得到相同的结果,如果我运行该程序基于Intel的机器上(假设的是小尾数机)。 最后,让我问这个:是否有任何
..
大家好让我的工作涉及组装数组赋值。我需要让用户输入一个数字,然后清除屏幕。之后,第二个玩家尝试猜词。我做过的一切,但我也有显示一个提示每次第二个玩家试图猜测。例如,如果我输入了单词Hello程序显示^ h!升!当第二个玩家试图猜测O操作。我已经尝试过了,但不能得到它的工作。任何帮助将是非常美联社preciated,谢谢你。 。数据选择: .ascii“输入密语\\ n” chose_le
..
CPUID说,我有我的rdrand系统上,但rdrand指令抛出SIGILL。我使用的VMware Workstation 11里Linux Mint的,我用Google搜索工作站支持rdrand,他们说,自从9日的版本,它启用。主持人Proccess是i5-2550k,它应该支持rdrand。我能以某种方式解决这一问题?下面是GDB上市: 断点1,在0x08048060 _start() (G
..
我怎样才能做到这一点?这将是最好的,如果结果将是E * X寄存器。 解决方案 您已经问过,你可以通过看C编译器是如何做的接听几个琐碎的问题。从那里,你可以看一下它使用的指令,并决定要实际使用哪些。 (有大约在libm中数不胜数不同的舍入的功能,所以在第一时间挑选合适的人并不容易)。 使用 -O3 -ffast-数学内联得到最简单的libm函数(因为它不具有潜在的设置错误号上NAN或垃圾一
..
基于对维基百科条目 以及英特尔手册, RDPMC 应提供给用户模式进程,只要第8位 CR4 设置。不过,我仍然运行到一般保护试图从用户空间,即使是位集运行 RDPMC 时出错。 我在一个8核英特尔X3470 内核 2.6.32-279.el6.x86_64 运行 下面是用户模式程序我试图执行: 的#define _GNU_SOURCE#包括LT&;&stdio.h中GT; #包括LT&;&
..
只是作为一个例子,我想这正是在x86处理器家族支持 FISTTP 指令知道了。我是pretty肯定的是,它支持奔腾4和超越,但我想有一些官方的验证。而更重要的是,我想知道它是否支持任何进一步的回:是它可在奔腾III ? 我尝试了所有的明显谷歌的搜索字词,但几乎没有有任何东西可这个特定指令在线。而且即使有,这不是一个好的解决方法。 我知道英特尔IA-32体系结构手册,可在网上
..
我想对一些较新的Intel处理器可用的256位AVX指令来熟悉自己。我已经验证了我的i7-4720HQ支持256位AVX指令。我遇到的问题是,VMOVAPS指令,它应该复制8个单precision浮点值,只能复制4。 点PROC VMOVAPS YMM1,ymmword PTR [RCX] VDPPS YMM2,YMM1,ymmword PTR [RDX] 255 VMO
..
你怎么想知道,当“MUL ECX”被执行死刑。 ECX将与EAX相乘?而不是与EBX或EDX? MUL ECX,EAX 会更有意义,但。 解决方案 该指令集被简单地定义这种方式。 英特尔可能会在其他方面,包括将允许您完全指定输入和输出寄存器的方式定义,但他们没有这样做。 借口可以说,在不同的乘法指令加入到指令集的CPU时间(8086葡萄酒,我认为),即现有的指令没有任何明显的地方把乘法
..
我不知道任何真正的集会,但可以阅读GCC -S 输出来评估定的C code的实际成本。 这问题不是那么多有关分析和基准,而是教育。我需要有人来解释一下我为什么[1]片段并不比第二个快。 好了,以前觉得这样的:“是啊,像一些MUL操作是pretty昂贵,但如果一个组件比另一个大X倍,它应该会比较慢。” 直到我遇见这是千真万确这两个: unsigned char型字节[4] = {0,0,0
..
我想知道为什么GCC引入一个新的序幕(和尾声以及),以功能 - 尤其是主要的(),因为我只进行了分析。例如,在此之前,它是: 推EBP MOV EBP,ESP 子ESP,0X ...;分配内存空间进栈; ...一些code;结语 离开 RET 现在,这是一个比较复杂(理解,至少): LEA ECX,[ESP +为0x4] 和ESP,0xfffffff0 推DWORD PTR [ECX-位于0
..