标签: cpu

设计一个可以直接处理IL的CPU有什么意义吗?

如果我理解正确的话:

AMD和英特尔等目前的CPU开发公司都拥有自己的API代码(汇编语言),就像他们在机器代码(1G语言)上看到的2G语言一样

是否可能或希望(性能或其他方面)拥有一个可以在其核心而不是当前API调用上执行IL处理的CPU?

c# compiler-construction cpu performance cpu-architecture

12
推荐指数
4
解决办法
753
查看次数

普通的x86或AMD PC是直接从ROM运行启动/ BIOS代码,还是先将它们复制到RAM?

我知道现代计算机已经修改了哈佛架构.

事实上他们可以从他们保存数据的地方读取指令,这样他们可以直接从ROM芯片中获取指令吗?他们首先将BIOS加载到RAM,还是直接从芯片执行?我没有可以在附近打开的计算机,所以...如果我从内存插槽中删除所有RAM,计算机是否能够启动完整的BIOS,运行POST的东西并告诉我需要RAM?这很有趣我从未尝试过......

编辑:我的意图是要了解商业CPU(或至少是intel cpus)是否可以直接从ROM执行代码.它不是出于实际目的,而是为了增加我对计算机体系结构和内容的理解.删除RAM部分不是我的主要疑问,只是一个例子

cpu boot startup bios

12
推荐指数
1
解决办法
3718
查看次数

Java阻塞线程是否会占用更多CPU资源?

我想问一下,当线程被阻塞时,Java是否会利用更多的CPU资源,即等待锁定当前被另一个线程锁定的监视器.

我现在正在查看一个线程转储,因为一些线程在等待锁定监视器时被阻塞,我不确定这是否可能对高CPU使用率负责.

谢谢!

编辑(2011年5月6日)我忘了提及这种行为是否与Java SE 1.4.2相关.

java cpu multithreading blocked dump

12
推荐指数
3
解决办法
7683
查看次数

BIOS ROM如何映射到PC上的地址空间?

x86 CPU在物理地址0xFFFFFFF0处开始执行.BIOS ROM位于地址空间的末尾.CPU从ROM执行的第一条指令是远跳,导致重新加载CS段,因此从物理区0x000F0000 - 0x000FFFFF内执行下一条指令.

什么原因导致ROM在两个区域都做出响应?PC上有一些特殊的地址解码逻辑吗?我在Bochs源代码中发现了一条评论,该代码指出最后128K的BIOS ROM映射到0xE0000 - 0xFFFFF.但是我找不到更多关于此的信息.很明显,这是PC特有的,因为我有x86嵌入式主板,并且这种镜像不会发生在那里.我只能用近跳.

embedded cpu x86 bios

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

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

超标量和OoO执行的一般区别是什么?

我一直在阅读关于superscalr和OoO的一些材料,我很困惑.
我认为他们的架构图看起来非常相似.

cpu cpu-architecture

12
推荐指数
1
解决办法
5769
查看次数

如何在硬件级别上实现轮班?

当转换的数量未知时,如何在硬件级别实现位移?

我无法想象你可以转换的每个数字都会有一个单独的电路(这将是64位机器上的64个移位电路),我也无法想象这将是一个移位循环(这将是在64位机器上最多需要64个换档周期.这是两者之间的某种妥协,还是有一些聪明的伎俩?

cpu processor circuit bit-shift alu

12
推荐指数
1
解决办法
6930
查看次数

如何在Android中获得CPU温度

传感器类型TYPE_TEMPERATURE已被弃用[自Android 2.3以来]可能提供有关CPU温度的信息.现在我们有传感器类型TYPE_AMBIENT_TEMPERATURE,它将为我们提供室温(我没有使用,&btw并非所有设备和/ Android版本都支持它)

我检查了几个测量CPU温度的应用程序.可能他们正在阅读系统文件.我尝试定位,在某些设备中我能够在以下路径中找到它:

sys/devices/virtual/thermal/thermal_zone0/temp
Run Code Online (Sandbox Code Playgroud)

结构位因供应商和测量单位而异.精细!但在许多设备中,我根本无法找到任何此类文件,并且在同一设备中这些应用程序可以正常工作!我想知道,怎么样!

我们如何测量Android中的CPU温度?

cpu android temperature

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

内存栅栏是否会降低所有CPU内核的速度?

在某个地方,有一次我读到了关于内存栅栏(障碍物)的内容.据说内存栅栏会导致多个CPU内核之间的缓存同步.

所以我的问题是:

  1. 操作系统(或CPU本身)如何知道需要同步哪些内核?

  2. 它是否同步所有CPU核心的缓存?

  3. 如果对(2)的回答为"是"并假设同步操作不便宜,那么使用内存栅栏是否会减慢我的应用程序未使用的内核?例如,如果我的8核CPU上运行单线程应用程序,它是否会降低CPU的所有其他7个内核的速度,因为某些高速缓存行必须与所有这些内核同步?

  4. 以上问题是完全无知的,围栏的工作完全不同吗?

c c++ cpu atomic memory-fences

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

GPU PoolAllocator会爆炸CPU内存

我制作了一个具有相对常见操作的张量流模型(除了一些tf.where和索引处理之外),但是用不同的输入形状(模型中有许多未定义的张量形状)来调用它.

CPU上的一切正常.但是当你使用GPU时,RAM的使用(不是GPU内存,CPU的内存)稳步增加,以填满机器的256GB并自行杀死.

在此过程中,我得到了通常的消息:

2017-03-17 16:42:22.366601: I tensorflow/core/common_runtime/gpu/pool_allocator.cc:247] PoolAllocator: After 18347 get requests, put_count=18345 evicted_count=1000 eviction_rate=0.0545108 and unsatisfied allocation rate=0.0763068
2017-03-17 16:42:22.366680: I tensorflow/core/common_runtime/gpu/pool_allocator.cc:259] Raising pool_size_limit_ from 4385 to 4823
Run Code Online (Sandbox Code Playgroud)

据我所知,GPU的某些DMA内存的池分配器.问题是它似乎永远不会满足它所获得的驱逐率,并且永远不会为自己分配更多的空间.

这是正常的行为吗?他们是控制这个的方法吗?现在,在耗尽内存之前,我无法训练模型超过1小时.

注意:我使用TF的nigthly构建版本,因为我当前模型运行所需的一些错误修正.此外,在训练期间没有添加任何操作,因为我打电话tf.get_default_graph().finalize()

编辑:尝试运行tcmalloc而不是malloc.没有帮助.我还使用了内存分析器,并没有说存在内存泄漏,tcmalloc的内存使用率稳定在500MB,即使内存使用率top更高且程序最终运行OOM.那么为什么tcmalloc剖析器不同意我看到的内存使用情况top呢?

编辑2:重新编译TF与改变硬编码参数,使其"工作".看到这里

memory cpu cpu-usage tensorflow

12
推荐指数
1
解决办法
1494
查看次数