概述
在T2080中,有4种地址域(address domains),
- CPU看到的逻辑地址,虚拟地址,物理地址,由MMU负责三者的转换
- 内部本地地址空间,包含CCSR和DSCR
- SRIO的外部内存,IO,和配置空间
- PCIe的外部内存,IO,和配置空间
本地地址映射(local address map)指的是,CPU看到的物理地址,即CPU访问内存和IO空间时,发出的地址,DMA控制器也使用这个本地地址映射,所有的DDR空间和其他模块如CCSR存在于这个地址映射中,本地地址映射由32个本地访问窗口LAWs(local access window)定义,每个窗口映射一个目标接口,比如DDR控制器,PCIe控制器,CCSR有一个专用的CCSR窗口,本地地址映射还有一个固定的启动(boot)窗口,位于0x00_FF80_0000到0x00_FFFF_FFFF,DCSR会占用一个LAW。
如果对LAW的访问落到了外设接口比如SRIO,那么外设会用ATMU(address translation and mapping unit)再对这个地址进行转换,发到外设上的地址是转换后的地址,DDR Controller和IFC也有类似的功能,Outbound ATMU负责将本地地址空间翻译到外设地址空间,Inbound ATMU负责把外设地址空间翻译到本地地址空间,所以Inbound ATMU和LAW必须是一致的。对比ATMU和LAW可以发现,LAW只是标识哪一段地址空间是哪个外设,但没有翻译操作。
LAW
如果不同外设对应的LAW有重复部分,那么32个窗中编号小的占有这段空间。一组LAW由3个32位寄存器表示,高32地址,低32位地址,属性。
CCSR地址在0xFFE000000,
ATMU
SRIO有8个Outbound ATMU和1个默认的ATMU,4个Inbound ATMU和1个默认的ATMU,PCIe有4个Outbound ATMU和1个默认的ATMU,4个Inbound ATMU和1个固定的MSI ATMU。如果一个Inbound传输对应的LAW指向一个外设,这样有可能造成系统死锁。