相关疑难解决方法(0)

评估Linux-CentOS/Intel机器上的SMI(系统管理中断)延迟

我有兴趣评估运行CentOS的Linux机器上SMI处理的行为(延迟,频率),并用于(非常)软实时应用程序.

  1. 推荐使用哪些工具(针对CentOS的hwlatdetect?),以及最佳解决方案是什么?

  2. 如果没有可用于CentOS的好工具,我是否正确假设在同一台机器上安装不同的操作系统应该产生相同的结果,因为底层硬件/ BIOS是相同的?

  3. 关于这些参数的球场数据是否有任何来源.

这些机器是X86_64架构,运行CentOS 6.4(内核2.6.32-358.23.2.el2.centos.plus.x86_64.)

linux centos x86-64 interrupt

7
推荐指数
2
解决办法
5452
查看次数

优化第 7 代英特尔酷睿视频 RAM 中递增的 ASCII 十进制计数器

我正在尝试针对特定的 Kaby Lake CPU (i5-7300HQ) 优化以下子例程,理想情况下,与原始形式相比,代码速度至少快 10 倍。该代码在 16 位实模式下作为软盘式引导加载程序运行。它在屏幕上显示一个十位数的十进制计数器,从 0 - 9999999999 计数然后停止。

我查看了 Agner 的微体系结构汇编优化指南、 指令性能表和英特尔的优化参考手册

到目前为止,我能够做的唯一明智的优化是将loop指令交换为dec + jnz在此处进行解释。

另一种可能的优化可能是交换lodsbfor mov + dec,但我发现的关于它的信息一直存在冲突,有些人说它有一点帮助,而另一些人则认为它实际上可能会损害现代 CPU 的性能。

我还尝试切换到 32 位模式并将整个计数器保留在一个未使用的寄存器对中以消除任何内存访问,但在读入一点后我意识到这十位将立即被缓存,并且 L1 缓存之间的延迟差异和寄存器只有大约三倍,所以绝对不值得以这种格式使用计数器的额外开销。

(编者注:add reg延迟为 1 个周期,add [mem]延迟约为 6 个周期,包括 5 个周期的存储转发延迟。如果[mem]像视频 RAM 那样不可缓存,则更糟。)

org 7c00h

pos equ 2*(2*80-2)  ;address on screen

;init
cli
mov ax,3
int 10h
mov …
Run Code Online (Sandbox Code Playgroud)

optimization x86 assembly intel bootloader

6
推荐指数
1
解决办法
258
查看次数

在 C 中显示颜色数组

我的程序既写入又读取这样的颜色数组:

struct Image {
    size_t width;
    size_t height;
    struct Color *data;
}

struct Color {
    char r;
    char g;
    char b;
}
Run Code Online (Sandbox Code Playgroud)

如何在 C 语言的屏幕上显示这样的数组?

c graphics image bitmap

0
推荐指数
1
解决办法
4293
查看次数

标签 统计

assembly ×1

bitmap ×1

bootloader ×1

c ×1

centos ×1

graphics ×1

image ×1

intel ×1

interrupt ×1

linux ×1

optimization ×1

x86 ×1

x86-64 ×1