目录
一、GDMA(global direct memory access)
二、GDMA的特殊之处
三、寻寻觅觅
1、什么情况下需要进行地址的路由?
2、虚拟地址是什么?如何进行虚拟地址转换?
(1)虚拟地址是什么?
(2)如何进行虚拟地址转换?
3、TLB是什么?
4、LLC是什么?
GDMA学习笔记
背景:学到DLP-M的时候碰到了一个叫做GDMA的东西,里面有几个名词自己不太理解,在此记录一下。
GDMA的中文名叫做全局直接内存访问模块,
它位于DLP-M中的每个DLP-C中。GDMA解决了DLP-C的一个核心问题,那就是:DLP-C与DRAM之间如何传输数据。
1、每个 DLP-C 可能对应多个 DRAM 控制器,因此 GDMA 发出的请求地址需要进行路由;
2、GDMA 发出的请求地址是虚拟地址,需要使用 MMU 进行虚实地址转换;
3、GDMA 会利用 TLB 加速虚拟地址到物理地址的转换;
4、GDMA 会利用 LLC 缩短片外访存的平均延时。
标黄色的地方是我不太理解的地方,因此需要对这些名词所蕴含的知识点进行补充。
答:
路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动。路由发生在OSI网络参考模型中的第三层即网络层。
路由引导封包转送,经过一些中间的节点后,到它们最后的目的地。作成硬件的话,则称为路由器(上图中的ARXXX便是路由器)。路由通常根据路由表——一个储存到各个目的地的最佳路径的表——来引导封包转送。因此为了有效率的转送封包,建立储存在路由器内存内的路由表是非常重要的。
路由与桥接的不同,在于路由假设位址相似的节点距离相近。这使得路由表中的一项纪录可以表示到一群位址的路径。因此,在大型网络中,路由优于桥接,且路由已经成为互联网上寻找路径的最主要方法。
较小的网络通常可以手动设定路由表,但较大且拥有复杂拓扑的网络可能常常变化,若要手动建立路由表是不切实际的。尽管如此,大多数的公共交换电话网络(PSTN)仍然使用预先计算好的路由表,在直接连线的路径断线时才使用预备的路径。“动态路由”尝试按照由路由协定所携带的资讯来自动建立路由表以解决这个问题,也让网络能够近自主地避免网络断线或失败。
答:
下面我们看看什么是物理地址,什么是虚拟地址。
物理地址 (physical address): 放在寻址总线上的地址。放在寻址总线上,如果是读,电路根据这个地址每位的值就将相应地址的物理内存中的数据放到数据总线中传输。如果是写,电路根据这个地址每位的值就在相应地址的物理内存中放入数据总线上的内容。物理内存是以字节(8位)为单位编址的。
虚拟地址 (virtual address): CPU启动保护模式后,程序运行在虚拟地址空间中。注意,并不是所有的"程序"都是运行在虚拟地址中。CPU在启动的时候是运行在实模式的,Bootloader以及内核在初始化页表之前并不使用虚拟地址,而是直接使用物理地址的。
答:
对于x86系统,页目录的物理地址放在CPU的CR3寄存器中。
CPU把虚拟地址转换成物理地址:
一个虚拟地址,大小4个字节(32bit),包含着找到物理地址的信息,分为3个部分:
第22位到第31位这10位(最高10位)是页目录中的索引,第12位到第21位这10位是页表中的索引,第0位到第11位这12位(低12位)是页内偏移。
对于一个要转换成物理地址的虚拟地址,CPU首先根据CR3中的值,找到页目录所在的物理页。然后根据虚拟地址的第22位到第31位这10位(最高的10bit)的值作为索引,找到相应的页目录项(PDE,page directory entry),页目录项中有这个虚拟地址所对应页表的物理地址。有了页表的物理地址,根据虚拟地址的第12位到第21位这10位的值作为索引,找到该页表中相应的页表项(PTE,page table entry),页表项中就有这个虚拟地址所对应物理页的物理地址。最后用虚拟地址的最低12位,也就是页内偏移,加上这个物理页的物理地址,就得到了该虚拟地址所对应的物理地址。
答:
TLB(Translation Lookaside Buffer)转换检测缓冲区是一个内存管理单元,用于改进虚拟地址到物理地址转换速度的缓存。
TLB是一个小的,虚拟寻址的缓存,其中每一行都保存着一个由单个PTE(Page Table Entry,页表项)组成的块。如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据。虚拟地址转换时,优先查找TLB页表进行虚拟地址匹配,不用再从海量的页表中寻找匹配的页表项,然后再进行地址映射,从而减少虚实地址转换时查询与访问页表的时间开销。
TLB:Translation lookaside buffer,即旁路转换缓冲,或称为页表缓冲;里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。又称为快表技术。由于"页表"存储在主存储器中,查询页表所付出的代价很大,由此产生了TLB。
X86保护模式下的寻址方式:段式逻辑地址-〉线形地址-〉页式地址;
页式地址=页面起始地址+页内偏移地址;
对应于虚拟地址:叫page(页面); 对应于物理地址:叫frame(页框);
X86体系的系统内存里存放了两级页表,第一级页表称为页目录,第二级称为页表。
TLB和CPU里的一级、二级缓存之间不存在本质的区别,只不过前者缓存页表数据,而后两个缓存实际数据。
答:
LLC是Logical Link Control的缩写,意思为逻辑链路控制子层。LLC负责识别网络层协议,然后对它们进行封装。LLC报头告诉数据链路层一旦帧被接收到时,应当对数据包做何处理。LLC命中的请求直接访问,不用再发送到访问时间长且不稳定的DRAM,从而降低直接访问DRAM的频次,减少平均访问开销。
LLC是局域网中数据链路层的上层部分,IEEE 802.2中定义了逻辑链路控制协议。用户的数据链路服务通过LLC子层为网络层提供统一的接口。在LLC子层下面是MAC(介质访问控制)子层。IEEE标准中增加了这个子层,该子层通过在IP包上加了8位的目的地址服务接入点和源地址服务接入点来保证在不同网络类型中传输。另外,有一个8或16位的控制字段用于象流控制的辅助功能。
LLC电路的优点: LLC变换器原边MOSFET ZVS 开通,输出二极管ZCS 关断,没有反向恢复问题,开关损耗小。适合应用于高频化,高功率密度设计。
LLC电路的缺点: LLC变换器仅在谐振点附近效率较高,不适合应用于宽输入电压范围,往往应用于前级带PFC 的场合。正常工作在谐振点附近,仅当输入关断时工作在宽输入,以获得较长的保持时间。
综上所述是学习GDMA时的问题及收获。