cpu-architecture相关内容

如何在任何系统上开始学习汇编语言

我想学习汇编,但我对此不太确定,但因为汇编是低级编程语言,所以在Windows计算机上为打印Hello编写的代码将与在Mac上不同。 如何解决此问题(如果此问题确实存在),以及从哪里开始学习实际的语言。 推荐答案 首先,您需要很好地掌握像C这样的语言的编程,因为它和汇编之前一样低级--其他语言很棒,但隐藏了更多的低级细节。 C有指针,这是汇编语言中常用的,所以在C中我们可以 ..

如何将结构显式加载到L1d缓存中?在带/不带超线程的隔离内核上使用CR0.CD=1的INVD出现奇怪的结果

我的目标是将静态结构加载到L1D缓存中。之后,使用这些结构成员执行一些操作,并在操作完成后运行invd以丢弃所有修改后的高速缓存线。因此,基本上我希望在缓存中创建一个安全的环境,以便在缓存中执行操作时,数据不会泄漏到RAM中。 为此,我有一个内核模块。在那里我给结构的成员设置了一些固定值。然后禁用抢占,禁用所有其他CPU的缓存(当前CPU除外),禁用中断,然后使用__builtin_pref ..
发布时间:2022-07-21 13:03:27 其他开发

如何查看最后一级缓存中有多少片?

我在一篇论文中读到关于末级缓存的介绍。在引言中,有人说末级缓存有很多片。每个片就像一个传统的集关联缓存。根据集合索引和切片ID找到对应的缓存集合(如下图所示)。 我想检查我的服务器有多少个切片。以及每个片的信息(多少个缓存组、每个缓存组中有多少缓存行)。我在Google上搜索的方法是查看/sys/devices/system/cpu/cpu0/cache/index3文件夹下的缓存信息。 ..
发布时间:2022-07-19 16:02:08 其他开发

如何在计算MIPS时去掉赫兹?

我正在学习计算机结构。 我有一个关于MIPS的问题,这是计算CPU执行时间的方法之一。 MIPS公式如下。 并且如果时钟频率为4 GHz并且CPI为1。 我认为MIPS是4000赫兹。 因为它是4*10^9*Hz/1*10^6。 我不知道保留单位赫兹是否正确。 推荐答案 对于任何数量,了解其单位非常重要。除了标度因子(比如秒比埃长很多倍),单位还有维度,这是基本 ..
发布时间:2022-07-14 23:58:14 其他开发

数据依赖与控制依赖的区别

我很难理解数据依赖和控件依赖之间的区别。 我看到的一个例子是: 数据依赖例如,指令使用另一条指令创建的数据 控制相关性例如,指令等待更新的注册表进行比较 我很难理解的是,例如在BEQ中,我等待寄存器更新,但我也依赖他的数据。 所以我不知道如何区分它们之间的区别。 推荐答案 指令等待更新注册表进行比较是对控制相关性的错误描述,难怪 条件分支指令本身对其 ..

快速硬件整数除法

用于整数除法的硬件指令在历史上一直非常慢。例如,对于64位输入,Skylake上的DIVQ延迟为42-95个周期[1](倒数吞吐量为24-90)。 不过,也有性能更好的较新处理器:Goldmont有14-43个延迟,而Ryzen有14-47个延迟[1],M1的吞吐量显然是每个分频2个时钟周期[2],甚至Raspberry Pico也有每个内核的8周期带符号/无符号分频/模数电路(尽管这似乎是 ..
发布时间:2022-06-25 13:20:48 其他开发

线程同步:如何保证写操作的可见性

已经有很多关于软件和硬件内存模型、内存栅栏、存储/加载重新排序等的信息。然而,这些信息似乎都集中在确保对共享内存的读取和写入的相对顺序。 这样的系统将线程的写入完全延迟很长时间是否合法? 例如,假设一个线程对内存中的数据结构进行了一些更新,然后引发了一个应该将更新通知其他线程的标志: (dataWritten is initially false) store value1 st ..

内存屏障的传递性/累积性属性是如何在微体系结构上实现的?

我一直在阅读x86内存模型的工作原理和x86上屏障指令的重要性,并将其与其他体系结构(如ARMv8)进行比较。在x86和ARMv8体系结构中,似乎(没有双关语意思)内存模型尊重传递性/累积性,即,如果CPU1通过CPU0看到存储,并且CPU2通过CPU1看到只有在CPU1看到CPU0存储时才可能发生的存储,那么CPU2也必须看到CPU0的存储。我提到的例子是Paul McKenney的著名论文6. ..

在x86标志寄存器中,辅助进位和普通进位有什么不同?

我想知道这个x86寄存器标志在DOS/Windows程序调试中的含义: 辅助进位(AC = 1或NA = 0) 它与公共进位的含义相同吗?(CY = 1或NC = 0) 推荐答案 当指令导致进位或借出位3时,设置辅助进位标志。与CY的概念相同,只是用于字节中的低位半字节的高位。缩写AC是旧式,该标志在英特尔处理器手册中命名为“AF”,是“调整标志”的缩写。它被少数执行BCD ..
发布时间:2022-06-06 10:09:18 其他开发

让现代CPU保持标志更新是否需要花费大量资源?

据我所知,在现代无序CPU上,最昂贵的东西之一是状态,因为该状态必须在多个版本中进行跟踪,并在许多指令等方面保持最新。 一些指令集,如x86和ARM,广泛使用标志,这是在成本模型不是今天的时候引入的,标志只需要几个逻辑门。类似于每条算术指令设置标志以检测零、进位和溢出。 更新现代无序实现的成本是否特别高?使得例如ADD指令更新进位标志,并且这必须被跟踪,因为尽管它可能永远不会被使用,但是有 ..

计算机如何区分二进制模式是指令还是仅仅是一个数字?

我正在读Hamacher的《Computer Organization and Embedded Systems》一书,我的问题是:计算机如何区分二进制模式是指令还是数字? 有人能帮我理解这个概念吗? 推荐答案 冯·诺伊曼处理器(几乎任何处理器)无法区分内存中的代码和数据。无论CPU的指令指针指向什么,都将作为指令加载到指令解码器中。如果它不是有效指令,它将在CPU中引发异常。 ..
发布时间:2022-05-31 23:49:48 其他开发

为什么ARM LSL和LSR的允许移位值范围不同?

为什么LSL[0,31]允许移位值,而LSR允许移位值是[1,32]? LSL中的0位移位对任何应用程序都有什么用处?为什么在LSR中不允许0班次?为什么LSL不允许32位移位? 推荐答案 此限制适用于按立即数进行的班次。按寄存器移位不受此类限制。 LSL允许为0表示“不换档”。这是一个特例,因为不修改标志设置指令的C标志。 LSR和ASR乘以0的行为与LSL乘以0的行为 ..
发布时间:2022-05-31 23:33:30 其他开发

英特尔:序列化指令和分支预测

The Intel Architecture's Developer's Manual(第三卷,第8-26节),内容为: 奔腾处理器和更新的处理器系列使用 分支预测技术,以通过预取 分支指令之前的分支指令的目的地为 被处死。因此,指令执行不是确定性的 在执行分支指令时序列化。 这是什么意思? 听起来真的,真的很糟糕。这听起来像是一条序列化指令,如CPUID中断分支预测(反之亦然) ..
发布时间:2022-05-08 20:44:48 其他开发