当我输入时uname -a,它给出以下输出.
Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
我怎么知道给定的操作系统是32位还是64位?
这在编写configure脚本时很有用,例如:我要构建什么样的架构?
据我所知,处理器通过缓存线将数据带入缓存,例如,在我的Atom处理器上,无论读取的实际数据大小如何,一次都会带来大约64个字节.
我的问题是:
想象一下,你需要从内存中读取一个字节,这64个字节将被带入缓存?
我可以看到的两种可能性是,64字节从感兴趣的字节下方最接近的64字节边界开始,或者64字节以某种预定方式在字节周围扩展(例如,一半以下,一半以上,或者上述所有).
这是什么?
单精度浮点运算和双精度浮点运算有什么区别?
我对与视频游戏机有关的实用术语特别感兴趣.例如,Nintendo 64是否具有64位处理器,如果确实如此,则意味着它能够进行双精度浮点运算?PS3和Xbox 360能否实现双精度浮点运算或单精度运算,一般情况下使用双精度功能(如果存在?).
几年前,"下一件大事"是无时钟电脑.它背后的想法是没有时钟,处理器运行速度会明显加快.
就在那时,现在是这样,我找不到任何有关它是如何出现的信息,或者这个想法是不是真的...
谁知道?
以供参考:
http://www.cs.columbia.edu/~nowick/technology-review-article-10-01.pdf
我想指定特定pthread的cpu-affinity.到目前为止,我发现的所有引用都涉及设置进程的cpu-affinity(pid_t)而不是线程(pthread_t).我尝试了一些传递pthread_t的实验,正如预期的那样,它们会失败.我想做一些不可能的事吗?如果没有,你能发一个指针吗?太感谢了.
是否有一个API来获取Linux中可用的CPU数量?我的意思是,不使用/ proc/cpuinfo或任何其他sys-node文件......
我已经使用sched.h找到了这个实现:
int GetCPUCount()
{
cpu_set_t cs;
CPU_ZERO(&cs);
sched_getaffinity(0, sizeof(cs), &cs);
int count = 0;
for (int i = 0; i < 8; i++)
{
if (CPU_ISSET(i, &cs))
count++;
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
但是,使用公共库是不是更高级别?
看起来太简单了一个问题,但我在经历了几个ppts之后问了一下.
两种方法都增加了指令吞吐 而Superscaling几乎总是使用流水线技术.超级密码有多个执行单元,流水线也是如此,或者我错了吗?
什么时候应该使用轮询方法什么时候应该使用基于中断的方法?是否存在可以使用两者的情况?
我正在研究英特尔保护模式.我发现Call Gate,Interrupt Gate,Trap Gate几乎是一样的.事实上,除了Call Gate具有参数计数器的字段,并且这3个门具有不同的类型字段,它们在所有其他字段中是相同的.
至于它们的功能,它们都用于将代码控制转移到某些代码段中的某些过程.
我很想知道,因为这3个门都包含跨权限边界调用所需的信息.为什么我们需要3种呢?不是一个就够好吗?
感谢您的时间和回应.
相关问题:何时使用中断门或陷阱门?
今天我想出了这个想法:
不同的目的,不同的门,以及不同的CPU行为细节进行.如IF标志处理.
在最后几天,我观察到我的新工作站的行为,我无法解释.对此问题进行一些研究,INTEL Haswell架构以及当前的Skylake Generation 可能存在一个错误.
在编写可能的错误之前,让我先概述一下使用的硬件,程序代码和问题本身.
我目前正在运行Ubuntu 15.04 64位桌面版,安装最新更新和内核.除了使用这台机器开发CUDA内核和东西,我最近测试了一个纯C程序.该程序正在对相当大的输入数据集进行改进的ART.因此代码执行一些FFT并耗费相当长的时间来完成计算.我目前无法发布/链接到任何源代码,因为这是正在进行的无法发布的研究.如果您不熟悉ART,只需简单解释它的作用.ART是一种用于重建从计算机断层摄影机接收的数据以获得用于诊断的可见图像的技术.因此,我们的代码版本重建了大小为2048x2048x512的数据集.到目前为止,没有什么特别的,也没有涉及火箭科学.经过几个小时的调试和修复错误后,代码在参考结果上进行了测试,我们可以确认代码是否正常工作.代码使用的唯一库是标准的math.h.没有特殊的编译参数,没有额外的库可能带来额外的问题.
该代码使用一种技术来实现ART,以最小化重建数据所需的投影.因此,我们假设我们可以重建一个涉及25个投影的数据片.代码以12个内核上完全相同的输入数据启动.请注意,实现不是基于多线程,目前启动了12个程序实例.我知道这不是最好的方法,涉及正确的线程管理是强烈建议,这已经在改进列表:)
因此,当我们运行至少两个程序实例(每个实例在一个单独的数据切片上工作)时,结果是一些预测是随机的错误.为了让您了解结果,请参阅表1.请注意,输入数据始终相同.
只运行一个涉及CPU核心的代码实例,结果都是正确的.即使执行一些涉及一个CPU内核的运行,结果仍然是正确的.仅涉及至少两个或更多核心会生成结果模式,如表1所示.
好吧,花了相当长的时间来了解究竟出了什么问题.所以我们完成了整个代码,大多数问题都是以一个小的实现错误开始的.但是,嗯,没有(当然我们不能证明没有错误也不能保证它).为验证我们的代码,我们使用了两台不同的机器:
出人意料的是,这两个MACHINE1和机器2产生总是正确的结果.即使使用所有CPU核心,结果仍然是正确的.每台机器上超过50次运行甚至没有错误的结果.代码是在没有优化选项或任何特定编译器设置的每台目标机器上编译的.因此,阅读新闻导致以下发现:
因此,在Prime95和Mersenne社区的人们 似乎是第一批发现和识别这个讨厌的bug的人.引用的帖子和新闻支持怀疑,这个问题只存在于繁重的工作量下.根据我的观察,我可以确认这种行为.