MMU with 16MB super sections

转载 2012年03月22日 23:03:45

MMU with 16MB super sections - howto?


Posted by Coolguy 11 July 2011 - 05:22 PM


I am trying to setup MMU with 1:1 scheme (VA=PA). I wanted to try with a 16MB super section.

I first tried with 1MB section and created a 1:1 TLB with each entry being 1MB and it takes 16KB space with 4K entries. This works

Then i tried with 16MB super sections with only difference being - bit 18 set for each entry in the TLB. This is as per the ARM TRM.

Basically i am trying this during boot and hence i don't have 16KB free space to have 1MB TLB entry size. So i thought a 16MB entry will result in 256 entries => 1K space.

I am using ARM1176ej-s processor. When i searched i get this link ""

" Because each first level page table entry covers a 1MB region of virtual memory, the 16MB supersections require that 16 identical copies of the first level descriptor of the supersection exist in the first level page table."

I don't understand this line. Is the first level page table is always meant to be 16KB size? What is the benefit of 16MB super section then?

Can anyone post and example of having a 16MB supersection in TLB (256 entries) with 1:1 scheme?


Posted by isogen74 11 July 2011 - 06:29 PM

Ok, first things first, lets correct some terminology as currently you are getting it wrong and it will only lead to confusion ...

The tables in memory which define the VA to PA translation are the translation tables, and each entry in the table is a "table descriptor".

The TLB is the "translation lookaside buffer" - effectively a cache of recent address translations so you don't keep having to perform conversions using the tables in main memory which are relatively slow.


Is the first level page table is always meant to be 16KB size? What is the benefit of 16MB super section then?

Effectively yes (but not quite, more on that later). Super-sections have no impact on the L1 table size, so every entry in the L1 table covers 1MB of address space. For super sections you repeat the same entry 16 times.

Why bother - because you know all 16 items have the same address and access properties it means we only need one entry in the TLB cache to cover 16MB, rather than 1MB using normal sections. Therefore you can fit more address space translation ranges in your TLB at the same time; it goes faster.


(but not quite, more on that later)

With the ARM1176 and the newer ARMv7A Cortex cores you can program the size for the L1 translation table. Each entry still covers 1MB but you can simply decide to expose less virtual address space to the applications - if you are happy with 512MB of virtual address space you only need to expose a 2KB L1 table, for example.


string(66) “exception: aggregation result exceeds maximum document size (16MB)”我用aggregation 从mongo...
  • u012063703
  • u012063703
  • 2015年05月26日 11:37
  • 1289

keil mini2440 分散加载文件scatter中(InRoot$$Sections)的理解

查阅一些资料终于认识了 (InRoot$$Sections) 实现对映像的加载,而这一段代码就是*(InRoot$$Sections)它是__main()的一部分。从启动代码说起 启动代码 1...
  • weixiao2015
  • weixiao2015
  • 2016年05月02日 12:59
  • 1405


mongo之mapreduce统计唯一字段。普通方法可以使用:$data = $dbname->command(array('distinct'=>'resumeversion','key'=>'mu...
  • e421083458
  • e421083458
  • 2015年07月31日 14:17
  • 1842

critical sections 临界区(危险区)

解决竞态问题的途径是保证对共享资源的互斥访问,所谓互斥访问是指一个执行单元在访问共享资源的时候,其他的执行单元被禁止访问。 访问共享资源的代码区域称为临界区(critical section...
  • u010783226
  • u010783226
  • 2016年07月05日 15:37
  • 277

MMU 工作原理

一、内存管理单元MMU介绍 内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访问权限的检查保护每个进...
  • prike
  • prike
  • 2016年07月19日 15:24
  • 5040


一. CP15寄存器 mcr 将ARM处理器的寄存器中的数据写到CP15中的寄存器中 mrc 将CP15中的寄存器中的数据读到ARM处理器的寄存器中 4.1.2 CP1...
  • u010856776
  • u010856776
  • 2013年06月17日 14:45
  • 920

PowerPC MMU机制读书笔记

读PowerPC的programming environment manual的第七章内存管理单元(MMU)的随手记下来的只言片语。...
  • hahajinbu
  • hahajinbu
  • 2016年01月14日 20:01
  • 1033


一、MMU的产生       许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还...
  • q454684431
  • q454684431
  • 2016年03月31日 17:44
  • 1847


1、shell登陆和显示 假设在本机上有一个端口为17380的MongoDB服务,假设已经把mongo bin文件加入到系统PATH下。 登陆:mongo --port 17380    ...
  • bobo_93
  • bobo_93
  • 2016年04月12日 18:21
  • 403


  • coldsnow33
  • coldsnow33
  • 2014年07月19日 12:33
  • 1611
您举报文章:MMU with 16MB super sections