标签: intel

x86如何处理存储条件指令?

我试图找出x86处理器遇到存储条件指令时的作用.例如,它是否会停止管道的前端并等待ROB缓冲区变为空,然后停止前端停止并执行SC?基本上它会迫使处理器变得非投机性......

谢谢

architecture x86 intel processors

2
推荐指数
1
解决办法
1043
查看次数

关于破坏临时工作者的编制政策

我一直在玩下面这段代码.file_string返回一个临时字符串,该字符串只能"生效"直到语句结束.在Visual Studio 2008中,当您使用时pTempFolder,它会按预期包含垃圾.但是在Linux中,使用英特尔编译器11.0 pTempFolder仍然指向一个有效的字符串.编译器是否有关于临时销毁的不同政策,那种渴望(视觉)与懒惰(英特尔)?或许这只是一个巧合?

boost::filesystem wpathTempFolder("/tmp");
const wchar_t* const pTempFolder = wpathTempFolder.file_string().c_str();
// use pTempFolder
Run Code Online (Sandbox Code Playgroud)

顺便说一下,这是boost文件系统版本2.我也看到file_string在升级文件系统版本3 中已经被弃用.并且有一种新c_str方法可以在字符串上运行,而不是在临时字符串上运行.

/*filesystem 2*/
const string_type file_string() const;
/*filesystem 3*/
const string_type&  native() const;  // native format, encoding
const value_type*   c_str() const;   // native().c_str()
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction intel visual-studio-2008

2
推荐指数
1
解决办法
175
查看次数

许多OpenCL SDK。我应该选择哪个?

在装有Windows 7 OS的计算机中,我有来自此供应商的三个版本的OpenCL SDKS:

  • 英特尔
  • 英伟达
  • AMD。

我与他们每个人建立我的应用程序。作为输出,我有三个不同的二进制文件。例如:my_app_intel_x86,my_app_amd_x86,my_app_nvidia_x86

此二进制文件与此不同:

  1. 他们在likange流程中使用不同的SDK
  2. 他们尝试在运行时查找不同的OpenCL平台名称

我可以只使用一个SDK并检查平台的运行时间吗?

gpu nvidia intel opencl amd-processor

2
推荐指数
1
解决办法
894
查看次数

为什么4个进程优于4个线程?

void task1(void* arg) {
    static volatile long res = 1;
    for (long i = 0; i < 100000000; ++i) {
        res ^= (i + 1) * 3 >> 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

4个线程,同时工作,执行任务1 193周在30秒的时间.但4个过程中,同时工作,执行任务1 348周在30秒的时间.为什么会有这么大的差异?我在[Mac OS X 10.7.5,Intel Core i5(4个逻辑核心)]上测试了它.想想,在Windows和Linux中存在同样的差异.

c++ multithreading operating-system intel

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

beignet OpenCL xorg连接失败

我找到了这个opencl示例代码:

/*
 *  Simple OpenCL demo program
 *
 *  Copyright (C) 2009  Clifford Wolf <clifford@clifford.at>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; …
Run Code Online (Sandbox Code Playgroud)

c linux intel xorg opencl

2
推荐指数
1
解决办法
3251
查看次数

如何编程INTEL GPU

我是GPU计算领域的新手.所以我真的希望有人向我解释一下这些基础知识.我必须使用以下GPU的英特尔芯片组:

  • GMA4500
  • 高清显卡

我感兴趣的是在GPU中运行具有大数据集的代数和按位函数,例如数组的转置或数组行的按位移位.目标当然是获得更多的表现.

我的主要问题是如何在GPU上编程?过去我曾使用CUDA在nVIDIA显卡上进行编程.我从之前的主题中了解到,我不能将CUDA用于INTEL GPU.提前致谢!!

更新1

我发现英特尔支持OpenCL用于高清显卡.更准确地说,适用于OpenCL应用程序的英特尔SDK为英特尔®平台上的OpenCL应用程序提供了全面的开发环境,包括兼容的驱动程序,代码示例,开发工具,如代码构建器,优化指南和对优化工具的支持.

SDK支持采用Intel®HDGraphics和Intel®Iris™图形系列的第3代和第4代Intel®Core™处理器上的OpenCL 1.2,采用Intel HD Graphics,Intel®Xeon®处理器和Intel®XeonPhi™的Intel®Atom™处理器协处理器.

gpu intel opencl

2
推荐指数
1
解决办法
4611
查看次数

为什么组装的可执行文件大小相同

在x86_64架构中,可以将一些指令操作数组合更改为较短的组合以实现相同的效果,但可执行文件较小.例如,通常写:

xor eax, eax
Run Code Online (Sandbox Code Playgroud)

代替:

xor rax, rax
Run Code Online (Sandbox Code Playgroud)

我想测试它,在汇编中编写简单的程序:

    segment .text
    global main
main:
    push rbp
    mov rbp, rsp
    xor rax, rax ; line in question
    leave
    ret
Run Code Online (Sandbox Code Playgroud)

内置:

yasm -f elf64 -m amd64 -g dwarf2 main.asm; clang -o main main.o
Run Code Online (Sandbox Code Playgroud)

检查尺寸:

stat main
Run Code Online (Sandbox Code Playgroud)

拿到:

....
Size: 9184
...
Run Code Online (Sandbox Code Playgroud)

好的,将问题更改为:

xor eax, eax
Run Code Online (Sandbox Code Playgroud)

希望获得更小的可执行文件,但获得相同的9184字节大小.使用较短的指令表格为什么尺寸没有减少?

assembly x86-64 intel instructions

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

如何将(最多)16个单字节移入XMM寄存器?

我有一个归零的128位寄存器,我想向左移位并添加一个字节.我可以改为:

pslldq xmm0, 1 
Run Code Online (Sandbox Code Playgroud)

......但是现在我想将al复制到空白区域.就像是:

or xmm0, al
Run Code Online (Sandbox Code Playgroud)

这当然不起作用.我只希望受影响的最低8位.这将是一个循环,其中al的连续值将用于填充寄存器.所以我需要一些mov指令或其他替代方案.

理想的是单个指令向左移8位并插入,但我不认为存在这样的指令.

我花了很多时间在x86-64指令集数据中翻找,但找不到任何可以让我做我想做的事情.可以吗?

更新:尝试使用pinsrb后,我在代码逻辑中发现了一个错误.pinsrb会很棒但不幸的是它只能使用立即索引而不是寄存器.

我从非连续位置获取字节,所以我认为我需要一次一个字节.字节数可以是1到16之间的任何字节.我抓取的第一个字节应该以xmm0的最低字节结束,下一个字节进入下一个最低字节等.

x86 assembly sse intel simd

2
推荐指数
1
解决办法
1426
查看次数

Intel x64处理器上16位和32位乘法的CPU周期

我正在C中实现一个数学库,该数学库大量使用乘法。最初,我所有的乘法都是使用进行的uint16_t。最近,我将其中的许多更改为,uint32_t然后发现我的代码运行时间几乎翻了一番。正如我在Intel x64处理器中所认为的那样,我感到困惑,32位和16位乘法需要相同的时钟周期。我写了诊断代码,请在下面找到

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <time.h>
#include "cpucycles.c"

#define REPEAT 10000
#define OUT_REPEAT 100000

void main(){

    uint16_t a_16[REPEAT], b_16[REPEAT], c_16[REPEAT];
    uint32_t a_32[REPEAT], b_32[REPEAT], c_32[REPEAT];
    int32_t i,j;
    uint64_t clock1, clock2, CLOCK16, CLOCK32;
    uint64_t acc=0;
    time_t t;

    srand((unsigned) time(&t));

    clock1=clock2=CLOCK16=CLOCK32=0;

    for(j=0;j<OUT_REPEAT;j++){


        for(i=0;i<REPEAT;i++){

            a_16[i]=rand()& ( (1<<13) -1); //need 13-bit integers only
            b_16[i]=rand()& ( (1<<13) -1);

            a_32[i]=rand()&( (1<<19) -1);
            b_32[i]=rand()&( (1<<19) -1); //need 19-bit integers only
        }

        clock1=cpucycles();
        for(i=0;i<REPEAT;i++){
            c_16[i]=a_16[i]*b_16[i];
        }
        clock2=cpucycles();
        CLOCK16=CLOCK16+(clock2-clock1);    

        clock1=cpucycles();
        for(i=0;i<REPEAT;i++){
            c_32[i]=a_32[i]*b_32[i]; …
Run Code Online (Sandbox Code Playgroud)

c performance intel clock

2
推荐指数
1
解决办法
125
查看次数

如何访问PCIe配置空间?(ECAM)

为了访问PCI配置空间,根据各种文章,使用I / O端口地址0xCF8、0xCFC。

mov eax, dword 0x80000000

mov dx, word 0x0CF8
out dx, eax
mov dx, word 0x0CFC
in eax, dx
Run Code Online (Sandbox Code Playgroud)

上面代码中eax的值是0x12378086,表示vendor ID = 0x8086device ID = 0x1237

这是问题。

Q1。我已经看到此方法仅适用于PCI配置空间。那么,访问PCIe配置空间的另一种方法是什么?

无法使用传统的PCI方法(通过端口0xCF8和0xCFC)访问此扩展的配置空间”

https://wiki.osdev.org/PCI_Express

但是另一些文章说,这种传统方法也与PCIe配置空间兼容。

这很混乱。

Q2。如果传统的0xCF8、0xCFC也可以与PCIe配置空间配合使用,那么将不胜枚举NASM汇编源代码(不涉及linux),因为我看过很多ECAM(增强型配置访问机制)文章,但所有这些都是关于概念性内容。

硬件规格:

Motherboard : P775TM1
Processor : Intel i7 8700K
Run Code Online (Sandbox Code Playgroud)

assembly intel base-address pci pci-e

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