20得票1回答
如何确定哪些逻辑核心共享同一个物理核心?

我正在开发一个工具,以便让学生自我评估他们的编程作业表现。特别地,他们要编写的程序是多线程的,并且我没有直接影响所创建线程数量的方法。我想比较他们的程序在不同核心数量下的表现(理想情况下,程序应该与其可以使用的核心数量成比例加速)。 我们可以通过Process.SetAffinity传递位掩...

19得票1回答
重新调度中断(RES)是什么?它的原因是什么?在Linux内核中如何处理它?

"RES: 重新调度中断"和"LOC: 本地定时器中断"有什么区别?是谁负责触发RES中断?LOC是否与在处理器中由计时器硬件生成的常规计时器中断相同? 此外,请说明定时器中断和RES中断期间调度程序的哪个部分被调用?在Linux内核中如何实现? 提前感谢。

18得票4回答
多核处理器编程

据我所知,处理器中的多核架构不会影响程序。实际的指令执行是在较低层处理的。 我的问题是, 鉴于您拥有多核环境,我是否可以使用任何编程实践来更有效地利用可用资源?我应该如何改变我的代码以在多核环境中获得更好的性能?

18得票7回答
CPU和数据对齐

抱歉如果你觉得这个问题已经被回答了很多次,但我需要回答以下问题! 为什么数据必须对齐(在2字节/4字节/8字节边界上)?我的疑问是,当CPU有地址线Ax Ax-1 Ax-2 ... A2 A1 A0时,可以顺序寻址内存位置。那么为什么需要将数据对齐到特定的边界上? 如何在编译代码并生成可执...

17得票4回答
机器码是如何与处理器通信的?

以Python为例,如果我没记错的话,在编程时,计算机首先将代码“翻译”成C语言。然后再从C语言翻译到汇编语言。汇编语言是用机器码编写的。(这只是我对此的一个模糊想法,如果我错了,请纠正)但是机器码是用什么编写的,或者更确切地说,处理器如何处理它的指令,它如何“找出”该做什么?

17得票4回答
陷阱是什么?

处理器数据表中列出了许多不同类型的陷阱,例如总线故障、内存管理故障、使用故障和地址错误。 它们的目的是什么?如何在错误处理中利用它们?

17得票4回答
直接内存访问DMA - 它是如何工作的?

我读到过,如果DMA可用,那么处理器可以将磁盘块的长读取或写入请求路由到DMA,并集中精力处理其他工作。但是,在此传输期间,DMA到内存数据/控制通道会保持忙碌状态。在此期间,处理器还能做什么呢?

16得票6回答
代码变形技术去哪里了?

Linus Torvalds曾经在一家名为Transmeta的处理器公司工作。他们所生产的处理器是基于RISC体系结构的对象。如果我没有记错的话,这个想法是核心运行一个任意可升级的“处理器仿真层”(可以是x86、powerpc等),将高级操作码翻译成RISC核心指令集。 这个想法发展到了什么...

16得票3回答
音乐播放器进程

我在阅读一本书,书中提到只有一个内核且没有超线程的处理器每次只能处理一个进程,所以我有一个疑问:当我们在PC上执行如此多的操作并且总是存在一些后台进程时,为什么音乐播放器不停顿?我知道CPU非常快,但通常音乐播放器连续播放音乐而不会出现任何小插曲(可以观察到这一点)。有人可以解释这种行为吗?

15得票1回答
检测CPU对齐要求

我正在实现一个算法(SpookyHash),它将任意数据视为64位整数,方法是将指针强制转换为(ulong*)。(这是SpookyHash如何工作的本质,重写以避免这样做不是可行的解决方案)。 这意味着它可能读取未对齐到8字节边界的64位值。 在某些CPU上,这种操作很好。在某些CPU上,...