尤其现在,它们之间的区别非常令人困惑。
例如,NVidia 的共享内存是 32 组,所以他们说在一个周期内,可以同时输出 32 个数据...那么端口是什么?缓存结构也有同样的问题
有人能解释一下吗?谢谢!
答案1
“端口”是直接连接的一个信号或一组信号并且完全从一组电子元件到另一组电子元件,通常是在不同的电子元件/电路之间。“组”是一组设备、端口或总线,可以单独寻址或作为一组寻址。
答案2
术语“库”通常用于指一组本质上相同的项目 - 存储库、磁盘驱动器库等。
“端口”一词指的是某个物体通过的概念孔或管道。一般适用于 I/O 设备等。
答案3
是的,在这种情况下,每个线程都会读取多个字的数据。银行同时进行。这需要对正在执行的程序的内存访问进行细粒度的控制,否则您将遇到银行访问/时间安排冲突. 在硬件方面,港口只是两个硬件(串行或并行,单线或多线)之间的连接接口。每个内存组都有一个端口,用于将共享内存与 GPU 核心连接起来。
关于缓存,你可能想看看这个问题缓存和缓冲区有什么区别?深入了解缓存和其他术语。对于端口,缓存对端口的使用是透明的 - 理想情况下,您应该使用缓存来增加吞吐量(或减少延迟),而不会影响端口在高级别的使用方式。
就内存组而言,每个内存组的控制器和端点在接口方面不需要改变。当访问后续数据字时,假设该字已缓存在缓存层次结构中,则数据将以更快的速度可用/返回 - 而不是缓存控制器尚未赶上,并且需要直接在内存中访问该字。在这两种情况下,外部端口接口都是相同的,只是由于延迟增加,信号的时序会发生变化。