x86相关内容

如何将结构显式加载到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 其他开发

CPU中的新指令集

每一代新CPU都会引入一些新的指令集,如MMX、3DNOW、SSE等。 我有几个关于它们的一般性问题: 如果某些程序使用例如SSE指令,它是否可以在不支持SSE的CPU上运行? 如果是,是否意味着这些指令将更改为更多更简单的指令? 如果没有,这是否意味着这些新指令的真正性能影响将在几年后,届时大多数CPU将支持这种技术(因此不会有任何不兼容)? 当我编译一个经过优化的C++程序时 ..
发布时间:2022-07-12 21:05:29 其他开发

使用INT 16h的刷新键盘缓冲区x86组件

我有疑问,因为我的代码不工作。我正在实现一个运行下面代码的引导加载器,当我尝试加载它时,它只在少数情况下有效,如下所述。我的代码是下一个: ChangeGameState: mov cx, 00H ;Here I make a delay mov dx, 3240H ;. mov ah, 86H ;. int 15h ..
发布时间:2022-07-11 23:49:29 其他开发

有没有办法在没有底层操作系统的情况下驱动当今的计算机网卡?

我想写一个IO密集型应用程序,没有底层操作系统,运行在x86体系结构上,并驱动任何现代网络接口控制器。 通过查看Linux的驱动程序源代码,我知道驱动Intel e1000e千兆控制器需要数千行代码。我认为这样的代码很难从Linux源代码中提取出来。 您知道有什么解决方案/项目提供驱动当今计算机(包括其网卡)的方法,可能是通过包装Linux驱动程序吗? 非常感谢 推荐答案 ..
发布时间:2022-07-02 15:16:38 服务器开发

Skylake在一个周期内可以执行多少个1字节NOP

我将分支目标与NOP对齐,有时CPU执行这些NOP,最多15个NOP。Skylake一个周期可以执行多少个1字节的NOP?其他英特尔兼容的处理器,比如AMD呢?我不仅对Skylake感兴趣,而且对其他微体系结构也感兴趣。执行15个NOP的序列可能需要多少个周期?我想知道添加这些NOP所带来的额外代码大小和额外执行时间是否物有所值。添加这些NOP的不是我,而是每当我编写align指令时自动添加这些N ..
发布时间:2022-06-27 15:55:52 其他开发

快速硬件整数除法

用于整数除法的硬件指令在历史上一直非常慢。例如,对于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 其他开发

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

我一直在阅读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 其他开发

英特尔x86-中断服务例程职责

我没有这个词的真正意义上的问题,而是我将尝试澄清一个内容问题。假设我们有一个微内核(PC Intel x86;32位保护模式),对于每个CPU异常,都使用中断描述符表(IDT)和中断服务例程(ISR)。如果出现Division by Zero异常,则ISR调用成功。 global ir0 extern isr_handler isr0: cli push 0x00 ; ..
发布时间:2022-05-08 20:33:59 其他开发

现代英特尔处理器有多少种超标量?

我刚刚了解了超标量处理器(https://en.wikipedia.org/wiki/Superscalar_processor)。 我还了解到,随着超标量处理器在宽度/方式数量上的增加,事情变得更加复杂,复杂性增加得如此之快,以至于最好添加更多的内核,而不是更多的宽度。我的教练说,在4路和8路超标量之间增加更多的方式是不值得的。 这让我想知道:英特尔从哪里停止增加方法,开始增加内核? ..
发布时间:2022-05-08 19:58:04 其他开发

为什么Intel x87寄存器有80位宽?

为什么使用如此“奇怪”的寄存器大小?是否有任何文档说明为什么不建议对这些寄存器使用64位或128位? 推荐答案 Wikipedia page on the IEEE 754-1985 standard关于80位扩展格式有一个很好的解释: 该标准还建议使用扩展格式来执行 内部计算的精度高于 最终结果,以最大限度地减少舍入误差“ 双精度浮点数以64位表示。您可能需要更多的位以获得更 ..
发布时间:2022-05-08 19:29:41 其他开发

现代英特尔x86 CPU如何实现商店的总订单

由于其TSO内存模型,x86保证了所有存储的总顺序。我的问题是,有没有人知道这实际上是如何实施的。 我对所有4个围栏是如何实施的印象很好,所以我可以解释当地的秩序是如何保持的。但4个栅栏只会给出程序顺序;它不会给您提供TSO(我知道TSO允许较旧的商店跳到新负载之前,因此只需要4个栅栏中的3个)。 在单个地址上的所有内存操作的总顺序是一致性的责任。但我想知道英特尔(尤其是Skylake)如 ..
发布时间:2022-05-08 19:13:37 其他开发

哪个系统调用号头文件是正确的?

我最近在做一些内核编码,我发现了2个unistd.h文件。 第一个位置为/usr/include/asm/unistd.h。第二个来自内核的源代码:linux/include/uapi/asm-generic/unistd.h。 源代码的版本与我的内核的版本相同,但两个头文件 彼此不同。 /usr/include/asm/unistd.h(从我的电脑): #define __NR ..
发布时间:2022-04-18 10:58:37 服务器开发

在跳转目标基于动态环境值的情况下,如何构建控制流图?

在学习逆向工程时,我经常想到,因为我可以传递任何位置(我有权访问)作为参数,带有一些非硬编码或非确定性目标的跳转指令(因为它以前没有由程序明确定义)可以指向任何地方。因此,如果我用EAX加载一个基于比方说操作系统版本的字符串的值并执行jmp eax,那么任何试图生成控制流图的工具似乎都不知道目标在哪里(它可以基于您的当前环境,但这可能会导致程序中的一些中断路径)。 我错过了什么吗?因为如果我 ..
发布时间:2022-04-16 21:13:37 其他开发

如何为汇编语言程序制作Makefile?

我遇到了这样一个任务,即为我用汇编语言制作的程序构建一个Makefile(没有什么新奇的东西,比如Hello World)。该程序是在Linux 32位,我使用的是NASM汇编语言。到目前为止,我只能找到C程序的Makefile,我知道它们之间没有太大区别,但我不熟悉这个东西。我所拥有的是: Program: main.o gcc -o Program main.o main.o: ..
发布时间:2022-04-06 11:22:14 服务器开发

在x86 ASM的NASM语法中,括号是什么意思?

给定以下代码: L1 db "word", 0 mov al, [L1] mov eax, L1 [L1]中的括号表示什么? 这个问题是关于NASM的。英特尔语法汇编的另一个主要特点是MASM风格,当不涉及寄存器时,括号的工作方式不同: 请参见Confusing brackets in MASM32 推荐答案 [L1] ..
发布时间:2022-04-06 10:50:34 其他开发