cpu-architecture相关内容

C ++ int操作在mips架构上是原子的

我想知道我是否可以读取或写入共享int值,而不锁定在mips cpu(尤其是亚马逊或多瑙河)。我的意思是如果这样的读或写是原子的(其他线程不能中断他们)。要清楚 - 我不想阻止线程之间的竞争,但我关心int值本身没有损坏。 假设编译器将所有ints cpu字的边界,应该是可能的。我使用gcc(g ++)。测试也显示它似乎工作正常。 解决方案 使用gcc的内置原子操作,如果不支持这些操 ..
发布时间:2016-10-23 20:01:22 C/C++开发

C ++ int操作在mips架构上是原子的

我想知道我是否可以读取或写入共享int值,而不锁定在mips cpu(尤其是亚马逊或多瑙河)。我的意思是如果这样的读或写是原子的(其他线程不能中断他们)。要清楚 - 我不想阻止线程之间的竞争,但我关心int值本身没有损坏。 假设编译器将所有ints cpu字的边界,应该是可能的。我使用gcc(g ++)。测试也显示它似乎工作正常。 解决方案 使用gcc的内置原子操作,如果不支持这些操 ..
发布时间:2016-10-23 19:56:28 C/C++开发

在什么架构计算无效指针是不安全的?

int * a = new int [5] - 1; 此行本身根据C ++标准调用未定义的行为,因为a是一个无效的指针, - 结束。同时,这是一个零开销的方法,使1基于数组(第一个元素是a [1],我需要一个 我想知道如果这是我需要避免的东西,或者如果C ++标准只是保守支持一些奇怪的架构,我的代码永远不会运行反正。所以问题是,在什么架构这将是一个问题?是否有广泛 ..
发布时间:2016-10-14 19:51:08 C/C++开发

sjlj vs dwarf vs seh有什么区别?

好吧,这就是所有。我找不到足够的信息来决定我应该使用哪个编译器来编译我的项目。在不同的计算机上有几个程序模拟一个过程。在Linux上我使用GCC。一切都很好。我可以优化代码,它编译快,使用不那么多的内存。 我用MSVC和GCC编译器做我自己的基准。后来一个产生略快的二进制(对于每个子体系结构)。虽然编译时间远远超过MSVC。 所以我决定使用MinGW。但是在MinGW中找不到任何关于异 ..

设置既面向x86和x64?

我有一个需要两个x64和x86的DLL(它的数字出来,它需要在运行时哪些),但试图创建一个安装程序时,它抱怨的程序: 文件AlphaVSS.WinXP.x64.dll“定位”AMD64“是不是个项目的目标平台兼容'86'结果 档AlphaVSS.Win2003.x64.dll”针对AMD64''是不是个项目的目标平台'86'结果 档AlphaVSS.Win2008.x64.dll“定位” ..
发布时间:2016-09-08 18:50:05 C#/.NET

我怎么能确定哪种平台的可执行编译?

我有必要与这些针对x86,x64和IA64做Windows可执行文件的工作。我想通过检查文件本身以编程方式找出平台。 我的目标语言的PowerShell但C#示例会做。无论是失败的那些,如果你知道所需要的逻辑将是巨大的。 解决方案 (从另一个Q,因为删除) 机器类型:这是基于一些获取链接时间戳code口的快速点点。这是相同的标题,它似乎工作 - 它返回时,I386与作为目标平台编译编译 ..
发布时间:2016-08-26 15:56:05 C#/.NET

什么是&QUOT的目的; preFER 32位"在Visual Studio 2012中设置,它是如何实际工作?

这我不清楚如何编译器会自动知道要编译64位时,它需要。它怎么知道什么时候可以自信地针对32位? 我主要是好奇编译器如何知道哪些架构编译时的目标。它分析code,并根据其发现的决定? 解决方案 这就是这么奇怪,没有人链接到博客条目的 What值为anycpu实际上意味着作为.NET 4.5和Visual Studio 11 的: 在.NET 4.5和Visual Studio 11中 ..
发布时间:2016-08-26 15:14:35 C#/.NET

相比单一的过程中的场景多个流程场景意外降低访问时间

我访问来自program1的一个共享库(共享阵列),并找到访问时间阅读该数组中的所有元素。我得到了17000左右,而蜱仅PROGRAM1单独执行。 现在,当我在另一个选项卡中首先执行Program2中(有空while循环,从终止持有它),然后运行程序1,测量访问时间读取该数组的所有元素。 令我惊讶,现在我得到8000ticks相比,其中只有PROGRAM1执行previous场景。 看起来虽 ..
发布时间:2016-08-23 10:17:14 C/C++

preserving执行管线

返回类型经常检查是否存在错误。但是,在code,将继续执行可以以不同的方式来指定。 如果(!RET) { doNoError code(); } 出口(1); 或如果(RET) { 出口(1); } doNoError code(); 单向重量级的CPU可以推测使用简单的统计靠近接近/地区所采取的分支 - 我研究了分支预测的4位机制(-2,-1,0,+ 1,+ 2)其中零为未 ..
发布时间:2016-08-22 16:01:17 C/C++

如何CLFLUSH工作了,是不是在高速缓存中没有一个地址?

我们正在尝试使用英特尔CLFLUSH指令刷新在Linux下一个进程在用户空间缓存内容。 我们创建一个非常简单的C程序,首先访问一个大阵,然后调用CLFLUSH刷新整个阵列的虚拟地址空间。我们衡量花费CLFLUSH冲洗整个阵列的延迟。在程序中数组的大小是输入,我们改变输入从1MB到40MB具有2MB的步骤 在我们的理解,在CLFLUSH应刷新缓存中的内容的 的。因此,我们希望看到冲洗整个阵列首先 ..
发布时间:2016-08-21 22:32:06 C/C++

CPU缓存行和prefetch政策

我看了这篇文章 http://igoro.com/archive/gallery -of处理器的高速缓存效果/ 。文章称,由于缓存线延误,code: INT [] =改编新INT [64 * 1024 * 1024];//循环1 的for(int i = 0; I< arr.Length;我++)改编[I] * = 3;//循环2 的for(int i = 0; I< arr.Le ..
发布时间:2016-08-21 21:40:43 C/C++

你会如何​​检测一般从用户模式code高速缓存行关联?

我组建了一个小补丁在Valgrind的的cachegrind / callgrind工具,它会自动-detect,使用完全通用code,CPU指令和缓存配置(右现在只有在x86 / x64自动配置,以及其他体系结构不提供CPUID型配置,以非特权code)。这code将需要在一个非特权背景,即纯用户模式code完全执行。它还需要能够跨截然不同的POSIX实现便携,所以所著的Grokking的/ p ..
发布时间:2016-08-21 20:10:56 C/C++

字节序变通所需

考虑下面的一块code的: 的#include“stdio.h中”typedef结构CustomStruct { 短元素1 [10]; } CustomStruct;无效F2(字符* Y) { * Y = 0×00; ÿ++; * Y = 0x1F的; }无效F1(CustomStruct * X) { F2((字符*)X); 输出(“S =%×\\ N”,(* X).E ..
发布时间:2016-08-19 00:40:50 C/C++开发

升压lockfree spsc_queue高速缓冲存储器访问

我必须非常关注速度/延迟在我目前多线程的项目。 高速缓存访​​问的东西我想更好地理解。而且我不是如何清晰无锁队列(如升压:: lockfree :: spsc_queue)上的高速缓存级别的访问/使用的内存。 我见过使用队列,其中一个大对象,需要由消费者核心操作上的指针推入队列。 如果消费者芯弹出从队列的元件,我presume则意味着元素(在此情况下的指针)已经装入消费者芯的L2和L1高速缓 ..
发布时间:2016-08-12 17:37:25 C/C++

如何机器间preT二进制?

我当时就在想,怎么做的机器间preTER二进制code?我所不解的是你的code获取的变成1和0使机器可以理解他们,但他们是如何做到这一点?难道仅仅是一个普通的文本到二进制翻译? 解决方案 首先,“二进制”并不意味着你认为这意味着(计算机上的任何数据,包括文本已经是二进制的,它只是我们决定方式显示和处理是不同的)。 二,编译不是一个简单的改造,奇怪的字符(如果是这样,我们就不需要针对不同 ..