VA Linux Systems Japan株式会社

ホーム 検索 お問い合わせ

English

 
 

 

ホーム VA Tech.Top テックライブラリーTop Xen/IA64 memory management Internals 1

update : 2007/11/30

 

index

Xen特集

テックライブラリ

Xen/IA64 memory management Internals

 

1

the IA64 architecture

2

execution model

3

memory management

4

domain meta physical address layout

5

virtual address layout and TR/VHPT usage

6

vTLB overview

7

virtual address space switch and per vcpu vhpt

8

virtualizing purging translation cache

9

metaphysical addressing

10

avoiding races

11

micro optimizations

プレゼンライブラリ

イベントレポート

tips

VA Virtual-suite

仮想化に関するレポート販売

Xenを使ってみよう

Kernel対応障害解析サービス VA Quest

Xen Summit North America 2010 参加レポート

Xen Summit Asia 2009(上海)参加レポート

Xen Summit North America 2009 参加レポート

Xen Summit Japan参加レポート

Xen Conference Japan 2008 レポート

Xen Summit Fall 2007参加レポート

仮想環境プロダクトの評価

Xen creditスケジューラのアルゴリズムに関する技術解説

Xen Conference Japan 2007 レポート

 
 


Xen/IA64 memory management Internals

This document is for Xen 3.0.0.(Some part of the document is for the later version.)

1 introduction

This document describes about xen/ia64 internals, especially on memory management and grant table. It is assumed that the readers have basic knowledge of IA64 address translation.
For example, translation registers, region registers and etc.

1.1 Related Documents

Intel Itanium Architecture Software Developer's Manual

Itanium Software Conventions and Runtime Architecture Guide

 

2 the IA64 architecture

This section describes IA64 key features which are important to understand Xen/IA64.
However virtual addressing is too basic so that it isn't being discussed here. For details, see the Intel IA64 architecture manual.

2.1 memory ordering

Memory ordering defines the global visibility of memory modification. It is important to distinguish an atomic operation from a memory barrier. For details, see the Intel Itanium Architecture Software Developer's Manual volume2: System Architecture Part II chapter 2.2 Memory Ordering in the Intel Itanium Architecture.

The p2m table of Xen/IA64 is very basic structure and the Xen/IA64 updates it locklessly. It is required to understand its implementation because the Xen/IA64 exploits the IA64 memory ordering semantics.

unordered semantics

release semantics

acquire semantics

memory fence semantics

Figure 1: unordered semantic

Figure 2: release semantic

Figure 3: acquire semantic

Figure 4: memory fence semantic

2.1.1 dependent load

The IA64 doesn't reorder memory access over dependent load unlike Alpha so that smp_read_barrier_depends() is defined as nop. But the Xen/IA64 doesn't exploit it (yet). Possibly there is a room for p2m conversion performance exploiting dependent read.

2.1.2 compiler barrier and volatile

According to C standard, “volatile” type qualifier requires compiler not-optimize. Moreover IA64 ABI defines that storing of volatile type must have release semantics(“.rel”) and loading must have acquire semantics(“.acq”).

2.1.3 atomic operation and memory barrier

Note that atomic operation doesn't mean memory barrier or ordered semantics. Especially simple atomic load/store has unordered semantics.

2.2 implemented address bits, region registers and psr.vm

unimplemented physical address bits

31 <= IMPL_PA_MSB <= 50
32 - 51 bit
NOTE: Xen/IA64 assumes that no real memory is assigned at the physical address
>= 240.

unimplemented virtual address bits

50 <= IMPL_VA_MSB <= 60
51 - 61 bit
When psr.vm = 1, it is decreased by 1.
PAL_VM_SUMMARY vm_info2.impl_va_msb
NOTE: IMPL_VA_MSB = 60 on Itanium2 and Xen/IA64 assumes IMPL_VA_MSB = 60

rid size

The number of bits implemented in the RR.rid field
18 - 24 bit depending on the processor implementation.
IA64_MIN_IMPL_RID_MSB = 17
PAL_VM_SUMMARY vm_info2.rid_size

 

next


 
 
本サイトの利用に関して 免責事項 コピーライト 個人情報保護方針

Copyright C VA Linux Systems Japan. All rights reserved.