2010-05-11 16 views
1

Dans ARM linux, la plage d'adresses virtuelles du noyau utilisateur est divisée dans le rapport 3: 1.division de l'adresse du noyau utilisateur

Mais dans linux MIPS, cela est généralement 2: 2

Est-ce que quelqu'un sait ce qui motive cette différence de conception? J'ai une faible idée que cela a quelque chose à voir avec le fait que dans MIPS, la recharge TLB est gérée en s/w et les entrées TLB du noyau sont en quelque sorte câblées en s'assurant qu'elles ne subiront jamais un TLB manquer.

Répondre

3

Il s'agit d'une limitation de l'architecture MIPS 32 bits. Le mode utilisateur est limité à 2 Go sur la plupart des processeurs MIPS.

Seules les adresses virtuelles inférieures de 2 Go (0x0000_00000 to 0x7fff_ffff) sont accessibles en mode utilisateur. Cette partie de l'espace adresse est appelée kuseg. Kuseg Les adresses sont traduites par le TLB. La question de savoir si les recharges TLB sont effectuées dans un logiciel n'est pas pertinente. Le noyau vit dans l'espace virtuel de 512 Mo qui s'étend de 0x8000_0000 to 9fff_ffff. Cette partie de l'espace adresse est appelée kseg0. Les adresses Kseg0 ne sont pas traduites par le TLB. Ces adresses sont traduites en supprimant le MSB (c'est-à-dire que la plage d'adresses virtuelles 0x8000_0000-9fff_ffff est câblée à la plage d'adresses physiques 0x0000_0000-0x1fff_0000)

Reportez-vous au manuel MIPS pour plus de détails.