RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1067180
Accepted
Adokenai
Adokenai
Asked:2020-01-08 15:00:27 +0000 UTC2020-01-08 15:00:27 +0000 UTC 2020-01-08 15:00:27 +0000 UTC

如何将 SSD 用作 RAM?

  • 772

我将立即预订不需要 ram 磁盘,但我需要确保系统将 SSD 视为一种 RAM 内存条。没有提出关于速度和延迟的问题。

也就是我在SSD上定义了某个文件或者整个磁盘,在系统中被认为是一个内存槽。

虚拟(交换)内存不适合,因为它对软件是“透明的”或不可见的。

例如:有 4GB 的真实 RAM 和 128GB 的​​ SSD。我想将 SSD 的一部分作为 VM 和程序的 RAM。使用所需的方案,我可以为处理器提供最大容量 (64GB),而不是最大可用 RAM (4GB)

我会考虑所有选项,除了“购买 RAM 并且不交换大脑”选项。

感谢大家解释RAM的理论和内存的分页组织。

这是关于“伪造”内存的纯软件方式,这样您就可以为程序分配比板载更多的内存。VM 示例是说明性的:没有一个 VM 允许您分配比 RAM 更多的内存,即使交换文件大 16 倍也是如此。

ssd
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    nick_n_a
    2020-01-09T19:22:11Z2020-01-09T19:22:11Z

    您需要使用页面文件或交换。我将尝试详细解释原因。

    一开始-那里有什么样的记忆。

    实际上,对于 RAM,物理上有两个支持RAM的接口,一个 DDR (RAM) 连接器,第二个 PCI(或 PCI-express)作为一个活生生的例子 - 视频卡内存。还有其他过时的AGP PCMMCI接口,我不能一一列举,但它们都已经过去了。

    如果您的设备未物理插入第一个接口或第二个接口,则物理上您的设备不能成为RAM的直接来源。CPU 和设备之间没有除上述之外的其他通信协议。因此,假设您可以“焊接”适配器。是的……如何使 PC 可以使用 PCI 内存是一个单独的问题,我无法明确回答。

    SATA接口和IDE不支持直接RAM交换,所以它的设备不能作为RAM的来源。UPD 上网后发现 PCIe SSD 驱动器,它们不能用作 RAM,因为 SATA 程序嵌入在 PCIe-SSD 驱动器中,而不是 RAM 程序。是否可以缝合另一个程序,以便将 PCIe 视为 RAM(非常慢)内存 - 这是有问题的。从理论上讲,有人可能会说,实际上我还没有看到它,并且用闪烁杀死SSD并不好玩。

    所以物理 RAM 可以通过 PCI 和 DDR-RAM 之间的内存控制器获得,就是这样。

    SATA IDE USB 设备支持 DMA,但 DMA 并不是成熟的内存访问,内存访问是通过“中介”,即 你必须先在 DMA 寄存器中设置地址计数器,然后告诉设备它可以使用 DMA,然后设备可以使用或不使用 DMA - 有一种复杂的交换方法,它与硬件中的在线内存访问完全不同。那些。DMA 不是在线内存访问,它甚至不知道设备上有多少内存,尽管它简化了工作。


    Windows 和 Linux 下的程序通常使用虚拟内存,这意味着内存可以是可操作的,它可以是磁盘(也可以是 SSD),也可能根本不是。程序存储器被分成块(至少 4096 字节可以更大),只有那些程序当前正在使用的块在RAM中。剩余的块可能在也可能不在磁盘上。当您尝试访问在某些条件下不可操作的虚拟内存时,内存将被操作内存替换,即 操作系统看起来磁盘这个存储与否。如果内存是磁盘 - 操作系统正在寻找一块RAM,则从磁盘中读取一块RAM ,然后内存再次从磁盘变为可操作的。如果没有空闲的可操作块,操作系统可以将一块很少使用(计算)的内存转储到磁盘,因此操作系统总是会找到一个空闲块。

    这种机制称为交换、页面文件、分页文件。那些。虚拟内存的数量是物理 RAM 的数量 + 页面文件的数量。

    您提出的算法与上述算法非常相似,但不同之处在于您不希望程序告诉任何有关磁盘空间可用性的信息。我不认为这很好,因为如果操作系统的“内核”进入磁盘,那么一切都会非常慢。操作系统区分哪些区域可以制成磁盘内存,哪些区域不能。理论上,可以创建这样的程序。不幸的是,没有人会帮助你去做,而且你需要几年的时间来实施它,我希望你明白这样一个程序不会有太多的好处。

    页面文件通常用于此目的。


    问题 这是关于“伪造”内存的纯软件方式,以便您可以为程序分配比板载更多的内存。 回答- 有可能,但不像往常那样。非常希望通过VirtualAlloc分配内存,因为常规内存管理器将处于昏迷状态,它很可能不是为这样的卷设计的。需要选择内存页大小的倍数(要找出大小,需要调用GetSystemInfo 并取dwAllocationGranularity 参数)。然后操作系统本身将分配您将拥有RAM的位置以及磁盘的位置. 必须理解,在 x86 中,这不能在单个进程中完成(因为理论上最大的虚拟内存量是 4Gb,其中一半是为操作系统和库保留的,线性空闲块甚至不到一半) ,对于 x86 程序,您将必须创建多个进程,并且对于每个进程,您可以分配 1Gb 的某个位置(有条件地)。那些。如果要占用 64Gb,则需要创建 64 个进程。可以使用ReadProcessMemory例如读取内存。一些网络浏览器创建了许多进程,我认为是为了这个目的。您也可以使用AWE窗口(但实际上只能通过管理员权限或服务)。

    对于 x64,它是可能的,也许只有一个特性。我认为不可能在一块中分配大量。但是您可以分配 64 次 1Gb(或更多)并且它是通过VirtualAlloc. 在Linux下,我不能确切地说是如何,但我认为是一样的。试试吧,会有更多的问题 - 问。

    问题 是没有一个虚拟机允许分配比 RAM 更多的内存-答案也是如何分配的。也许不是所有的程序,但有些程序绝对比 RAM 更能“吃”。

    PS不要忘记交换文件不一定是文件。在Linux下,可以在分区中选择一个分区进行交换,然后将磁盘的某一部分用于交换文件,由于这部分没有文件系统,工作会更快。

    PS UPD 更多。DDR4 速度 - 25600 Mb/s,DDR3 从 6400 Mb/s 到 12800。PCIe 速度最大 64000 Mb/s,但 SSD 速度 - 我发现最大 3200 Mb/s 估计,2200 Mb/s 顺序读取(实际上会更少)英特尔 SSD 750 http://fcenter.ru/online/hardarticles/hdd/38592-SSD_s_interfejsom_PCI_Express_obzor_i_testirovanie_pyati_modelej我理解最昂贵和最好的之一......并且考虑到元素基础,速度不太可能与速度相媲美内存。在实践中,DDR(RAM) 的制造将更容易且更便宜。

    UDP:内存盘。RAM 盘出现,您可以向其中写入信息,但其中的信息在关闭电源后丢失。例如 PCIe 宽插槽中的 Gigabyte i-RAM (GC-RAMDISK)。它们可能非常适合交换文件或临时文件夹。在那里插入了 RAM,但它用作磁盘,即 反之亦然,而不是问题 - 内存用作磁盘。

    我还注意到 PCIe v 1.0 可以在微控制器上完成,v2.0 可以有条件地在微控制器上完成。

    关于 PCIe。PCIe1.0 的速度 2.5GT/s 到 10.0GT/s(8 通道)在 250Mhz 是可能的。对于 99% 的逻辑和微控制器,这是上限(假设逻辑并行化信号,MC 单元将拉 250Mhz(TI 有 350 MHz 的 D 触发器))。为了达到更高的速度,您需要使用昂贵的 FPGA,它还需要能够编程和焊接。有文档的已知 FPGA - 不超过 10-20 件(不考虑系列划分),以及他们编写的有关 PCIe 许可证的文档中的其他内容。因此,你不可能自己“感受”到 PCIe 2.0+,而 PCIe 将由有能力自行制造芯片或至少可以编程 FPGA 的公司独家开发,即 你不能指望普通白人推出新的 PCIe 产品,我们的路仍然封闭。除非个别爱好者能掌握FPGA。出于某种原因,仍然没有用于 PCIE 的适配器或 PCI-phy 层微电路,而且很可能不会。这个区域可能没有需求。

    链接

    • 我尝试做磁盘存储

    • 来自评论的愿望http://bbs.vbstreets.ru/viewtopic.php?f=1&t=1045#p6784461

    • 使用 VirtualAlloc 和 AWE http://wm-help.net/books-online/print-page/59464/59464-8.html

    • 有关 PCIe 速度、标准规定的其他接口速度的信息https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/phy-interface-pci-express- sata-usb30-架构-3.1.pdf

    • 14

相关问题

  • 未定SSD驱动器?

  • ssd上的分区会影响它的寿命吗?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5