标签: cpu

32位和64位进程之间的memcpy性能差异

我们有配备XP64的Core2机器(Dell T5400).

我们观察到,当运行32位进程时,memcpy的性能大约为1.2GByte/s; 然而,64位进程中的memcpy达到大约2.2GByte/s(或英特尔编译器CRT的memcpy为2.4GByte/s).虽然最初的反应可能只是解释这个因为64位代码中可用的寄存器更宽,但我们观察到我们自己的类似memcpy的SSE汇编代码(应该使用128位宽的加载存储而不管32位/ 64位过程)表明它实现的复制带宽有类似的上限.

我的问题是,这个差异究竟是由于什么原因造成的?32位进程是否必须通过一些额外的WOW64箍来获取RAM?这与TLB或prefetchers有什么关系还是......什么?

感谢您的任何见解.

也在英特尔论坛上提出.

memory windows cpu 64-bit 32-bit

9
推荐指数
3
解决办法
8592
查看次数

CPU是否以原子方式为内存分配值?

一段时间以来我一直在想的一个简单的问题; CPU是否以原子方式分配值,或者是逐位分配值(例如,32位整数).
如果它是一点一滴的,访问这个确切位置的另一个线程是否可以获得待分配值的"部分"?

想一想:
我有两个线程和一个共享的"unsigned int"变量(称之为"g_uiVal").
两个线程循环.
On正在使用printf("%u \n",g_uiVal)打印"g_uiVal".
第二个只是增加这个数字.
打印线程是否会打印出完全不属于"g_uiVal"值的部分?

在代码中:

unsigned int g_uiVal;

void thread_writer()
{
 g_uiVal++;
}
void thread_reader()
{
 while(1)
  printf("%u\n", g_uiVal);
}
Run Code Online (Sandbox Code Playgroud)

c cpu memory-management shared-memory

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

RFID标签有处理器吗?

RFID标签是否具有能够进行简单计算的"真正"处理器?如果是这样,现在RFID处理器的处理能力是多少?

cpu rfid flops

9
推荐指数
1
解决办法
2986
查看次数

WebView在WebViewCoreThread中使用30%的后台

我有一个带有WebView的应用程序.当Activity暂停(onPause)时,我调用适当的webview.onPause和webview.stopTimers,这些与Activity.onResume方法中的webview.onResume和webview.resumeTimers平衡.

现在,当我在webview中加载www.google.com,然后将应用程序放在后台时,它仍将使用高达30%的CPU!这太过分了.

我执行了方法分析,发现WebViewCoreThread每隔100ms运行一次MessageQueue.nativePollOnce - > WebViewCore.nativeSetScrollOffset,这导致重新绘制webview(在bakground中)(WebViewCore.nativeDrawContent).

这是一般的WebView问题还是我的应用程序中的问题?

cpu android cpu-usage webview

9
推荐指数
1
解决办法
1798
查看次数

在Microsoft .Net中设置线程处理器关联

(发布这个答案,因为我无法找到如何在任何地方执行此操作的完整说明,所以我认为它可能对某人有一些价值)

如何设置Microsoft .Net中特定线程的处理器关联?设置进程的亲和性是微不足道的System.Diagnostics.Process.ProcessorAffinity,但是System.Threading.Thread类没有提供这样的功能,并且.Net不保证托管线程链接到任何特定的操作系统线程.

.net cpu affinity

9
推荐指数
1
解决办法
4922
查看次数

确定数据流中的关键路径

Computer Systems:A Programmer's Perspective一书中,练习5.5显示了一段代码来计算多项式的值

double poly(double a[], double x, int degree)
{
    long int i;
    double result = a[0];
    double xpwr = x;
    for (i = 1; i <= degree; i++) {
        result += a[i] * xpwr;
        xpwr = x * xpwr;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

练习假设双精度浮点加法和乘法所需的时钟周期分别为3和5.要求读者解释为什么测量的CPE(每元素周期数)值为5.

按照习题答案,在每次迭代中,我们需要更新变量xpwrresult我们需要的,操作是一个浮点加法(对于result)和浮点乘法(对于xpwr),因此后者占主导地位的延迟,导致最终CPE为5.

但我认为数据流应该是这样的:

xpwr               result
  |                  |
  +-----+ +--[load]  |
  |     | |          |
[mul]  [mul]         |
  |      |           |
  |      +---+ +-----+ …
Run Code Online (Sandbox Code Playgroud)

cpu cpu-cycles computer-architecture

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

CPU如何空闲(或运行低于100%)?

我首先了解了计算机如何在原始单个存储程序机器方面工作.

现在我正在学习多任务操作系统,日程安排,上下文切换等等.我认为除了一件事之外,我对这一切都有相当好的把握.我一直认为CPU是一种不间断充电的东西.它总是知道接下来要去哪里(程序计数器),并且无限制地进入该指令等.

显然情况并非如此,因为我的台式计算机CPU并非始终以100%运行.那么CPU如何自行关闭或自行关闭,以及操作系统在这方面扮演什么角色?我猜测CPU上有一个输入允许它掉电......如果没有什么可以安排,操作系统可以设置它,但下一个逻辑问题是它如何重新启动?我猜两件事中的任何一件:

  • 它永远不会完全关闭,只是以非常低的频率运行,等待调度程序再次忙碌
  • 它完全关闭但被中断唤醒

我搜索了所有关于这方面的信息并且相当空手而归.任何见解都会非常感激.

hardware cpu operating-system process interrupt

9
推荐指数
1
解决办法
1847
查看次数

MultiCore CPU,多线程和上下文切换?

假设我们有一个具有20个内核的CPU和一个具有20个CPU密集型的进程,彼此独立于每个线程:每个CPU内核一个线程.我试图弄清楚在这种情况下是否发生了上下文切换.我相信这是因为操作系统中的系统进程也需要CPU时间.

我知道有不同的CPU架构,一些答案可能会有所不同,但请您解释一下:

  • 如何在Linux或Windows以及一些已知的CPU架构上进行上下文切换?在现代硬件的引擎盖下会发生什么?
  • 如果我们有10个核心和20个线程或者反过来怎么办?
  • 如果我们有n个CPU,如何计算我们需要多少线程?
  • 上下文切换后CPU缓存(L1/L2)是否为空?

谢谢

cpu multithreading multiprocessing context-switch

9
推荐指数
1
解决办法
4327
查看次数

Gradle性能是否与CPU核心数量相当

好奇,如果gradle构建性能与CPU核心成比例.

考虑通过Android Studio进行gradle包装器构建的单个更高时钟与双Xeon工作站升级

想知道我是否值得考虑我是不是受到磁盘IO的瓶颈?

cpu performance android gradle

9
推荐指数
1
解决办法
1389
查看次数

Python - 获取传感器值和风扇速度 - Windows 10

我一直在尝试使用Python脚本来显示我的硬件中的CPU,GPU和其他可用传感器的温度,但我没有找到任何有用的东西.

我尝试使用WMI来获取这些值,但我的处理器显然不受支持.

我使用的代码是:

import wmi
w = wmi.WMI(namespace="root\wmi")
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
print temperature_info.CurrentTemperature
Run Code Online (Sandbox Code Playgroud)

我从另一个stackoverflow线程获得,我得到错误Traceback(最近一次调用最后):

  File "C:/Users/Joe/Desktop/test.py", line 3, in <module>
    temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
  File "C:\Python27\lib\site-packages\wmi.py", line 819, in query
    handle_com_error ()
  File "C:\Python27\lib\site-packages\wmi.py", line 241, in handle_com_error
    raise klass (com_error=err)
x_wmi: <x_wmi: Unexpected COM Error (-2147217396, 'OLE error 0x8004100c', None, None)>
Run Code Online (Sandbox Code Playgroud)

根据Microsoft支持,这意味着Not Supported (0x8004100C) 我已经尝试在cmd.exe窗口中运行此代码的命令行版本作为管理员运行,但我得到了同样的错误.

有没有其他方法可以访问CPU和GPU温度?

PS:我的操作系统是Windows 10,我的CPU是AMD FX-8350.我不确定我的操作系统或我的CPU是否有错误.

python windows cpu wmi temperature

9
推荐指数
1
解决办法
845
查看次数