KR20080007448A - 동적 논리적 파티션 기능을 갖는 컴퓨팅 환경에서의 컴퓨터메모리 관리 - Google Patents

동적 논리적 파티션 기능을 갖는 컴퓨팅 환경에서의 컴퓨터메모리 관리 Download PDF

Info

Publication number
KR20080007448A
KR20080007448A KR1020077025524A KR20077025524A KR20080007448A KR 20080007448 A KR20080007448 A KR 20080007448A KR 1020077025524 A KR1020077025524 A KR 1020077025524A KR 20077025524 A KR20077025524 A KR 20077025524A KR 20080007448 A KR20080007448 A KR 20080007448A
Authority
KR
South Korea
Prior art keywords
page
page frame
lmb
memory
hypervisor
Prior art date
Application number
KR1020077025524A
Other languages
English (en)
Other versions
KR100992034B1 (ko
Inventor
윌리엄 조셉 암스트롱
리차드 루이스 안트
마이클 조셉 코리건
데이비드 로버트 엥거브레츤
티모시 리차드 마치니
나레쉬 나야르
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20080007448A publication Critical patent/KR20080007448A/ko
Application granted granted Critical
Publication of KR100992034B1 publication Critical patent/KR100992034B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

논리적 파티션의 오퍼레이팅 시스템에 대하여 투명하게 동작하는 동적 논리적 파티션 기능을 갖는 컴퓨터에서의 컴퓨터 메모리의 관리에 관한 기술이다. LPAR의 오퍼레이팅 시스템에 대한 페이지 테이블에서 페이지 프레임 번호를 갖는 페이지 프레임의 컨텐츠를 논리적 파티션(LPAR)의 하나의 메모리 블록(LMB : Logical Memory Block)의 페이지 프레임으로부터 LMB 외부의 페이지 프레임으로 하이퍼바이저(hypervisor)에 의해 복사하는 것을 포함하는 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 예시적인 방법, 시스템 및 제품이 설명되어 있다. 실시예는 새로운 페이지 프레임 번호를 페이지 테이블에 기억하는 것을 대표적으로 포함하고, 그 컨텐츠가 복사되는 각 페이지 프레임에 대해, 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 하이퍼바이저에 의해 기억하는 것을 포함한다. 대표적인 실시예에서, 페이지 프레임의 컨텐츠를 복사하는 것과 새로운 페이지 프레임 번호를 기억하는 것은 오퍼레이팅 시스템에 대해 투명하게 수행된다.
메모리 관리, 논리적 파티션, 하이퍼바이저, 페이지 프레임 번호, 오퍼레이팅 시스템

Description

동적 논리적 파티션 기능을 갖는 컴퓨팅 환경에서의 컴퓨터 메모리 관리{MANAGING COMPUTER MEMORY IN A COMPUTING ENVIRONMENT WITH DYNAMIC LOGICAL PARTITIONING}
본 발명은 데이터 처리에 관한 것으로, 더욱 상세하게는, 동적 논리적 파티션 기능을 갖는 컴퓨터에서의 컴퓨터 메모리를 관리하기 위한 방법, 시스템 및 제품에 관한 것이다.
1948년의 EDVAC 컴퓨터의 개발은 컴퓨터 시대의 시작으로 주로 언급되고 있다. 그 이후, 컴퓨터 시스템은 매우 복잡한 장치로 진화하였다. 오늘날의 컴퓨터는 EDVAC과 같은 초기의 컴퓨터에 비해 더욱 복잡하다. 컴퓨터 시스템은 하드웨어 및 소프트웨어 구성요소의 조합, 어플리케이션 프로그램, 오퍼레이팅 시스템, 프로세서, 버스, 메모리, 입출력 장치 등을 대표적으로 포함한다. 반도체 가공 및 컴퓨터 아키텍처에 있어서의 발전은 컴퓨터의 성능을 더욱 높이므로, 더욱 복잡한 컴퓨터 소프트웨어가 하드웨어의 더욱 높은 성능을 활용하도록 진화하게 되어, 오늘날의 컴퓨터 시스템은 단지 몇 년 전보다 더욱 강력하게 된다.
오늘날에는, 프로세서의 수, 입출력(I/O : Input/Output) 슬롯의 수 및 메모리 크기의 측면에서 대폭 증가한 시스템을 개발하는 경향이 있다. 컴퓨터 하드웨어 의 설계에 있어서의 발전은 이러한 물리적 자원의 크기를 계속해서 급속하게 증가시키지만, 일부의 주요 어플리케이션 및 서브시스템은 그 확장성(scalability)에 있어서 뒤떨어진다. 그러므로, 파티션(partition) 기능, 즉, 물리적 또는 논리적 파티션을 갖는 시스템을 제공하여 하위 컴퓨터 시스템이 기능의 세분화 정도(granularity)를 제공하는 추세에 있다. 파티션 기능은 멀티-칩 모듈(MCM : Multi-Chip Module), 백플레인(backplane), 도터 보드(daughter board), 마더 보드(mother board), 또는 그 외의 시스템 보드에서 이루어지므로, 물리적 파티션은 일반적으로 비교적 대략적인(coarse) 파티션의 세분화 정도를 제공한다. 논리적으로 파티션이 행해진 시스템에서는, 파티션의 세분화 정도가 하나의 CPU 또는 CPU의 일부분, 메모리의 작은 블록, 또는 전체 I/O 버스 대신에 I/O 슬롯과 같이 일반적으로 훨씬 더 미세(fine-grained)하다. 논리적 파티션에 의해, 컴퓨터 자원의 소정의 세트(set)는 물리적 파티션보다 다수의 더 많은 논리적 파티션으로 재분할될 수 있다.
논리적 파티션 LPAR(logical partition)은 오퍼레이팅 시스템(O/S : Operating System)의 인스턴스(instance)를 호스트(host) 할 수 있는 컴퓨터 자원의 서브세트이다. LPAR은 특수한 하드웨어 레지스터 및 하이퍼바이저(hypervisor)라고 불리는 트러스티드 펌웨어(trusted firmware) 구성요소를 통해 구현된다. 이와 함께, 이들 구성요소는 각 논리적 파티션 근처에 단단한 아키텍처 "박스(box)"를 만들어, 파티션 동작을 그 파티션에 할당된 프로세서, 메모리 및 I/O 자원의 독점적인 세트에 한정시킨다. 오늘날, 컴퓨터 시스템은 더 커지므로, 소정의 하드웨 어 시스템상에서 오퍼레이팅 시스템의 몇 개의 인스턴스를 실행하여 각 O/S 인스턴스와 그 서브시스템이 원활하게 확장 및 수행하게 되는 능력은 하드웨어의 최적 사용을 지원하고 비용을 절감하게 된다. 정적인 파티션 기능이 전체적인 시스템 성능을 조절하는데 도움을 주지만, 오늘날의 논리적 파티션이 행해진 시스템도 "동적 재구성(dynamic reconfiguration)" 능력(재부팅(reboot)을 필요로 하지 않으면서 LPAR로 또는 LPAR로부터, 또는 하나의 LPAR로부터 또 다른 LPAR로 하드웨어 자원, 프로세서, 메모리, I/O 슬롯 등의 이동을 가능하게 하는 것)을 제공할 수 있다. 동적 재구성은 하드웨어 자원을 궁핍한 O/S에 적시에 동적으로 이동하여 작업부하 요구를 충족시키는 능력을 제공함으로써 개선된 해결책을 가능하게 한다.
그러나, 오늘날의 대표적인 동적 재구성 툴은 LPAR의 하이퍼바이저 및 오퍼레이팅 시스템 사이의 협력(cooperation) 또는 조정(coordination), 즉, 약간의 단점을 지닌 컴퓨터 동작의 패턴에 의존한다. 예를 들어, 메모리의 동적 재구성에서는, O/S는 O/S가 해제하지 않을 잠겨진 또는 고정된 페이지 프레임을 유지할 수도 있다. 다수의 상이한 오퍼레이팅 시스템이 동일한 시스템상의 별도의 LPAR에서 동시에 실행될 수도 있다. 예를 들어, IBM의 POWERTM은 3개의 상이한 오퍼레이팅 시스템을 지원한다. 지원된 오퍼레이팅 시스템 중의 하나 이상은 하이퍼바이저와의 이러한 협력에 필요한 기능을 지원하지 않을 수도 있다. 또한, 조정 방식에 있어서, O/S의 잘못된 또는 악의의 인스턴스는 전혀 협력하지 않을 뿐만 아니라, 효율적인 컴퓨터 자원 관리에 해로운 방식으로 실제로 작동할 수도 있으므로, 메모리의 관리 가 협력 방식에서 더욱 복잡해진다.
논리적 파티션의 오퍼레이팅 시스템의 관여없이(transparently) 동작하는 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 방법, 시스템 및 제품이 제공된다. LPAR의 오퍼레이팅 시스템에 대한 페이지 테이블에서 페이지 프레임 번호를 갖는 페이지 프레임의 컨텐츠를 논리적 파티션(LPAR)의 하나의 논리적 메모리 블록(LMB : Logical Memory Block)의 페이지 프레임으로부터 LMB 외부의 페이지 프레임으로 하이퍼바이저에 의해 복사하는 것을 포함하는, 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 예시적인 방법, 시스템 및 제품에 대해 설명되어 있다.
발명의 실시예는 페이지 테이블에 새로운 페이지 프레임 번호를 기억하는 것을 대표적으로 포함하며, 컨텐츠가 복사되는 각 페이지 프레임에 대해, 그 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 하이퍼바이저에 의해 기억하는 것을 포함한다. 대표적인 실시예에서, 페이지 프레임의 컨텐츠를 복사하고 새로운 페이지 프레임 번호를 기억하는 것은 오퍼레이팅 시스템의 관여없이 수행된다.
또한, 대표적인 실시예는 페이지 테이블의 모든 페이지 프레임의 리스트를 하이퍼바이저에 의해 생성하는 것; 하이퍼바이저가 페이지 프레임의 컨텐츠를 복사하고 새로운 페이지 프레임 번호를 기억하는 동안, 페이지 프레임을 페이지 테이블에 추가하는 오퍼레이팅 시스템으로부터 하이퍼바이저로의 호출을 하이퍼바이저에 의해 감시하는 것; 페이지 테이블에 추가된 페이지 프레임을 리스트에 추가하는 것; 페이지 프레임의 컨텐츠를 리스트상에 복사함으로써 페이지 프레임의 컨텐츠를 복사하는 것이 수행되는 것을 포함한다.
일부 실시예에서는, 하나 이상의 크기의 메모리 페이지가 LMB의 페이지 프레임에 맵핑(mapping)된다. 이러한 실시예는 메모리 관리 인터럽트(interrupt)를 오퍼레이팅 시스템으로부터 하이퍼바이저로 지시하는 것과, 오퍼레이팅 시스템에 대한 메모리 관리 동작을 오퍼레이팅 시스템에 대한 페이지 테이블로부터 임시의 대안적인 페이지 테이블로 전환하는 것을 대표적으로 포함한다. 이러한 실시예에서는, LMB의 페이지 프레임으로 맵핑된 페이지 중에서 가장 작은 것과 동일한 크기를 갖는 세그먼트(segment)에서의 페이지 프레임의 컨텐츠를 복사함으로써, 페이지 프레임의 컨텐츠를 복사하는 것이 대표적으로 수행된다. 이러한 실시예에서 페이지 프레임의 컨텐츠를 복사하는 것은, 임시의 대안적인 페이지 테이블로부터 오퍼레이팅 시스템에 대한 페이지 테이블에도 존재하는 페이지 프레임을 삭제하고, 이러한 삭제된 페이지 프레임의 상태 비트(status bit)를 오퍼레이팅 시스템에 대한 페이지 테이블에 기억함으로써 수행될 수도 있다.
일부 실시예에서는, LMB의 페이지 프레임이 직접 메모리 억세스(DMA : Direct Memory Access)에 대해 맵핑될 수도 있다. 이러한 실시예에서 페이지 프레임의 컨텐츠를 복사하는 것은, DMA에 대해 맵핑된 페이지 프레임의 컨텐츠를 복사하는 동안, 하이퍼바이저에 의해 DMA 동작을 차단하는 것과, DMA에 대해 맵핑된 LMB의 각 페이지 프레임에 대한 DMA 맵 테이블에, 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 기억하는 것을 포함할 수도 있다.
실시예는 LMB보다 더 크고, 또한 페이지 테이블을 포함할 정도로 충분히 큰 자유 연속 메모리(free contiguous memory)의 세그먼트(segment)를 생성하는 것을 포함할 수도 있다. 자유 연속 메모리의 세그먼트를 생성하는 것은 둘 이상의 연속하는 LMB에 대해 하이퍼바이저에 의해 다음의 단계를 반복적으로 수행함으로써 달성될 수도 있다: LPAR의 오퍼레이팅 시스템에 대한 페이지 테이블에 존재하는 LMB의 페이지 프레임의 컨텐츠를 LMB의 페이지 프레임으로부터 LMB 외부의 페이지 프레임으로 하이퍼바이저에 의해 복사하는 단계; 페이지 테이블에 새로운 페이지 프레임 번호를 기억하고, 컨텐츠가 복사되는 각 페이지 프레임에 대해, 그 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 하이퍼바이저에 의해 기억하는 것을 포함하는 단계; 시스템에 대한 자유 메모리의 리스트에 LMB를 추가하는 단계.
실시예는 LMB의 프로세서에 대한 친화도(affinity)를 개선시키는 것을 포함할 수도 있다. 이러한 실시예에서, LMB의 페이지 프레임의 컨텐츠를 복사하는 것은 LMB의 페이지 프레임의 컨텐츠를 LMB 외부의 잠정적인 페이지 프레임에 복사하는 것, 제2LMB의 페이지 프레임의 컨텐츠를 LMB의 페이지 프레임에 복사하는 것, 잠정적인 페이지 프레임의 컨텐츠를 제2LMB의 페이지 프레임에 복사하는 것을 포함할 수도 있다. 이러한 실시예에서, 새로운 페이지 프레임 번호를 기억하는 것은 LMB의 컨텐츠 및 제2LMB의 컨텐츠 양자에 대해 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 기억하는 것을 포함할 수도 있다.
발명의 전술한 그리고 그 외의 특징 및 장점은 첨부한 도면(동일한 참조 번호는 발명의 예시적인 실시예의 동일한 부품을 전반적으로 나타낸다)에서 예시된 것과 같은 발명의 예시적인 실시예에 대한 다음의 더욱 상세한 설명으로부터 명백해질 것이다.
도 1은 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터 메모리를 관리하기 위한 예시적인 컴퓨터를 포함하는 자동 컴퓨팅 머신의 블록도를 설명한 것이다.
도 2는 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터 메모리를 관리하기 위한 또 다른 예시적인 컴퓨터의 블록도를 설명한 것이다.
도 3은 본 발명의 실시예에 따른 컴퓨터 메모리를 관리하는 동적 논리적 파티션 기능을 갖는 또 다른 예시적인 컴퓨터 시스템의 블록도를 설명한 것이다.
도 4는 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 예시적인 방법을 예시하는 순서도를 설명한 것이다.
도 5는 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 또 다른 예시적인 방법을 예시하는 순서도를 설명한 것이다.
도 6은 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 또 다른 예시적인 방법을 예시하는 순서도를 설명한 것이다.
도 7은 자유 연속 메모리의 세그먼트를 생성하는 예시적인 방법을 예시하는 순서도를 설명한 것이다.
도 8은 LMB의 프로세서에 대한 친화도를 개선시키는 예시적인 방법을 예시하는 순서도를 설명한 것이다.
도 1에서 시작하여 첨부한 도면을 참조하면, 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 예시적인 방법, 시스템 및 제품이 설명되어 있다. 본 발명에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하는 것은 자동 컴퓨팅 머신, 즉, 컴퓨터에 의해 일반적으로 구현된다. 그러므로, 추가적인 설명으로서, 도 1은 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터 메모리를 관리하기 위한 예시적인 컴퓨터(152)를 포함하는 자동 컴퓨팅 머신의 블록도를 설명한 것이다. 도 1의 컴퓨터(152)는 적어도 하나의 컴퓨터 프로세서(156) 또는 "CPU" 뿐만 아니라 시스템 버스(160)를 통해 프로세서(156) 및 컴퓨터의 다른 구성요소에 접속되어 있는 랜덤 억세스 메모리(168)(RAM : Random Access Memory)를 포함한다. 실제적인 문제로서, 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 시스템은 하나 이상의 컴퓨터 프로세서를 대표적으로 포함한다. 도 1의 예에서의 RAM(168)은 논리적 메모리 블록 또는 "LMB"(101-110)라고 불리는 세그먼트에서 관리된다.
어플리케이션 프로그램(158), 즉, 실행 스레드(thread of execution)를 이행하는 사용자-레벨 데이터 처리를 위한 컴퓨터 프로그램 명령이 RAM(168)에 기억되 어 있다. 또한, 하이퍼바이저(102), 즉, 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하도록 개선된 LPAR에서 자원을 관리하기 위한 컴퓨터 프로그램 명령의 세트가 RAM(168)에 기억되어 있다. 또한, 오퍼레이팅 시스템(154)이 RAM(168)에 기억되어 있다. 본 발명의 실시예에 따른 컴퓨터에 유용한 오퍼레이팅 시스템은 UNIXTM, LINUXTM, Microsoft NTTM, AIXTM, IBM의 i5/OSTM 및 당업자가 생각할 수 있는 그 외의 것을 포함한다. 오퍼레이팅 시스템(154) 및 어플리케이션 프로그램(158)은 LPAR(450) 내에 배치되어 있다. 도 1의 예에서는, 오퍼레이팅 시스템(154), 어플리케이션 프로그램(158) 및 하이퍼바이저(102)가 RAM(168)에 도시되어 있지만, 독자들은 이러한 소프트웨어의 구성요소가 비휘발성 메모리(166)에 기억될 수도 있다는 것을 이해할 것이다.
도 1의 시스템은 동적 논리적 파티션 기능을 지원하며, 논리적 파티션(LPAR : logical partition)의 오퍼레이팅 시스템에 대한 페이지 테이블에서 페이지 프레임 번호를 갖는 페이지 프레임의 컨텐츠를 논리적 파티션의 하나의 논리적 메모리 블록(LMB : logical memory block)의 페이지 프레임으로부터 LMB 외부의 페이지 프레임으로 하이퍼바이저(102)에 의해 복사하고, 새로운 페이지 프레임 번호를 페이지 테이블에 기억하고, 컨텐츠가 복사되는 각 페이지 프레임에 대하여, 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 하이퍼바이저에 의해 기억하는 것을 포함함으로써 컴퓨터 메모리를 관리하도록 일반적으로 동작할 수도 있다. 도 1의 시스템에서, 페이지 프레임의 컨텐츠를 복사하고 새로운 페이지 프레임 번호를 기억하는 것은 오퍼레이팅 시스템(154)의 관여없이 수행될 수도 있다.
도 1의 컴퓨터(152)는 시스템 버스(160)를 통해 프로세서(156) 및 컴퓨터(152)의 다른 구성요소에 결합된 비휘발성 컴퓨터 메모리(166)를 포함한다. 비휘발성 컴퓨터 메모리(166)는 하드 디스크 드라이브(170), 광 디스크 드라이브(172), 전자적으로 소거가능한 프로그램 가능 판독-전용 메모리 공간(소위 "EEPROM" 또는 "Flash" 메모리(174), RAM 드라이브(도시하지 않음), 또는 당업자가 생각할 수 있는 임의의 다른 종류의 컴퓨터 메모리로서 구현될 수도 있다.
도 1의 예시적인 컴퓨터는 하나 이상의 I/O 인터페이스 어댑터(adapter)(178)를 포함한다. 컴퓨터의 입력/출력 인터페이스 어댑터는 예를 들어, 컴퓨터 표시 화면과 같은 표시장치(180)로의 출력을 제어하기 위한 소프트웨어 드라이버 및 컴퓨터 하드웨어를 통한 사용자-지향 입력/출력뿐만 아니라, 키보드 및 마우스와 같은 사용자 입력장치(181)로부터의 사용자 입력을 구현한다. I/O 어댑터와 함께 I/O를 구현하는 I/O 하드웨어 자원은 본 명세서에서는 전반적으로 "I/O 슬롯"이라고 한다.
도 1의 예시적인 컴퓨터(152)는 데이터 통신을 구현하기 위한 통신 어댑터(167)를 포함한다. 이러한 데이터 통신은 직렬 RS-232 접속을 통해, USB와 같은 외부 버스를 통해, IP 네트워크와 같은 데이터 통신 네트워크를 통해, 그리고 당업자가 생각할 수 있는 그 외의 방식으로 수행될 수도 있다. 통신 어댑터는 하나의 컴퓨터가 또 다른 컴퓨터에 데이터 통신을 직접 또는 네트워크를 통해 송신하는 데 이터 통신의 하드웨어 레벨을 구현한다. 본 발명의 실시예에 따른 목적지의 가용성(availability)을 판정하기에 유용한 통신 어댑터의 예는 유선 다이얼-업(dial-up) 통신을 위한 모뎀(modem), 유선 네트워크 통신을 위한 이더넷(Ethernet)(IEEE 802.3) 어댑터, 및 무선 네트워크 통신을 위한 802.11b 어댑터를 포함한다.
추가적인 설명으로서, 도 2는 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터 메모리를 관리하기 위한 또 다른 예시적인 컴퓨터(152)의 블록도를 설명한 것이다. 도 2는 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 시스템에서의 물리적 메모리의 관리를 더욱 설명하도록 구성되어 있다. 도 2의 시스템의 물리적 메모리는 멀티-칩 모듈(MCM : Multi-Chip Module)(202) 내의 메모리 칩(204)의 프로세서 칩을 따라 배치되어 있다. 다음으로, MCM은 데이터 통신을 위해 시스템 버스(160)를 통해 결합되어 있는 백플레인(206, 208) 상에 구현된다. 백플레인 상의 MCM은 데이터 통신을 위해 백플레인 버스(212)를 통해 결합되고, MCM 상의 프로세서 칩 및 메모리 칩은 MCM(221)의 도면 표시를 확대한 MCM(222) 상에 참조번호(210)로 예시된 MCM 버스를 통해 데이터 통신을 위해 결합되어 있다.
멀티-칩 모듈 또는 "MCM"은 기판상에 조립된 둘 이상의 베어(bare) 집적 회로(베어 다이(bare die)) 또는 "칩 크기 패키지(chip-sized package)"를 갖는 전자 시스템 또는 서브시스템이다. 도 2의 예에서, MCM의 칩은 컴퓨터 프로세서 및 컴퓨터 메모리이다. 기판은 예를 들어, 상호접속 패턴을 갖는 인쇄 회로 기판이나, 두꺼운 또는 박막의 세라믹 또는 실리콘일 수도 있다. 기판은 MCM 패키지의 일체부일 수도 있고, 또는 MCM 패키지 내에 장착될 수도 있다. MCM은 주문형 반도체(ASIC : application-specific integrated circuit) 및 인쇄 회로 기판 사이의 패키징 레벨을 나타내므로, 컴퓨터 하드웨어 아키텍처에 유용하다.
도 2의 MCM은 하드웨어 메모리 분리 또는 "친화도"의 레벨을 예시한 것이다. MCM(222) 상의 프로세서(214)는 물리적 메모리를 다음과 같이 억세스할 수도 있다:
ㆍ 프로세서(214)가 메모리 칩을 억세스하는 상태에서 동일한 MCM 상의 메모리 칩(216)의 물리적 메모리를 억세스하거나,
ㆍ 동일한 백플레인(208) 상의 또 다른 MCM 상의 메모리 칩(218)의 물리적 메모리를 억세스하거나,
ㆍ 또 다른 백플레인(206) 상의 또 다른 MCM 내의 메모리 칩(220)의 물리적 메모리를 억세스할 수도 있다.
이러한 메모리를 억세스하기 위한 컴퓨터 명령 및 이러한 메모리로부터의 복귀 데이터는 오늘날의 계산 속도에서 고려할 대상인 버스 랜드(land) 및 배선의 길이는 말할 것도 없고 다수의 컴퓨터 하드웨어, 메모리 관리 유닛, 버스 드라이버를 횡단해야 하므로, MCM에서 벗어나 메모리를 억세스하는 것은 프로세서를 갖는 동일한 MCM 상의 메모리를 억세스하는 것보다 시간이 더 걸린다. 동일한 이유로, 동일한 백플레인을 벗어나서 메모리를 억세스하는 것도 훨씬 시간이 걸린다. 그러므로, 메모리를 억세스하는 프로세서를 갖는 동일한 MCM 상의 메모리는 MCM에서 벗어난 메모리보다 더욱 밀착된 친화도를 갖는다고 말하며, 억세스를 위한 프로세서를 갖는 동일한 백플레인 상의 메모리는 또 다른 백플레인 상의 메모리보다 더욱 밀착된 친화도를 갖는다고 말한다. 이와 같이 설명된 컴퓨터 아키텍처는 설명을 위한 것이며, 컴퓨터 메모리의 한정을 위한 것이 아니다. 몇 개의 MCM은 예를 들어, 백플레인에 연결된 인쇄 회로 기판상에 설치될 수도 있으며, 이로 인해, 도 2에 예시되지 않은 추가적인 친화도의 레벨을 생성할 수 있다. 당업자가 생각할 수 있는 컴퓨터 아키텍처의 다른 형태는 프로세서-메모리 친화도에 영향을 줄 수도 있으며, 이러한 모든 형태는 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 메모리 관리의 범위 내에 있다.
추가적인 설명으로서, 도 3은 본 발명의 실시예에 따른 컴퓨터 메모리를 관리하는 동적 논리적 파티션 기능을 갖는 또 다른 예시적인 컴퓨터 시스템의 블록도를 설명한 것이다. 상술한 것과 같이, 논리적 파티션 기능은 하나의 컴퓨터 상에서 다수의 독립적인 오퍼레이팅 시스템 이미지(O/S image)를 동시에 실행할 수 있도록 함으로써 유연성(flexibility)을 제공하는 컴퓨터 설계 특징이다.
도 3의 시스템은 하이퍼바이저(102) 뿐만 아니라 LPAR(450, 452, 454)의 어플리케이션 소프트웨어에 대한 다수의 실행 스레드(302)를 실행할 수 있는 3개의 프로세서(156) 및 3개의 오퍼레이팅 시스템(154)도 포함한다. 3개의 예의 사용은 설명을 위한 것이며, 한정을 위한 것이 아니다. 실제로, 당업자는 예시된 것과 같은 시스템이 시스템의 물리적 자원의 실제적인 양에 의해서만 제한되는 임의의 수의 LPAR, 오퍼레이팅 시스템, 프로세서 및 스레드를 동작시킬 수 있다는 것에 대하여 인식할 것이다. 스레드(302)는 가상 어드레스 공간에 조직된 가상 메모리 어드레스 상에서 동작한다. 프로세서(156)는 실제 어드레스 공간에 조직된 물리적 메모 리를 억세스한다.
각 오퍼레이팅 시스템 이미지(154)는 실제 어드레싱 모드에서 억세스될 수 있는 메모리의 범위를 필요로 한다. 이 모드에서는, 가상 어드레스 변환이 수행되지 않으며, 어드레스는 어드레스 0에서 시작한다. 오퍼레이팅 시스템은 기동(startup) 커널 모드(kernel mode), 고정된 커널 구조 및 인터럽트 벡터를 위한 이 어드레스 범위를 대표적으로 사용한다. 다수의 파티션은 물리적 어드레스 0에서 동일한 메모리 범위를 공유하도록 허용될 수 없으므로, 각 LPAR은 그 자신의 실제 모드 어드레싱 범위를 가져야 한다.
하이퍼바이저는 각 LPAR에 유일한(unique) 실제 모드 어드레스 오프세트(offset) 및 범위 값을 할당하고, 그 다음으로, 파티션 내의 각 프로세서의 레지스터에 이들 오프세트 및 범위 값을 설정한다. 이들 값은 그 파티션에 독점적으로 할당된 물리적 메모리 어드레스 범위로 맵핑된다. 파티션 프로그램이 실제 어드레싱 모드에서 명령 및 데이터를 억세스하면, 하드웨어는 물리적 메모리를 억세스하기 전에 실제 모드 오프세트 값을 각 어드레스에 자동으로 추가한다. 이와 같은 방식으로, 어드레스가 또 다른 어드레스 범위로 투명하게 방향을 바꾸더라도, 각 논리적 파티션 프로그래밍 모델은 물리적 어드레스 0을 억세스하게 될 것으로 생각된다. 하드웨어 로직은 파티션에서 실행되는 오퍼레이팅 시스템 코드에 의해 이들 레지스터의 수정을 방지한다. 할당된 범위 외부의 실제 어드레스를 억세스하기 위한 임의의 시도는 어드레싱 예외 인터럽트(addressing exception interrupt)가 될 것이며, 이 인터럽트는 파티션의 오퍼레이팅 시스템 예외 처리기(exception handler) 에 의해 처리된다.
오퍼레이팅 시스템은 또 다른 형식의 어드레싱, 즉, 가상 어드레싱을 사용하여 시스템에 설치된 물리적 메모리의 양을 초과하는 유효 어드레스 공간을 사용자 어플리케이션 스레드에 부여한다. 오퍼레이팅 시스템은 사용된 프로그램 및 데이터를 메모리로부터 디스크 외부로 부정기적으로 페이징(paging)하고 요구에 따라 이것들을 다시 물리적 메모리를 불러옴으로써 가상 어드레싱을 행한다.
어플리케이션이 가상 어드레싱 모드에서 명령 및 데이터를 억세스할 때, 이 어플리케이션은 그 어드레스가 페이지 변환 테이블(416)을 이용하는 가상 메모리 관리에 의해 변환되고 있음을 인식하지 못한다. 이들 테이블(이 명세서에서는 전반적으로 "페이지 테이블(page table)"이라 함)은 시스템 메모리에 상주하며, 각 파티션은 자신을 대신하여 하이퍼바이저에 의해 관리되는 그 자신의 독점적인 페이지 테이블을 가진다. 프로세서는 (하이퍼바이저에 대한 호출을 통해) 이들 테이블을 사용하여 프로그램의 가상 어드레스(424)를, 그 페이지가 물리적 메모리에 맵핑되어 있는 물리적 어드레스(422)로 투명하게 변환한다. 스레드가 메모리의 페이지를 억세스할 때, 페이지 프레임이 물리적 메모리로부터 디스크 상으로 옮겨졌으면, 오퍼레이팅 시스템은 페이지 오류를 수신한다.
비-LPAR(non-LPAR) 동작에서는, 오퍼레이팅 시스템은 테이블을 억세스하기 위한 실제 모드 어드레싱을 이용하여, 페이지 테이블 엔트리(entry)를 직접 생성 및 유지한다. 논리적 파티션 동작에서는, 페이지 변환 테이블이 하이퍼바이저에 대해서만 억세스 가능한 예비의 물리적 메모리 영역에 위치한다. 바꾸어 말하면, 파 티션의 페이지 테이블은 파티션의 실제 모드 어드레스 범위의 외부에 위치되어 있다. 프로세서에 그 페이지 테이블의 물리적 어드레스를 제공하는 레지스터는 하이퍼바이저에 의해서만 수정될 수 있다.
가상 어드레스는 가상 페이지 번호(424)와 가상 페이지 내의 오프세트의 조합으로서 구현된다. 실제 어드레스는 실제 메모리의 페이지를 식별하는 페이지 프레임 번호(422)와, 그 페이지 내의 오프세트의 조합으로 구현된다. 가상 어드레스에 대한 오프세트는 가상 어드레스가 맵핑되는 실제 어드레스에 대한 오프세트이기도 하다. 페이지 테이블은 가상 어드레스를 실제 어드레스로 맵핑하지만, 오프세트가 동일하므로, 페이지 테이블은 가상 페이지 번호와 대응하는 페이지 프레임 번호에 의해서만 맵핑한다. 오프세트는 페이지 테이블에 포함되지 않는다.
오퍼레이팅 시스템(154)이 페이지 변환 맵핑을 필요로 할 때, 프로세서(156) 상의 하이퍼바이저(102)에 대한 호출을 실행하여, 하이퍼바이저에 실행을 전달한다. 하이퍼바이저는 파티션을 대신하여 페이지 테이블 엔트리를 생성하고, 그것을 페이지 테이블에 기억한다. 스레드도 하이퍼바이저 호출을 행하여 기존의 페이지 테이블 엔트리를 수정 또는 삭제할 수 있다. 페이지 테이블 엔트리는 개략적인(granular) 세그먼트의 형태로 각 LMB에 할당되어 있는 논리적 메모리 블록 또는 "LMB"로 불리는 특정한 물리적 메모리 영역에만 맵핑한다. 이들 LMB는 LPAR의 가상 페이지 어드레스 공간을 뒷받침하는 물리적 메모리를 제공한다. 그러므로, LPAR의 메모리는 물리적 메모리의 어딘가로부터 임의의 순서로 할당될 수도 있는 LMB로 대체로 구성된다.
I/O 하드웨어는 직접 메모리 억세스(DMA) 동작을 이용하여 I/O 슬롯(407)의 I/O 어댑터와 시스템 메모리의 페이지 프레임(406) 사이에서 데이터를 이동시킨다. DMA 동작은 페이지 테이블과 유사한 어드레스 재배치 메커니즘(mechanism)을 이용한다. I/O 하드웨어는 I/O 슬롯의 I/O 장치에 의해 발생된 어드레스(425)를 물리적 메모리 어드레스로 변환한다. I/O 하드웨어는 물리적 메모리에 기억된 변환 제어 엔트리(TCE : translation control entry) 테이블로도 종종 불리는 DMA 맵(650)에 의해 이 변환을 행한다. 페이지 테이블에서와 같이, DMA 맵은 파티션에 의해 억세스 불가능하고 하이퍼바이저에 의해서만 억세스 가능한 시스템 메모리의 물리적 어드레스 영역에 상주한다. 하이퍼바이저 서비스를 호출함으로써, 파티션 프로그램은 그 파티션에 할당된 I/O 슬롯에 대한 DMA 맵 엔트리를 생성, 수정, 또는 삭제할 수 있다. I/O 하드웨어가 I/O 어댑터 DMA 어드레스를 물리적 메모리로 변환할 때, 그 결과로 얻어지는 어드레스는 그 파티션에 할당된 물리적 메모리 공간에 속한다.
추가적인 설명으로서, 도 4는 페이지 테이블의 모든 페이지 프레임의 리스트(436)를 하이퍼바이저에 의해 생성하는 것(426)을 포함하는 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 예시적인 방법을 예시하는 순서도를 설명한 것이다. 본 발명의 실시예에 따른 메모리 관리 기능을 수행하는 것은 사용자 어플리케이션의 실행 스레드의 관점에서 과도한 메모리 오류 및 지연이 발생할 위험을 감소시키도록 상대적으로 신속하게 행해지는 것이 유리하다. 큰 데이터 구조인 페이지 테이블을 통한 스캐닝, 즉, 맵핑된 페이지의 검색은 시간이 소비되는 것이다. 실제적인 메모리 관리 동작을 행할 때, 신속하게 억세스 가능한 구조로 기억된 영향을 받는 페이지 프레임의 간결한 리스트를 갖는 것이 바람직하다. 이러한 리스트는 예를 들어, 그 리스트가 조립될 때까지 드러나지 않게 별도로 실행되는 하이퍼바이저 처리에 의해 구축될 수도 있다. 그러므로, 도 4의 방법은 하이퍼바이저가 페이지 프레임의 컨텐츠를 복사하고 새로운 페이지 프레임 번호를 기억하는 동안, 페이지 프레임을 페이지 테이블(416)에 추가하는 오퍼레이팅 시스템으로부터 하이퍼바이저로의 호출을 하이퍼바이저에 의해 감시하는 것(428)을 포함하는 것이 유리하다. 또한, 도 4의 방법은 그 페이지 테이블에 추가된 페이지 프레임을 리스트(436)에 추가하는 것(430)을 포함한다.
도 4의 방법은 LPAR(450)의 오퍼레이팅 시스템(432)에 대한 페이지 테이블(416)에서 페이지 프레임 번호(422)를 갖는 페이지 프레임의 컨텐츠를 LPAR의 하나의 LMB(402)의 페이지 프레임(406)으로부터 LMB(402) 외부의 페이지 프레임(412)로 하이퍼바이저에 의해 복사하는 것(408)을 포함한다. LMB(404)는 점선의 외곽선으로 도시되어, 영향을 받는 모든 페이지 프레임이 LMB에 조직(organize)되어 있더라도, 메모리 관리 동작의 대상인 LMB(402) 외부의 페이지 프레임(412)의 위치는 그것이 대상 LMB(402)에 존재하지 않기만 하면 상관없다는 것을 강조한다. 상술한 것과 같이, 도 4의 방법에서는, 페이지 프레임의 컨텐츠를 복사하는 것(408)이 리스트(436) 상의 페이지 프레임의 컨텐츠를 복사하는 것(434)에 의해 수행된다. 또한, 도 4의 방법은 새로운 페이지 프레임 번호를 페이지 테이블(418)에 기억하는 것(410)을 포함하고, 컨텐츠가 복사되는 각 페이지 프레임에 대해, 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 하이퍼바이저에 의해 기억하는 것을 포함한다.
이러한 메모리 관리 동작의 효과는 페이지 테이블(416, 418)에 의해 예시되어 있다. 페이지 테이블(416, 418)은 도 4의 방법에서의 메모리 관리 동작 이전(416)과 메모리 관리 동작 이후(418)에 예시된 동일한 페이지 테이블이다. 메모리 관리 동작 이전에는, 페이지 테이블은 가상 페이지 번호(346, 347 및 348)를 LMB(402)에 배치된 페이지 프레임(592, 593 및 594)에 맵핑한다. 도 4의 예에서의 메모리 관리 동작 이후에는, 페이지 테이블은 가상 페이지 번호(346, 347 및 348)를 LMB(402) 외부에 배치된 페이지 프레임(592, 593 및 594)에 맵핑한다. 페이지 프레임(592, 593 및 594)의 컨텐츠는 페이지 프레임(743, 744 및 745)으로 이동이 아니라 복사되었으므로, 페이지 프레임(592, 593 및 594)의 컨텐츠는 영향을 받지 않는다. 그러나, 이전에 맵핑된 가상 페이지는 이제 다른 페이지 프레임의 어딘가에 맵핑된다. 이것은 다른 사용을 위하여 LMB(402)의 페이지 프레임을 효과적으로 자유롭게 한다. 이 페이지 프레임은 자유로운 것으로 리스트에 올려지거나, 새로운 LPAR를 위해 큰 페이지 테이블을 설치하도록 사용되거나, 프로세서-메모리 친화도를 개선시키도록 사용되거나, 당업자가 생각할 수 있는 다른 방식으로 사용될 수도 있다.
도 4의 방법에서는, 페이지 프레임의 컨텐츠를 복사하는 것과 새로운 페이지 프레임 번호를 기억하는 것이 오퍼레이팅 시스템의 관여없이 수행된다. 오퍼레이팅 시스템이 하나의 재맵핑된 가상 페이지를 억세스함에 있어서 메모리 오류를 발견할 때에는, LMB(404)의 새로운 페이지 프레임에서의 물리적 메모리의 컨텐츠는 도 4의 방법의 메모리 관리 동작이 적용되기 전의 컨텐츠와 동일할 것이다. 도 4의 방법을 수행할 때, 하이퍼바이저는 자원의 해제(release)를 요구하는 호출을 오퍼레이팅 시스템(432)에 대해 행하지 않으며, 오퍼레이팅 시스템은 페이지 테이블 엔트리가 영향을 받았다는 것을 절대로 인식하지 못한다.
추가적인 설명으로서, 도 5는 하나 이상의 크기의 메모리 페이지가 LMB(402)의 페이지 프레임(406)에 맵핑되어 있는 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 또 다른 예시적인 방법을 예시하는 순서도를 설명한 것이다. 상술한 것과 같이, LPAR은 한 종류 이상의 오퍼레이팅 시스템을 지원할 수도 있고, 각각의 형식의 오퍼레이팅 시스템은 상이한 페이지 크기를 지원할 수도 있으며, 각 오퍼레이팅 시스템은 하나 이상의 페이지 크기를 지원할 수도 있다. 본 발명의 실시예에 따른 메모리 관리 기능을 수행하는 것은 사용자 어플리케이션의 실행 스레드의 관점에서 과도한 메모리 오류 및 지연이 발생할 위험을 감소시키도록 상대적으로 신속하게 행해지는 것이 유리하다. 작은 메모리 페이지의 컨텐츠를 복사하는 것은 큰 페이지의 컨텐츠를 복사하는 것보다 더 빠르다. 그러므로, 도 5의 방법은, 대상 오퍼레이팅 시스템이 하나 이상의 페이지 크기를 사용할 때, 작은 페이지 크기를 사용하여 메모리 복사 동작을 수행하는 방법을 제공하는 것이 유리하다.
도 5의 방법은 메모리 관리 인터럽트를 오퍼레이팅 시스템(432)으로부터 하이퍼바이저로 벡터화하는 것(502)을 포함한다. 하이퍼바이저는 프로세서 레지스터에 비트를 설정함으로써 오퍼레이팅 시스템으로부터 하이퍼바이저로 메모리 관리 인터럽트를 벡터화하여, 메모리 관리 인터럽트가 하이퍼바이저 인터럽트 벡터를 향하게 된다. 페이지 프레임 상에서 복사 동작이 진행 중일 때, 이 메커니즘은 하이퍼바이저가 하이퍼바이저 내의 프로세서를 차단하도록 한다. 인터럽트는 하이퍼바이저 레지스터 자원을 이용하여 하이퍼바이저에 제공되므로, 메모리 오류는 오퍼레이팅 시스템에 대해 투명하다.
도 5의 예에서, 작은 페이지 크기가 4 KB로 선택되면, 오퍼레이팅 시스템(432)은 2개의 페이지 크기, 즉, 4 KB 및 16 KB를 이용하여 도시된다. 이것은 16 KB의 가상 페이지, 즉 가상 메모리 페이지(346)가 4개의 4 KB 페이지 프레임, 즉 페이지 프레임(592, 593, 594 및 595)에 맵핑되어 있는 페이지 테이블(416)에 예시되어 있다. 다른 4 KB의 가상 페이지(347, 348 및 349)는 일대일로 4 KB의 페이지 프레임(596, 597 및 598)에 각각 맵핑된다. 도 5의 방법은 오퍼레이팅 시스템에 대한 메모리 관리 동작을 오퍼레이팅 시스템에 대한 페이지 테이블(416)로부터 임시의 대안적인 페이지 테이블(512)로 전환하는 것(504)을 포함하여, 페이지 테이블(416)에 존재하는 오퍼레이팅 시스템으로부터의 임의의 큰 페이지 표시를 무시하면서, 4 KB의 페이지 프레임에서의 복사 동작만을 지원한다. 도 5의 방법에서는, 페이지 프레임의 컨텐츠를 복사하는 것(408)은 LMB의 페이지 프레임에 맵핑된 페이지 중에서 최소 페이지와 동일한 크기를 갖는 세그먼트에 페이지 프레임의 컨텐츠를 복사하는 것(506)을 포함한다. 즉, 하이퍼바이저는 4 KB의 페이지 프레임마다 4 KB의 세그먼트 단위로만 복사 동작을 수행한다.
메모리 관리 인터럽트가 발생하면, 하이퍼바이저는 오퍼레이팅 시스템의 실 제 페이지 테이블을 검색하여, 파티션의 실제 페이지 테이블이 사용 중인 경우에 메모리 관리 인터럽트가 발생한 것인지를 알아본다. 만약 그렇다면, 하이퍼바이저는 OS 메모리 관리 인터럽트 벡터에 대해 제어를 행한다. 그렇지 않다면, 페이지 프레임 엔트리가 임시의 대안적인 페이지 테이블에 삽입된다(복사 동작이 진행 중이지 않을 경우).
도 5의 방법에서는, 페이지 프레임의 컨텐츠를 복사하는 것(408)은 오퍼레이팅 시스템에 대한 페이지 테이블에도 존재하는 페이지 프레임을 임시의 대안적인 페이지 테이블(512)로부터 삭제하는 것(508)을 포함한다. 또한, 도 5의 방법에서는, 페이지 프레임의 컨텐츠를 복사하는 것(408)은 이러한 삭제된 페이지 프레임의 상태 비트를 오퍼레이팅 시스템(432)에 대한 페이지 테이블(416)에 기억하는 것(510)을 포함한다. 이러한 삭제된 페이지 프레임의 상태는 참조 비트(메모리 오류일 때의 LRU 동작을 위한)와 변경 비트(페이지가 기록되어야 하고, 캐시(cache)로부터 삭제될 경우에 디스크에 다시 저장되어야 함을 나타냄)로 표시된다.
추가적인 설명으로서, 도 6은 LMB(402)의 페이지 프레임(406) 중에서 적어도 하나가 직접 메모리 억세스(DMA)에 대해 맵핑되어 있는 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 또 다른 예시적인 방법을 예시하는 순서도를 설명한 것이다. 도 6의 방법에서는, 페이지 프레임의 컨텐츠를 복사하는 것(408)은 DMA에 대해 맵핑된 페이지 프레임(423)의 컨텐츠를 복사(660)하는 동안 DMA 동작을 하이퍼바이저(도시하지 않음)에 의해 차단하는 것(658)을 포함한다.
도 6의 방법에서는, DMA 동작은 데이터 기억장치(656)를 대신하여 DMA 채널(654)을 거쳐 시스템 RAM(168) 내의 페이지 프레임을 통해 디스크 I/O를 구현하는 I/O 어댑터(도시하지 않음)를 포함하는 I/O 슬롯(407)에 의해 표현된다. 시스템 RAM 내의 페이지 프레임은 DMA 맵(650)을 통해 I/O 어드레스에 맵핑된다. 도 6의 방법에서는, 페이지 프레임의 컨텐츠를 복사하는 것(408)은 DMA-맵핑된 페이지 프레임(550)을 LMB(402) 외부의 페이지 프레임(412)에 복사하는 것(660)과, DMA에 대해 맵핑된 LMB의 각 페이지 프레임에 대한 DMA 맵 테이블(652)에, 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 기억하는 것(662)을 포함한다.
DMA 맵(650, 652)은 도 6의 방법에 따른 메모리 관리 동작의 효과를 예시한 것이다. DMA 맵은 변환 엔트리 테이블 또는 "TCE 테이블"로 종종 불리는 데이터 구조이며, 각 엔트리는 I/O 어드레스 공간의 어드레스를 시스템의 물리적 메모리의 페이지 프레임으로 맵핑한다. I/O 어드레스 공간의 어드레스는 예를 들어, I/O 어댑터 또는 PCI(Peripheral Component Interconnect) 버스 어댑터의 어드레스 공간의 어드레스일 수도 있다. 도 6에서, DMA 맵(650, 652)은 각각 도 6의 방법에 따른 메모리 관리 동작 이전(650) 및 그 이후(652)의 동일한 DMA 맵이다. 도 6의 예에서는, I/O 어드레스(425) 124는 초기에 페이지 프레임(550)에 맵핑된다. 그 페이지에 대한 DMA 동작을 차단하고, DMA 맵핑된 페이지 프레임을 복사하고, 새로운 페이지 프레임 번호를 도 6의 방법에 따른 맵에 기억한 후, DMA 맵(652)은 페이지 프레임(725)에 맵핑된 I/O 어드레스(124)를 보여준다. 이것은 다른 사용을 위하여 LMB(402)의 페이지 프레임(550)을 효과적으로 자유롭게 한다. 그 페이지 프레임은 자유로운 것으로 리스트에 올려지거나, 새로운 LPAR에 대한 큰 페이지 테이블을 설치하도록 다른 페이지 프레임 또는 다른 LMB로 사용되거나, 프로세서-메모리 친화도를 개선시키도록 사용되거나, 당업자가 생각할 수 있는 다른 방식으로 사용될 수도 있다.
페이지 테이블은 큰 데이터 구조인 것이 대표적이며, 종종 LMB보다 거의 더 크다. 시스템 관리자가 새로운 LPAR을 동적으로(부팅없이) 생성하고자 할 때, 새로운 LPAR에 대한 페이지 테이블로서 이용가능한 연속 메모리가 충분하지 않을 수도 있다. 그러므로, 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하는 것은 LMB보다 더 크고, 또한, 페이지 테이블을 포함하기에 충분히 큰 자유 연속 메모리의 세그먼트를 생성하는 것을 포함할 수도 있다.
추가적인 설명으로서, 도 7은 LPAR(450)의 오퍼레이팅 시스템(432)에 대한 페이지 테이블(416)에 존재하는 연속 LMB의 페이지 프레임의 컨텐츠를 하이퍼바이저에 의해 인접 LMB(401, 402)의 페이지 프레임(406)으로부터 연속 LMB 외부의 페이지 프레임(412)에 복사하는 것(602)을 포함하는 자유 연속 메모리의 세그먼트를 생성하는 예시적인 방법을 예시하는 순서도를 설명한 것이다. 도 7의 방법은 페이지 테이블(418)에 새로운 페이지 프레임 번호를 기억하는 것(604)을 포함하고, 컨텐츠가 복사되는 각 페이지 프레임에 대해, 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 하이퍼바이저에 의해 기억하는 것을 포함한다.
또한, 도 7의 방법은 LPAR(450)에 대한 자유 메모리의 리스트(608)에 LMB를 추가하는 것(606)을 포함한다. 도 7의 예에서는, LPAR에 대한 자유 메모리의 리스트(608)에 LMB를 추가하는 것(606)은 자유롭게 된 페이지 프레임의 페이지 프레임 번호를 자유 리스트(608)에 위치시킴으로써 수행된다. 다른 방안으로서, LMB의 제1페이지 프레임의 페이지 프레임 번호를 자유 리스트에 올려서, 전체 LMB가 자유롭다는 점을 표시할 수도 있다. 자유롭게 된 메모리를 표시하기 위한 다른 방법은 당업자에게 자명할 것이며, 이러한 모든 방법은 본 발명의 범위 내에 있다.
페이지 테이블에 공간을 만들기 위하여, 종종 둘 이상의 연속 LMB가 자유롭게 되어야 한다. 그러므로, 도 7의 방법은 소정의 요구된 세그먼트 크기(610)를 참조하여, 메모리의 자유롭게 된 세그먼트가 페이지 테이블을 기억할 정도로 충분히 큰 것인지 또는 자유 메모리에 대한 다른 요건을 충족하는 것인지에 대해 판정하는 것(609)을 포함하는 것이 유리하다. 자유롭게 된 세그먼트가 충분히 크지 않으면, 자유롭게 된 세그먼트가 충분히 클 때까지, 연속 LMB의 페이지 프레임의 컨텐츠를 연속 LMB 외부의 페이지 프레임(412)에 복사하는 단계(602), 새로운 페이지 프레임 번호를 페이지 테이블(418)에 기억하는 단계(604)와, LPAR에 대한 자유 메모리의 리스트(608)에 LMB를 추가하는 단계(606)를 반복(612)함으로써 처리를 계속한다.
억세스된 메모리의 친화도가 억세스하는 프로세서에 대해 감소함에 따라, 전체적인 시스템 성능은 떨어진다. 그러므로, 본 발명의 실시예에 따른 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하는 것은 LMB의 프로세서에 대한 친화도를 개선시키는 것을 포함하는 것이 유리할 수도 있다. 추가적인 설명으 로서, 도 8은 LMB의 프로세서에 대한 친화도를 개선시키는 예시적인 방법을 예시하는 순서도를 설명한 것이다. 도 8의 방법은 2개의 LMB(402, 403)에 대한 프로세서-메모리 친화도에 영향을 준다. LMB(402, 403)는 MCM(704)의 LMB(402) 및 MCM(705)의 LMB(403)와 같이, 서로 멀리 떨어져서 위치해 있다. 상술한 것과 같이, 각 MCM은 프로세서 및 메모리를 포함한다. 도 8의 방법은 하이퍼바이저 내에서 수행된다. 각 MCM으로부터의 프로세서 및 메모리는 하이퍼바이저에 의해 LPAR(도 8에는 도시하지 않음)의 오퍼레이팅 시스템에 할당된다.
도 8의 예에서는, 프로세서(156)가 동일한 MCM(704) 상의 LMB(402)와 밀착된 친화도를 가지며, 별도의 MCM(705) 상의 프로세서(156)에 대해 멀리 떨어져 있는 LMB(403)와는 덜 밀착된 친화도를 가진다. 도 8의 예에서와 유사하게, 프로세서(157)는 동일한 MCM(705) 상의 LMB(403)와 밀착된 친화도를 가지며, 별도의 MCM(704) 상의 프로세서(157)에 대하여 멀리 떨어져 있는 LMB(402)와는 덜 밀착된 친화도를 가진다. LMB(402)는 600-699로 번호를 붙인 페이지 프레임을 포함하고, LMB(403)는 페이지 프레임(800-899)을 포함한다. LMB에서의 페이지 프레임 할당은 설명만을 위한 것이며, 한정을 위한 것이 아니다. 독자는 실제적인 문제로서 LMB가 다수의 100개 이상의 페이지 프레임을 포함할 수도 있음을 인식할 것이다. MCM(705) 및 MCM(704)은 시스템 버스(160)를 통해 결합된 것으로 도시되어 있지만, 독자들은 이 아키텍처는 단지 친화도의 설명을 위한 것이며, 발명을 한정하기 위한 것이 아니라는 것을 인식할 것이다. 실제로, 떨어져 있는 친화도는 별도의 인쇄 회로 기판, 접속을 통해, 백플레인 또는 도터 보드를 통해, 그리고 당업자가 생각할 수 있는 다른 방식으로 구현될 수도 있다.
MCM(704, 705) 상의 2개의 파티션에 대한 페이지 테이블 엔트리는 각각 페이지 테이블(416, 418, 417 및 419)에 예시되어 있다. 페이지 테이블(416, 418)은 각각 친화도 개선 동작 이전(416) 및 그 이후(418)의 MCM(705)에 대한 페이지 테이블 엔트리를 도시한 것이다. 이와 유사하게, 페이지 테이블(417, 419)은 각각 친화도 개선 동작 이전(417) 및 그 이후(419)의 MCM(704)에 대한 페이지 테이블 엔트리를 도시한 것이다. 페이지 테이블(416)은, MCM(705) 상의 프로세서(157)에서 실행되는 스레드에 의해 사용되는 가상 페이지 번호(567, 568 및 569)가 페이지 프레임(666, 667 및 668)에 맵핑되며, 이 페이지 프레임은 MCM(704) 상의 LMB(402)에 물리적으로 위치되어 있고 프로세서(157)에 대해 멀리 떨어진 친화도를 가진다는 점을 도시한 것이다. 이와 유사하게, 페이지 테이블(417)은, MCM(704) 상의 프로세서(156)에서 실행되는 스레드에 의해 사용되는 가상 페이지 번호(444, 445 및 446)가 페이지 프레임(853, 854 및 855)에 맵핑되며, 이 페이지 프레임은 MCM(705) 상의 LMB(403)에 물리적으로 위치되어 있고 프로세서(156)에 대해 멀리 떨어진 친화도를 가진다는 점을 도시한 것이다. 예를 들어, 프로세서에서 사용되는 가상 페이지에 맵핑된 페이지 프레임이 프로세서를 갖는 동일한 MCM 상의 물리적 메모리에 위치되거나 이 메모리로 이동될 수 있다면, 전체적인 프로세서-메모리 친화도 및 메모리 관리 효율이 개선될 수 있을 것이다. 또한, LPAR은 다수의 MCM 상의 프로세서에 의해 구현될 수도 있으며, 이러한 LPAR은 예를 들어 각 MCM에 대해 하나씩 다수의 페이지 테이블을 가질 수도 있다. 본 발명의 실시예에 따라 LMB의 프로세서에 대한 친화도를 개선시키는 것은 다수의 MCM 상에 다수의 페이지 테이블 및 프로세서를 갖는 그러한 LPAR에 대해서도 유용하다.
도 8의 방법은 이 명세서에서 상술한 것과 같이 기본적으로 동작하는 프로세스인 페이지 프레임(408)의 컨텐츠를 복사하는 것을 포함한다. 그러나, 도 8의 방법에서 친화도를 개선시키기 위해서는, LMB의 페이지 프레임의 컨텐츠를 복사하는 것(408)은 LMB(402)의 페이지 프레임(406)의 컨텐츠를 LMB(402) 외부의 잠정적인 페이지 프레임(702)에 복사하는 것(802)을 포함하는 것이 유리하다. 다음으로, 도 8의 방법에서 페이지 프레임의 컨텐츠를 복사하는 것(408)은 LMB(403)의 페이지 프레임(409)의 컨텐츠를 LMB(402)의 페이지 프레임(406)에 복사하는 것(804)과, 잠정적인 페이지 프레임(702)의 컨텐츠를 LMB(705)의 페이지 프레임(409)에 복사하는 것(806)도 포함한다. 또한, 도 8의 방법은 상술한 것과 같이 일반적으로 동작하는, 새로운 페이지 프레임 번호를 기억하는 것(410)도 포함하지만, LMB(402)의 컨텐츠 및 제2LMB(403)의 컨텐츠(409) 양자에 대해 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 여기서 기억하는 것(808)을 포함한다.
페이지 테이블(418, 419)은 이러한 친화도 개선 동작의 효과를 도시한 것이다. 페이지 테이블(418)은, MCM(705) 상의 프로세서(157)에서 실행되는 스레드에 의해 사용되는 가상 페이지 번호(567, 568 및 569)가 이제 페이지 프레임(853, 854 및 855)에 맵핑되며, 이 페이지 프레임은 MCM(705) 상의 LMB(403)에 물리적으로 위치되어 있고 동일한 MCM 상의 프로세서(157)에 대해 이번에는 밀착된 친화도를 가진다는 점을 도시한 것이다. 이와 유사하게, 페이지 테이블(419)은, MCM(704) 상의 프로세서(156)에서 실행되는 스레드에 의해 사용되는 가상 페이지 번호(444, 445 및 446)가 이제 페이지 프레임(666, 667 및 668)에 맵핑되며, 이 페이지 프레임은 MCM(704) 상의 LMB(402)에 물리적으로 위치되어 있고 동일한 MCM 상의 프로세서(156)에 대해 밀착된 친화도를 가진다는 점을 도시한 것이다.
본 발명의 예시적인 실시예는 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 완전히 기능적인 컴퓨터 시스템과 관련해서 주로 설명되어 있다. 그러나, 당업계의 독자들은 본 발명이 임의의 적당한 데이터 처리 시스템에서 사용하기 위한 신호 유지 매체에 배치된 컴퓨터 프로그램 제품으로 실시될 수도 있다는 점을 인식할 것이다. 이러한 신호 유지 매체는 자기 매체, 광 매체, 또는 다른 적당한 매체를 포함하는 기계-판독가능 정보를 위한 전송 매체 또는 기록가능 매체일 수도 있다. 기록가능 매체의 예는 하드 드라이브 또는 디스켓 내의 자기 디스크, 광 드라이브를 위한 컴팩트 디스크, 자기 테이프, 및 당업자가 생각할 수 있는 그 외의 것을 포함한다. 전송 매체의 예는 음성 통신용 네트워크와, 예를 들어, 인터넷 프로토콜 및 월드 와이드 웹과 통신하는 EthernetTM 및 네트워크와 같은 디지털 데이터 통신 네트워크를 포함한다. 당업자는 적당한 프로그래밍 수단을 갖는 임의의 컴퓨터 시스템이 프로그램 제품으로 실시되는 것과 같이 발명의 방법의 단계들을 실행할 수 있을 것이라는 점을 즉시 인식할 것이다. 당업자는, 이 명세서에서 설명된 예시적인 실시예의 일부가 컴퓨터 하드웨어 상에서 설치 및 실행되는 소프트웨어를 지향하고 있지만, 그럼에도 불구하고, 펌웨어 또는 하드웨어 로서 구현되는 대안적인 실시예도 마찬가지로 본 발명의 범위 내에 있다는 점을 즉시 인식할 것이다.
발명의 범위 내에서 발명의 상술한 예시적인 실시예에 대해 다양한 수정이 행해질 수도 있다는 것은 상술한 설명으로부터 이해할 수 있을 것이다.

Claims (10)

  1. 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 방법으로서,
    논리적 파티션(LPAR : logical partition)의 오퍼레이팅 시스템에 대한 페이지 테이블에서 페이지 프레임 번호를 갖는 페이지 프레임의 컨텐츠를, 논리적 파티션의 하나의 논리적 메모리 블록(LMB : logical memory block)의 페이지 프레임으로부터, LMB 외부의 페이지 프레임으로 하이퍼바이저에 의해 복사하는 단계; 및
    컨텐츠가 복사되는 각 페이지 프레임에 대해, 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 하이퍼바이저에 의해 기억하는 단계를 포함하여, 새로운 페이지 프레임 번호를 페이지 테이블에 기억하는 단계
    를 포함하고,
    상기 페이지 프레임의 컨텐츠를 복사하는 단계와 상기 새로운 페이지 프레임을 기억하는 단계는, 오퍼레이팅 시스템의 관여없이 수행되는 것인(carried out transparently), 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 방법.
  2. 제 1 항에 있어서,
    페이지 테이블의 모든 페이지 프레임의 리스트를 하이퍼바이저에 의해 생성하는 단계;
    하이퍼바이저가 페이지 프레임의 컨텐츠를 복사하고 새로운 페이지 프레임 번호를 기억하는 동안, 페이지 테이블에 페이지 프레임을 추가하는 하이퍼바이저에 대한 오퍼레이팅 시스템으로부터의 호출을 하이퍼바이저에 의해 감시하는 단계; 및
    페이지 테이블에 추가된 페이지 프레임을 리스트에 추가하는 단계를 더 포함하고,
    상기 페이지 프레임의 컨텐츠를 복사하는 단계는 페이지 프레임의 컨텐츠를 리스트에 복사하는 단계를 더 포함하는 것인, 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 방법.
  3. 제 1 항 또는 제 2 항에 있어서, 하나 이상의 크기를 메모리 페이지가 상기 LMB의 페이지 프레임에 맵핑되고,
    오퍼레이팅 시스템으로부터 하이퍼바이저로 메모리 관리 인터럽트를 벡터화하는 단계; 및
    오퍼레이팅 시스템에 대한 메모리 관리 동작을 오퍼레이팅 시스템에 대한 페이지 테이블로부터 임시의 대안적인 페이지 테이블로 전환하는 단계를 더 포함하고,
    상기 페이지 프레임의 컨텐츠를 복사하는 단계는, LMB의 페이지 프레임에 맵핑된 페이지 중에서 최소 페이지와 동일한 크기를 갖는 세그먼트에 페이지 프레임의 컨텐츠를 복사하는 단계를 더 포함하는 것인, 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 방법.
  4. 제 3 항에 있어서, 상기 페이지 프레임의 컨텐츠를 복사하는 단계는,
    오퍼레이팅 시스템에 대한 페이지 테이블에도 존재하는 페이지 프레임을 임시의 대안적인 페이지 테이블로부터 삭제하는 단계; 및
    상기 삭제된 페이지 프레임의 상태 비트를 오퍼레이팅 시스템에 대한 페이지 테이블에 기억하는 단계를 더 포함하는 것인, 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 LMB의 페이지 프레임 중에서 적어도 하나는 직접 메모리 억세스(DMA : direct memory access)에 대해 맵핑되고,
    상기 페이지 프레임의 컨텐츠를 복사하는 단계는,
    DMA에 대해 맵핑된 페이지 프레임의 컨텐츠를 복사하는 동안, 하이퍼바이저에 의해 DMA 동작을 차단하는 단계; 및
    DMA에 대해 맵핑된 LMB의 각 페이지 프레임에 대한 DMA 맵 테이블에, 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 기억하는 단계를 더 포함하는 것인, 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    LMB보다 더 크고, 또한 페이지 테이블을 포함할 정도로 충분히 큰 자유 연속 메모리의 세그먼트를 생성하는 단계를 더 포함하는, 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 방법.
  7. 제 6 항에 있어서, 상기 자유 연속 메모리의 세그먼트를 생성하는 단계는,
    둘 이상의 연속 LMB에 대해,
    LPAR의 오퍼레이팅 시스템에 대한 페이지 테이블에 존재하는 LMB의 페이지 프레임의 컨텐츠를 LMB의 페이지 프레임으로부터 LMB 외부의 페이지 프레임으로 하이퍼바이저에 의해 복사하는 단계;
    페이지 테이블에 새로운 페이지 프레임 번호를 기억하고, 컨텐츠가 복사되는 각 페이지 프레임에 대해, 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 하이퍼바이저에 의해 기억하는 것을 포함하는 단계; 및
    자유 메모리의 리스트에 LMB를 추가하는 단계
    를 하이퍼바이저에 의해 반복적으로 수행하는 단계를 더 포함하는 것인, 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, LMB의 프로세서에 대한 친화도를 개선시키는 단계를 더 포함하고,
    상기 LMB의 페이지 프레임의 컨텐츠를 복사하는 단계는,
    LMB의 페이지 프레임의 컨텐츠를 LMB 외부의 잠정적인 페이지 프레임에 복사하는 단계;
    제2LMB의 페이지 프레임의 컨텐츠를 LMB의 페이지 프레임에 복사하는 단계; 및
    잠정적인 페이지 프레임의 컨텐츠를 제2LMB의 페이지 프레임에 복사하는 단계를 더 포함하고,
    상기 새로운 페이지 프레임 번호를 기억하는 단계는, LMB의 컨텐츠 및 제2LMB의 컨텐츠 양자에 대해 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 기억하는 단계를 더 포함하는 것인, 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 방법.
  9. 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 장치로서, 컴퓨터 프로세서와, 상기 컴퓨터 프로세서에 결합되어 동작하는 컴퓨터 메모리를 포함하는 상기 장치에 있어서, 상기 컴퓨터 메모리는,
    논리적 파티션(LPAR : logical partition)의 오퍼레이팅 시스템에 대한 페이지 테이블에서 페이지 프레임 번호를 갖는 페이지 프레임의 컨텐츠를 논리적 파티션의 하나의 논리적 메모리 블록(LMB : logical memory block)의 페이지 프레임으로부터 LMB 외부의 페이지 프레임으로 하이퍼바이저에 의해 복사할 수 있고,
    컨텐츠가 복사되는 각 페이지 프레임에 대해, 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 하이퍼바이저에 의해 기억하는 것을 포함하여, 새로운 페이지 프레임 번호를 페이지 테이블에 기억할 수 있는
    컴퓨터 프로그램 명령을 그 내부에 배치하고,
    상기 컴퓨터 프로그램 명령은 또한, 오퍼레이팅 시스템의 관여없이 페이지 프레임의 컨텐츠를 복사하고 새로운 페이지 프레임을 기억할 수 있는 것인, 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 장치.
  10. 동적 논리적 파티션 기능을 갖는 컴퓨터에서 컴퓨터 메모리를 관리하기 위한 컴퓨터 프로그램 제품으로서, 신호 유지 매체 상에 배치되는 상기 프로그램 제품에 있어서,
    논리적 파티션(LPAR : logical partition)의 오퍼레이팅 시스템에 대한 페이지 테이블에서 페이지 프레임 번호를 갖는 페이지 프레임의 컨텐츠를 논리적 파티션의 하나의 논리적 메모리 블록(LMB : logical memory block)의 페이지 프레임으로부터 LMB 외부의 페이지 프레임으로 하이퍼바이저에 의해 복사하고,
    컨텐츠가 복사되는 각 페이지 프레임에 대해, 컨텐츠가 복사될 페이지 프레임을 식별하는 새로운 페이지 프레임 번호를 하이퍼바이저에 의해 기억하는 단계를 포함하여, 새로운 페이지 프레임 번호를 페이지 테이블에 기억할 수 있는
    컴퓨터 프로그램 명령을 포함하고,
    페이지 프레임의 컨텐츠를 복사하고 새로운 페이지 프레임 번호를 기억하는 것은 오퍼레이팅 시스템의 관여없이 수행되는 것인, 컴퓨터 프로그램 제품.
KR1020077025524A 2005-05-05 2006-05-04 동적 논리적 파티션 기능을 갖는 컴퓨팅 환경에서의 컴퓨터메모리 관리 KR100992034B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/122,801 US20060253682A1 (en) 2005-05-05 2005-05-05 Managing computer memory in a computing environment with dynamic logical partitioning
US11/122,801 2005-05-05

Publications (2)

Publication Number Publication Date
KR20080007448A true KR20080007448A (ko) 2008-01-21
KR100992034B1 KR100992034B1 (ko) 2010-11-05

Family

ID=36685798

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077025524A KR100992034B1 (ko) 2005-05-05 2006-05-04 동적 논리적 파티션 기능을 갖는 컴퓨팅 환경에서의 컴퓨터메모리 관리

Country Status (7)

Country Link
US (1) US20060253682A1 (ko)
EP (1) EP1880284A2 (ko)
JP (1) JP5039029B2 (ko)
KR (1) KR100992034B1 (ko)
CN (1) CN100570563C (ko)
TW (1) TWI365385B (ko)
WO (1) WO2006117394A2 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200705180A (en) * 2005-07-29 2007-02-01 Genesys Logic Inc Adjustable flash memory management system and method
US8165177B2 (en) * 2006-12-22 2012-04-24 Lenovo (Singapore) Pte. Ltd. System and method for hybrid virtual machine monitor file system operations
US20080307190A1 (en) * 2007-06-07 2008-12-11 Richard Louis Arndt System and Method for Improved Virtual Real Memory
US20090037678A1 (en) * 2007-07-31 2009-02-05 Giles Chris M Protected portion of partition memory for computer code
US8819675B2 (en) 2007-11-28 2014-08-26 Hitachi, Ltd. Virtual machine monitor and multiprocessor system
JP5210730B2 (ja) * 2007-11-28 2013-06-12 株式会社日立製作所 仮想マシンモニタ及びマルチプロセッサシステム
US8432908B2 (en) * 2008-02-06 2013-04-30 Broadcom Corporation Efficient packet replication
US8225068B2 (en) * 2008-06-09 2012-07-17 International Business Machines Corporation Virtual real memory exportation for logical partitions
US8024546B2 (en) * 2008-10-23 2011-09-20 Microsoft Corporation Opportunistic page largification
US8201024B2 (en) * 2010-05-17 2012-06-12 Microsoft Corporation Managing memory faults
CN102314382A (zh) * 2010-07-06 2012-01-11 中兴通讯股份有限公司 一种紧急探查系统信息的方法及模块
US8589657B2 (en) 2011-01-04 2013-11-19 International Business Machines Corporation Operating system management of address-translation-related data structures and hardware lookasides
US9069598B2 (en) 2012-01-06 2015-06-30 International Business Machines Corporation Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core
US9811472B2 (en) 2012-06-14 2017-11-07 International Business Machines Corporation Radix table translation of memory
US9753860B2 (en) * 2012-06-14 2017-09-05 International Business Machines Corporation Page table entry consolidation
US9092359B2 (en) * 2012-06-14 2015-07-28 International Business Machines Corporation Identification and consolidation of page table entries
US9116750B2 (en) * 2012-08-08 2015-08-25 International Business Machines Corporation Optimizing collective communications within a parallel computer
US9058268B1 (en) 2012-09-20 2015-06-16 Matrox Graphics Inc. Apparatus, system and method for memory management
US9009421B2 (en) * 2012-11-13 2015-04-14 International Business Machines Corporation Dynamically improving memory affinity of logical partitions
US9342342B2 (en) * 2013-03-15 2016-05-17 International Business Machines Corporation Refreshing memory topology in virtual machine operating systems
GB2516087A (en) 2013-07-11 2015-01-14 Ibm Virtual Machine Backup
GB2516083A (en) * 2013-07-11 2015-01-14 Ibm Virtual Machine Backup
US9298516B2 (en) * 2013-10-01 2016-03-29 Globalfoundries Inc. Verification of dynamic logical partitioning
US9639478B2 (en) 2014-01-17 2017-05-02 International Business Machines Corporation Controlling direct memory access page mappings
KR102320044B1 (ko) 2014-10-02 2021-11-01 삼성전자주식회사 Pci 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템
TWI534619B (zh) * 2015-09-11 2016-05-21 慧榮科技股份有限公司 動態邏輯分段方法以及使用該方法的裝置
TWI777268B (zh) * 2020-10-07 2022-09-11 大陸商星宸科技股份有限公司 虛擬記憶管理方法及處理器

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60117350A (ja) * 1983-11-30 1985-06-24 Toshiba Corp メモリマッピング装置
JPS6123262A (ja) * 1984-07-11 1986-01-31 Fujitsu Ltd ドメイン動的再配置処理方式
JPS6299844A (ja) * 1985-10-28 1987-05-09 Hitachi Ltd アドレス変換装置
JP2635058B2 (ja) * 1987-11-11 1997-07-30 株式会社日立製作所 アドレス変換方式
JP2610966B2 (ja) * 1988-10-24 1997-05-14 富士通株式会社 仮想計算機制御方法
US5237668A (en) * 1989-10-20 1993-08-17 International Business Machines Corporation Process using virtual addressing in a non-privileged instruction to control the copying of a page of data in or between multiple media
JPH04348434A (ja) * 1991-05-27 1992-12-03 Hitachi Ltd 仮想計算機システム
US5675769A (en) * 1995-02-23 1997-10-07 Powerquest Corporation Method for manipulating disk partitions
US6262985B1 (en) * 1998-03-30 2001-07-17 Nortel Networks Limited Method and apparatus for full range translation of large external identifier to small internal identifier
JP2001051900A (ja) * 1999-08-17 2001-02-23 Hitachi Ltd 仮想計算機方式の情報処理装置及びプロセッサ
US7003771B1 (en) * 2000-06-08 2006-02-21 International Business Machines Corporation Logically partitioned processing system having hypervisor for creating a new translation table in response to OS request to directly access the non-assignable resource
US6629162B1 (en) * 2000-06-08 2003-09-30 International Business Machines Corporation System, method, and product in a logically partitioned system for prohibiting I/O adapters from accessing memory assigned to other partitions during DMA
US6907600B2 (en) * 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
GB0125628D0 (en) * 2001-10-25 2001-12-19 Ibm Computer system with watchpoint support
US6804729B2 (en) * 2002-09-30 2004-10-12 International Business Machines Corporation Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel
US7000051B2 (en) * 2003-03-31 2006-02-14 International Business Machines Corporation Apparatus and method for virtualizing interrupts in a logically partitioned computer system
GB2406668B (en) * 2003-10-04 2006-08-30 Symbian Ltd Memory management in a computing device
JP2005267240A (ja) * 2004-03-18 2005-09-29 Hitachi Global Storage Technologies Netherlands Bv デフラグメントを行う方法及び記憶装置
JP4186852B2 (ja) * 2004-03-19 2008-11-26 日本電気株式会社 エミュレーション方式及びプログラム
US7206915B2 (en) * 2004-06-03 2007-04-17 Emc Corp Virtual space manager for computer having a physical address extension feature
US7574537B2 (en) * 2005-02-03 2009-08-11 International Business Machines Corporation Method, apparatus, and computer program product for migrating data pages by disabling selected DMA operations in a physical I/O adapter

Also Published As

Publication number Publication date
TW200707230A (en) 2007-02-16
JP5039029B2 (ja) 2012-10-03
TWI365385B (en) 2012-06-01
US20060253682A1 (en) 2006-11-09
WO2006117394A2 (en) 2006-11-09
JP2008541214A (ja) 2008-11-20
EP1880284A2 (en) 2008-01-23
CN100570563C (zh) 2009-12-16
KR100992034B1 (ko) 2010-11-05
CN101171572A (zh) 2008-04-30
WO2006117394A3 (en) 2007-01-04

Similar Documents

Publication Publication Date Title
KR100992034B1 (ko) 동적 논리적 파티션 기능을 갖는 컴퓨팅 환경에서의 컴퓨터메모리 관리
US7971027B2 (en) Mark page-out pages as critical for cooperative memory over-commitment
CN114816664B (zh) Gpu虚拟化
JP5735070B2 (ja) パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
TWI470435B (zh) 為本地與遠端實體記憶體間之共用虛擬記憶體提供硬體支援
US6326973B1 (en) Method and system for allocating AGP/GART memory from the local AGP memory controller in a highly parallel system architecture (HPSA)
US4742450A (en) Method to share copy on write segment for mapped files
EP1805629B1 (en) System and method for virtualization of processor resources
JP5608243B2 (ja) 仮想化環境においてi/o処理を行う方法および装置
US7721023B2 (en) I/O address translation method for specifying a relaxed ordering for I/O accesses
US6877158B1 (en) Logical partitioning via hypervisor mediated address translation
US7873754B2 (en) Structure for option ROM characterization
US20070073993A1 (en) Memory allocation in a multi-node computer
WO2018176911A1 (zh) 一种虚拟磁盘文件格式转换方法和装置
US6925546B2 (en) Memory pool configuration system
JP2009032252A (ja) クラッシュダンプ用のメモリアロケーション
US9875132B2 (en) Input output memory management unit based zero copy virtual machine to virtual machine communication
US20070094419A1 (en) Method and system to allow logical partitions to access resources
US8055876B2 (en) Selectively mark free frames as unused for cooperative memory over-commitment
CN113678104A (zh) 设备内符号数据移动系统
KR100458104B1 (ko) 파티션 처리 환경을 위한 이종 클라이언트 서버 방법,시스템 및 프로그램 제품
JP2010218449A (ja) リソース割り当てシステム、及びリソース割り当て方法
JPH1063525A (ja) 情報処理装置、情報処理システム及びその制御方法
US11914512B2 (en) Writeback overhead reduction for workloads

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130926

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140926

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150925

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee