ARM720T用户手册提到了小页面和大页面。由于ARM 720T需要在页表中将64KB页表条目复制16次,为什么不放置16个小页(4KB)条目来模仿64KB页条目,而不是首先使用大页面?为什么ARM有64KB大页面?
2
A
回答
3
从ARM720 TRM,
大页面 包括存储器64KB块。大页面支持 以允许映射 内存的大区域,同时仅使用 TLB中的单个条目。 其他访问控制机制扩展为 到16KB子页面。
主要的好处是一个64k条目只会消耗一个TLB(MMU页面条目缓存)。 TLB是64项,因此64*4k = 256kB
与64*64k = 4MB
;不需要页表查找来解决的内存量的显着增加。
有很多缺点。例如,一个可移植的操作系统(和它的API)可能需要较小的页面。如果所有条目都是64k碎片可能会导致。该部分条目甚至更好,每个代表在TLB中具有64MB配件的1MB块。通常该部分将更好地用于虚拟==物理映射的。
如果您知道您的系统只有4MB的可用内存,那么64k页的条目可以带来更可靠的性能。即使内存容量较大,中断代码和数据也可以使用带有TLB锁定的64k条目note来避免页表格散步。这可能会导致更好的IRQ延迟。 TLB是有限的资源,因此使用4k条目作为中断处理程序可能会导致浪费TLB。使用部分条目可能会浪费内存,因为大多数中断代码是1MB的<。
即使没有锁定,很可能经常使用的64k条目仍将保留在TLB中。具有每个任务/进程内存的操作系统可能需要更改可能导致TLB和缓存刷新和无效的MMU表。为了简化上下文切换,一切都可能失效并刷新。所以一个表中的中断可能比你想象的更普遍。这是使用MMU“PID”功能的动机,并且只会刷新/无效较小的内存区域,并允许内核代码/数据保留在系统缓存中。像调度程序这样的其他代码也将受益于被64k条目映射。
注意: ARM720T可能没有锁定,但一些ARM CPU和MMU条目在CPU系列之间非常相似。这个答案适用于许多不同的ARM CPU系列。
相关问题
- 1. 页面大小和页面表项大小有什么区别
- 2. ARM模式,为什么有这么多?
- 3. 为什么Scala stdlib中没有ARM?
- 4. 尝试打开sqlite数据库时,页面大小为64KB时出现异常
- 5. 这两个页面为什么有不同的列大小?
- 6. 为什么页面为GA中的大多数页面加载时间为0?
- 7. arm gcc toolchain作为arm-elf还是arm-none-eabi,有什么区别?
- 8. 为什么AWS Dynamo SDK不提供存储大于64kb的对象的方法?
- 9. 什么是ARM
- 10. ARM大会什么是ARM的顶级操作?
- 11. 为什么uboot使用arm-linux-gcc作为默认arm CROSS_COMPILE?
- 12. 为什么jsp页面被缓冲?它有什么用处?
- 13. 为什么只有64kB的数据被保存在我的MySQL数据列中?
- 14. 为什么所有的ARM bootloader都有汇编代码?
- 15. 为什么IIS7将特定的XHTML页面视为XML页面?
- 16. 分页。为什么只有一个页面显示?
- 17. 为什么malloc(1)给出多个页面大小?
- 18. 为什么我的Swiffy html5导出文件放大页面?
- 19. 为什么移动浏览器完全放大我的页面?
- 20. arm-linux-gcc和arm-none-linux-gnueabi有什么区别
- 21. Linux ARM ELF和iOS ARM ELF文件有什么区别?
- 22. arm-eabi-gcc和arm-elf-gcc有什么区别?
- 23. ARM NEON:vld4_f32和vld4q_f32有什么区别?
- 24. aspx页面的IIS头部有时出现在页面上,有什么想法为什么?
- 25. POSIX:在64KB的边界上分配64KB
- 26. 为什么锁定的页面没有计入工作集大小?
- 27. jQueryUI。为什么界面如此之大?
- 28. 为什么ImageResizer会裁剪tiff页面,如果tiff具有不同大小的页面?
- 29. 为什么页面刷新一次?
- 30. 为什么刷新html页面很慢
Stackoverflow有很多这个主题的标签。例如,对于这个问题的读者来说,[tag:tlb],[tag:cpu-cache]和[tag:paging]也可能是有趣的。 –