问题标签 [computer-architecture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 与缓存行对齐并了解缓存行大小
为了防止错误共享,我想将数组的每个元素与缓存行对齐。所以首先我需要知道缓存行的大小,所以我为每个元素分配了相应的字节数。其次,我希望数组的开头与缓存行对齐。
我正在使用 Linux 和 8 核 x86 平台。首先我如何找到缓存线的大小。其次,如何与 C 中的缓存行对齐。我使用的是 gcc 编译器。
因此,例如,假设高速缓存行大小为 64,该结构将如下所示。
依此类推,当然假设 0-63 与高速缓存行对齐。
operating-system - 在订单执行和多任务处理中
执行顺序(按顺序和无序)和多任务处理是否有任何关系?据我了解,按顺序执行任务的处理器可以使用抢占来支持多任务处理。对于无序处理器也是如此,但与按序执行的主要区别在于减少了停顿的数量,从而减少了有效的 CPU 利用率。我对此是否正确,或者是否存在执行顺序和多任务处理的关系?
谢谢你。
cygwin - 我收到 AMR 源代码的 make 错误
我已经从 3GPP 网站下载了 AMR 源代码。
当我试图在不进行任何修改的情况下编译它时,我收到错误
无法确定架构;使 typedefs.h 适应您的平台
我在 Windows 机器上使用 cygwin。因此,如果有人知道或遇到此错误“无法确定架构;使 typedefs.h 适应您的平台”。请帮我解决它。
谢谢和问候,
SSuman185
compiler-construction - 为什么代码在机器上运行?
我不能说我完全理解编译器是如何工作的。而且,我对他们知之甚少。但是,我一直想知道机器是如何理解我们在文档中编写的代码的。
我知道我们写的东西被翻译成某种东西(如果你也可以给我一些编译的细节,那就太好了),然后在某些操作之后出现二进制代码。
但是电路如何理解和操作 0 和 1。我对计算机体系结构有一定的了解,我知道晶体管是如何工作的,ALU 是如何工作的,以及它是如何实现的。我知道 RAM 是如何工作的(或多或少,所以任何进一步的解释也会很棒)以及 HDD。
但是,当我试图想象编译器是如何产生完全适合有形机器的神奇事物(至少对我而言)时,我迷失了方向。
这让我很惊讶。我们每天都认为是理所当然的,它在概念上是如此的伟大。抽象代码和物理机器之间的合作……太神奇了。
如果您的答案有必要,请不要担心深入机器内部,我觉得它真的很有趣,也许您可以启发我。您为描述此过程提供的详细信息越多越好。
computer-architecture - 关于数据访问的时间局部性和关于数据获取的时间局部性
我遇到了一个问题,如下所述,
描述一个程序的一般特征和行为,它将表现出:
(a) 关于数据访问的
低时间局部性 (b) 关于指令提取的低时间局部性
我了解时间局部性,但我无法理解它对数据访问和指令获取的意义。如果有人可以向我解释,我将不胜感激。
computer-science - 在现实生活中的代码中混淆了时间和空间局部性
我正在阅读这个问题,我想更多地了解他展示的代码,即
问题是,
- 我了解时间局部性,我认为对 i 和 j 的引用应该是时间局部性。我对吗?
- 我也理解空间局部性,因为我链接的问题是对 a[i] 的引用应该是空间局部性。我对吗?
该人说,
“当访问 a[i] 十次时,内部循环将调用相同的内存地址,所以我猜这是时间局部性的一个例子。但是在上面的循环中也有空间局部性吗?”
我不同意他的猜测。由于 a[i] 生成的引用应该是空间局部性(它们将引用块中的下一个元素)。我对吗?
graphics - 模拟一个简单的图形卡
好的。我可以找到简单架构的模拟设计。(编辑:绝对不像 x86)
例如使用 aint
作为程序计数器,使用 abyte array
作为内存等等。
但是我怎样才能模拟显卡的(可以想象的最简单的显卡)功能呢?
就像使用 anarray
来表示每个像素并一个一个地“绘制”每个像素。
但何时绘制与 CPU 同步或异步?谁存储graphic data
在该数组中?是否有存储像素和绘制像素的指令?
请考虑所有问号('?')并不意味着“你问了很多问题”,而是解释了问题本身 - 如何模拟显卡?
编辑: 链接到 CPU+内存模拟的基本实现设计
computer-architecture - 链接多台计算机以处理任务
我不确定这个问题是否属于这里,所以如果不属于,请随时迁移它。
我的问题是,是否可以将许多不同的 PC 单元组合在一起工作?以购买 3 台不同的 HP 台式电脑为例。然后链接硬件,使它们充当一台 PC。
如果是这样,请指出我可以使用的一些资源。
谢谢你的时间。
注意 我不是指通过网络链接它们,而是让实际的硬件一起工作。
我不确定这是否可行,所以我确信我所有的谷歌搜索词都与该问题无关。
c - C volatile 变量和高速缓存
缓存是由缓存硬件对处理器透明控制的,所以如果我们在 C 程序中使用 volatile 变量,如何保证我的程序每次都从指定的实际内存地址读取数据而不是缓存。
我的理解是,
Volatile 关键字告诉编译器不应该优化变量引用,而应该按照代码中的程序来读取。
缓存由缓存硬件透明地控制,因此当处理器发出地址时,它不知道数据是来自缓存还是来自内存。
因此,如果我需要每次都必须读取内存地址,我如何确保它不是从缓存中引用,而是从所需地址引用?
不知何故,这两个概念并不能很好地结合在一起。请澄清它是如何完成的。
(假设我们在缓存中有回写策略(如果需要分析问题))
谢谢你,微内核:)