内存之间不能够直接复制是受限于什么?

42 个回复
Dongguage
冬瓜哥 2016-04-04

关于从磁盘读数据,这个过程可不简单,首先磁盘接口控制器连接到pcie主控,接口控制器上有dma控制器。

另外,programm io和dma是一对,polling和中断是一对。

看这贴比较乱。既然是搞技术的,最好是按照io流程,第一步,第二步,第三步,这样去描述。

ilovecpp
cpp 2016-04-04

有的。Nvidia的RDMA可以在不同机器的GPU之间通过Infiniband网络复制数据。

【 在 IvanLee 的大作中提到: 】

: 本人不是搞体系结构的,想问一下这个问题。

: 内存之间无法直接复制数据,是因为没有这个必要,还是说做起来比较难?

: 专门领域有没有这种系统,能够通过在Memory controler中增强功能实现吗?

ilovecpp
cpp 2016-04-04

你说的场景,每块复制的长度都很短(几十字节),不够设置DMA的。

如果需要大块的复制,软件上会尽量考虑用CoW代替。

【 在 IvanLee 的大作中提到: 】

: memory controller 不是一种DMA吗?

: 我的出发点是今天普通PC的内存越来越大,如果我们能够在非CPU干预下实现出memcpy, 那么很多使用memcpy的地方都可以节约出CPU来,比如context switch的copy, VM 中的gc copy。这对于in-memory compute应该是一个可以尝试的方向?