据我所知,可以在不崩溃系统的情况下读取ram,甚至可以由ram旁路接管。 http://www.google.com/patents/US6745308

但是,该专利一遍又一遍地指出,如果组件不处于空闲状态,则无法绕开它。似乎已经确认:https://electronics.stackexchange.com/a/70881/17872

c ++是否有可能在允许程序正常运行的同时防止ram控制器变为空闲状态?如果是这样,怎么办?

我知道,如果可能的话,这可能是大量的代码,因此请随时提供伪代码(但实际代码需要长期检查)。

最佳答案

这实际上取决于您“保持空闲状态”的含义,并且可能取决于系统参数的整个范围(总线速度,内存控制器速度,CPU / GPU速度等)。一次简单的尝试可能只是分配大量内存,并以处理器能够达到的最快速度简单地写入该内存中的每个单元。由于单个内核可能不会发出足够的写操作,因此可能需要多个线程来使总线饱和。

话虽如此,我不确定这是否一定是关键因素。是的,如果有人编写了病理上糟糕的代码,则该专利方法不会带来任何好处。但是与没有它相比,它也不会带来很多缺点。是的,还有更多的门,但它看起来并不像一套极其复杂的逻辑(与现代处理器或GPU中的所有其他东西相比)。关键点是,系统通常不会100%饱和,旁路会成功,这会带来好处。

当然,我可能会误解了您的问题是什么,为什么要问这个问题。

08-19 13:39