直接内存访问如何提高性能
维基百科上有一篇关于 DMA 的文章说,由于外设和 CPU 共享内存总线,因此必须将 CPU 置于保持状态以防止总线争用,但如果 DMA 机制提高性能的主要方式是让 CPU 可以自由地执行其他任务,那么如果它无法访问 RAM,它又如何执行其他任务呢?这篇维基百科文章总线控制说必须有总线仲裁,其他设备也不能同时访问内存,而另一个设备正在访问它。 那么 DMA 是如何提高性能的呢? ...
维基百科上有一篇关于 DMA 的文章说,由于外设和 CPU 共享内存总线,因此必须将 CPU 置于保持状态以防止总线争用,但如果 DMA 机制提高性能的主要方式是让 CPU 可以自由地执行其他任务,那么如果它无法访问 RAM,它又如何执行其他任务呢?这篇维基百科文章总线控制说必须有总线仲裁,其他设备也不能同时访问内存,而另一个设备正在访问它。 那么 DMA 是如何提高性能的呢? ...
有 Bitlocker DMA 保护,还有内核 DMA 保护。后者更好,并且在功能强大的硬件上默认启用,前者仅建议在硬件不支持内核 DMA 保护时使用。 我想知道组策略中的 DMA 保护是什么? 我知道它不是 Bitlocker DMA 保护,因为它位于组策略的其他位置。所以我需要确认,最好是参考一些官方文档,表明这确实是内核 DMA 保护,而不是第三种类型的 DMA 保护。 我使用 Windows 11 22H2 系统兼容性 内核 DMA 保护需要新的 UEFI 固件支持。预计只有新推出的、基于 Intel 的系统(搭载 Windows 10 版本 1...
首先:我一直在纠结应该在哪个 stackexchange 上发布这个问题,因为它涉及操作系统知识、硬件知识,但可能还涉及其他 CS 领域。欢迎提出更好的堆栈站点建议。 我刚刚突然意识到……我已经够老了,可以记住派欧;你知道……CPU 参与将几乎每个字节从连接的外围设备(硬盘、CD-ROM、网络适配器等)传输到内存。有时这可能是一项非常耗费 CPU 的任务。于是出现了直接接入本质上,它只是告诉设备:“这是给你的内存片段,把你的东西放在那里,等你用完后告诉我”。当我注意到驱动器上的 bitlocker 图标时,我...
我希望我正在使用的进程永远不会出现在 Windows 页面文件中。这不是为了性能,而是希望使用 DMA 来监视它。如果使用的虚拟地址空间不在 RAM 中,我就无法访问它。我曾尝试在 Windows 上禁用页面文件,但虚拟地址空间仍然没有出现在 RAM 的 VAD 中。任何关于如何强制将进程放入 RAM 的建议都将不胜感激。 ...
某些 PCIe 设备在没有附加驱动程序或修改驱动程序的情况下无法读取超过 4 GB 的地址空间。在这种情况下,是什么限制了它们可以读取的内存量?是内存控制器吗?是 PCIe 设备的固件吗?还是其他什么?我不认为这是因为设备驱动程序本身,因为 PCIe 设备无需驱动程序即可读取或写入 RAM。有人告诉我这是 32 位与 64 位的问题,但我不明白为什么 PCIe 设备只能寻址 32 位。 ...
我最近从 Ubuntu 19.04 升级到了 Ubuntu 19.10。但升级后,我注意到在进行文件传输或任何硬盘活动时,鼠标开始滞后。 谁能解释为什么会发生这种情况以及如何解决它? 请帮忙,我无法正确运行任何虚拟机。 ...
我非常清楚地理解 CPU 指示 DMA 从硬盘获取数据并将其加载到 RAM 中。 尽管我是一名.Net 开发人员,并且在日常工作中不需要这些,但我仍然不愿意使用一些我不了解(但不是太深)的东西来达到我自己可以实现的程度。 DMA 的具体输入是什么? 但是CPU如何知道要读取硬盘上的哪个内存地址以及读取多长的长度呢? 是否有任何 CPU 指令可以读取“气缸盖扇区 ID”,例如 readhdd“sector_id”? 如果文件有分区或者有错误扇区,DMA 如何知道这一切? 硬盘中是否有一个单独的嵌入式程序来解决这个问题? 在这张图片中,OS Fil...
我使用的是 Ubuntu 16.04,我想使用 dma_alloc_coherent 分配大于 4MB 的 DMA 缓冲区(非缓存)。当我尝试执行此操作时,调用返回 NULL。我尝试使用内核标志 CONFIG_DMA_CMA 等来启用通过连续内存分配器的分配。我看到 CMA 内存被保留,并且我看到 cma_allocator 分配内存,但我仍然无法超过 4MB,即使内存已通过 CMA 分配器为我的驱动程序保留。 ...
我的问题是如何找出我的笔记本电脑上哪个设备具有不允许的 DMA 功能。我尝试禁用我的 USB 设备并从扩展坞上拔下笔记本电脑。我的同事有相同型号的笔记本电脑,但他没有遇到与我相同的问题。 系统信息 OS Name Microsoft Windows 10 Enterprise Version 10.0.16299 Build 16299 Other OS Description Not Available OS Manufacturer Microsoft Corporation System Name NB-SOKRE System Manufactu...
我正在尝试禁用 SATA 3.5 英寸硬盘驱动器中的 DMA,使其在 PIO 模式下工作,因为要使用 GNU ddrescue 从故障磁盘中恢复一些坏扇区 我正在使用 PartedMagic Linux live CD,并尝试使用 hdparm 对其进行修改。磁盘使用 UDMA6,因此我运行: hdparm -p4 /dev/sda 它显示了以下错误(我尝试了几种模式,不仅仅是 PIO4): Attempting to set PIO mode to 0 HDIO_SET_PIO_MODE failed: Inappropriate ioc...
什么时候直接接入使用时,整个内存块从 I/O 设备传输到主内存。 我对这个区块的大小很感兴趣,更具体地说是对这些问题的答案: 块的大小是否恒定(如果不是,那么在什么条件下它会改变)? 块的大小是由硬件还是软件决定的,或者两者兼而有之? ...
我目前正在分析 KVM 解决方案。为此,我想找到 KVM 可能使用 DMA 使用的 Windows 视频内存。有办法实现这一点吗? 该系统当前运行的是 Windows Server 2016。该系统没有显卡,因此内存应该驻留在 RAM 中吗? ...
据我所知,Linux 为各种 DMA 引擎提供了通用的 DMA 框架,并且必须基于该框架实现 DMA 引擎的设备驱动程序。 框架是否为用户应用程序提供任何系统调用或机制,例如:open()?ioctl()或者开发人员是否必须为用户空间实现文件操作? ...
为什么 DMA 没有列在 Windows 性能监视器的可用计数器中?RDMA Activity已经存在但不是 DMA。是否可以在 Windows 中监视 DMA? ...
我的 Acer Aspire One 2GB 突然开始运行得像糖浆一样慢。有时打开一个程序可能需要一分钟的时间。通过谷歌搜索我发现我的硬盘可能在几次崩溃后从 DMA 切换到了 PIO。 我找到了一些信息来查看以前的 Windows 版本是否存在这种情况,但在 Windows 10 的设备管理器中,我似乎找不到任何信息。我在哪里可以找到它处于什么模式,以及如果它已经进入 PIO,如何将其切换回来? 谢谢。 ...