_______________________
| |
| cache <------> CPU |
| ^ |
| register | |
| V |
| MMU |
|_______________/ \____ |
_______ | A | __________
| GPU | <------------------------------ | H |----------------------------------> | DDR |
|_______| | B | |__________ |
\ /
-
/ \
|A | ________
|P |---------------------------------->| USB |
|B | | _______ |
\ /
-
(ARM 架构)
CPU发出一个VA(Virtual address),MMU接收到VA后,会将VA转换为PA(physical address),其转换机制如下:
1、MMU收到VA
2、分配一个PT(page table),而VA的高20位(32 位)作为PT的index
3、 MMU根据VA的高20位在PT中找到与之对应的某一项,并把该项中的高20位作为PA的高20位
4、 MMU把VA中的低12位作为PA的低12位,得到PA
VA :_________________________________
| ____________________|____________ | ----------------------------------
|-------------------------------------| |
| |
PT: _________V________________________ |
|_____________________|_____________| |
| |
PA: _________ V________________________ |
|_____________________|______________|<--------------------------------|
没有DMAC(DMA control),默认情况下,首先data会先放在cache中,CPU从cache取值,紧接着CPU会将下一步的指令放在cache,再传送给
DDR,外设再从DDR中取值
有DMAC(GPU)时,外设便会直接从DDR中取值,不会经由cache
当访问register时,同样也不回经过cache,而是直接访问register
之所以能做到如上述所述,是因为,在PT中的低12位的flags位中,包含有是否打开cache这一个选项
(欢迎转载,请指明出处)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。