ARM核920T性能优化之MMU
任务切换需要以下步骤:
1)保存活跃任务的上下文,并将该任务置于睡眠态;
2)清除cache,如果使用回写策略,则需要清理D-cache;
3)清除TLB,从而移除原任务的转换数据;
4)配置MMU,以使用新的页表,把虚拟运行空间转换为被唤醒任务在物理存储器中的位置;
5)恢复被唤醒任务的上下文
6)继续执行恢复的任务
二.页表
ARM MMU硬件采用2级页表结构:一级页表(L1)和二级页表(L2)。一级页表只有一个L1主页表(L1 master page table)。L1主页表包含两种类型的页表项:保存指向二级页表起始地址指针的页表项和保存用于转换1MB段的页表项。L1主页表也称为段页表(section page table)。L1主页表将4GB的地址空间划分为多个1MB的段(section),因此L1页表包含4096个页表项,L1主页表是一个混合表,可作为L2页表的页目录,也可作为用于转换1MB虚拟空间的L2粗(coarse)页表或L2细(fine)页表的指针;当L1页表用于转换一个1MB的段时,其页表项(PTE)包含的是物理存储器中1MB页帧(page frame)的首地址。目录页表项和1MB的段页表项可以共存于L1主页表。

一级页表项:
一级页表支持4种类型的页表项:
1)1MB段转换项
2)指向L2细页表的目录项
3)指向L2粗页表的目录项
4)产生中止异常的错误项

二级页表项:
L2页表有4种可能的页表项:
1)定义64KB页帧属性的大(large)页表项;
2)定义4KB页帧的小(small)页表项;
3)定义1KB页帧的微(tiny)页表项;
4)访问时产生页错误中止异常的错误页表项;

L1转换表基址
CP15:c2寄存器保存转换表基地址TTB(Translation Table Base address)-指向L1主页表在虚存中的位置。CP15:c2寄存器的格式如图:

三.转换旁路缓冲器(TLB)
单步页表搜索:
如果MMU搜索的是1MB大小的段页,则硬件能用单步搜索找到所要的页表项,因为1MB的页表项是存放在L1主页表里的。
评论