KR20040032745A - 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템 - Google Patents

멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템 Download PDF

Info

Publication number
KR20040032745A
KR20040032745A KR1020030062049A KR20030062049A KR20040032745A KR 20040032745 A KR20040032745 A KR 20040032745A KR 1020030062049 A KR1020030062049 A KR 1020030062049A KR 20030062049 A KR20030062049 A KR 20030062049A KR 20040032745 A KR20040032745 A KR 20040032745A
Authority
KR
South Korea
Prior art keywords
memory
physical
memory module
address
module
Prior art date
Application number
KR1020030062049A
Other languages
English (en)
Other versions
KR100515229B1 (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 KR20040032745A publication Critical patent/KR20040032745A/ko
Application granted granted Critical
Publication of KR100515229B1 publication Critical patent/KR100515229B1/ko

Links

Classifications

    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

프로세서는 메모리 모듈의 추가, 제거 또는 대체를 달성하기 위하여 물리적 메모리를 투명하게 재구성하는 이동 엔진 및 매핑 엔진을 포함한다. 매핑 엔진 레지스터는 재구성되고 있는 메모리 모듈의 물리적 주소를 엔진이 가상화하는 것을 가능하게 하고 소프트웨어가 아닌 하드웨어 기능을 이용하여 실시간으로 재구성하는 것을 제공하는 FROM 및 TO 실제 주소를 저장한다. 소스 및 타겟을 선택하기 위하여 FROM 및 TO 실제 주소를 사용하면, 이동 엔진은 제거되거나 재구성되는 메모리 모듈의 내용을 잔존하거나 삽입된 메모리 모듈로 복사한다. 그 후, 재구성된 메모리 모듈과 관련된 실제 주소는 복사된 내용을 수신하는 메모리 모듈에 재할당되고, 그럼으로써 운영 체제에 의하여 이용되고 있는 주소 지정 가능 실제 주소 공간으로부터 가상 물리적 주소 공간으로의 가상화된 물리적 매핑을 생성한다. 메모리 내용을 이동하는 프로세스 동안, 매핑 엔진은 재구성된 메모리 모듈과 현재 관련된 실제 주소 공간으로 주소 지정된 기록 메모리 요구 주소를 FROM 및 TO 실제 주소 공간으로 매핑한다. 인정되는 바와 같이, 물리적 메모리 변화를 달성하기 위하여 운영 체제가 물리적 메모리의 재구성을 지시하고 제어할 필요 없이 메모리 모듈이 물리적 메모리에서 삽입, 제거 또는 대체될 수 있다.

Description

멀티프로세서 시스템에서 가상화된 물리적 메모리를 관리하는 방법 및 시스템{METHOD AND SYSTEM OF MANAGING VIRTUALIZED PHYSICAL MEMORY IN A MULTI-PROCESSOR SYSTEM}
본 발명은 데이터 프로세싱(data processing)에 관한 것으로, 특히 데이터 프로세싱 시스템에서 물리적 메모리를 관리하는 것에 관한 것이다. 더 상세하게는, 본 발명은 운영 체제 제어로부터 자동으로 데이터 프로세싱 시스템에서 물리적 메모리를 관리하는 방법 및 시스템에 관한 것이다.
컴퓨터 시스템에서, 프로세서에 의하여 발생되는 메모리 주소와 시스템의 물리적 메모리의 특정 영역 사이에 일대일 대응이 있다는 것은 일반적이다. 이러한점은 운영 체제 및 애플리케이션을 시스템에 설치된 실제 물리적 메모리에 의하여 결정되는 주소 공간(address space)으로 한정한다. 또한, 다수의 현대 컴퓨터 시스템은 각각 자신의 주소 공간을 갖는 다수의 동시 작업 또는 프로세스를 실행한다. 다수의 프로세스는 임의의 주어진 시간에 자신의 주소 공간 중 단지 작은 부분만을 사용하기 때문에, 각각의 작업 및 운영 체제에 메모리 전량(full complement)을 할당하는 것은 낭비이다. 현대의 컴퓨터 시스템은 가상 메모리를 사용하여 이러한 한계점을 극복해오고 있으며, 가상 메모리는 프로그램 주소(또는 가상 주소)를 실제 메모리 주소로 매핑하는 변환 테이블(translation table)을 구현한다. 가상 메모리는 프로그램이 프로그램에 모두 할당된 크고, 연속적인 물리적 메모리처럼 보이는 것 상에서 구동될 수 있게 한다. 하지만, 실제로는, 가상 메모리 시스템에서 이용 가능한 물리적 메모리는 다수의 프로그램 또는 프로세스간에 공유된다. 프로세스에서 사용되는 가상 주소는 컴퓨터 하드웨어와 소프트웨어의 조합에 의하여 물리적 메모리의 실제 주소로 변환된다. 이 프로세스는 메모리 매핑 또는 주소 변환이라고 불린다.
가상 메모리 시스템에서, 메모리의 할당은 운영 체제 소프트웨어(OS)에 의하여 가장 흔히 수행된다. 프로그램이 현재 사용하고 있는 데이터 및 코드가 메인 메모리에 있고 변환 테이블이 가상 주소를 실제 주소로 올바르게 매핑할 수 있다고 보장하는 것은 운영 체제의 기능이다. 이는 보통의 프로그램 흐름이 에러 없이 계속되기 위하여 특권을 가진 커널 코드(privileged kernel code)가 액세스되고 있는 영역에 물리적 메모리를 할당할 수 있도록 명령어 시퀀스의 인터럽트(interrupt)를요구한다. 물리적 메모리를 할당하기 위한 이러한 인터럽트 및 커널 프로세싱은 상당한 양의 프로세싱 시간을 요구하고 CPU를 통한 명령어의 보통의 파이프라이닝(pipelining)을 엉망이 되게 한다.
컴퓨터 시스템이 동작하는 동안 물리적 메모리가 재구성되면 물리적 메모리를 관리하는 운영 체제의 부하는 증가한다. 물리적 메모리 크기가 증가 또는 감소하거나, 메모리 모듈이 시스템 동작 동안 교체되는 경우(예를 들어, 장애가 교체를 요구하는 메모리 모듈에서 발생하는 경우)에는, OS는 일시적으로, 처리되고 있는 작업에 인터럽트를 걸고, 변환 테이블의 시스템 메모리 구성 정보를 수정하며, 변환된 물리적 주소를 사용하여 불량 메모리 장치로부터 디스크로 데이터를 저장한 후, 남아있는 메모리 장치를 재구성한다. 메모리 장치가 제거되면, OS는 제거된 장치의 물리적 주소 공간을 무효로 만들고, 무효로된 주소 공간이 사용될 수 없도록 무효로된 주소 공간을 유지하여야 하며, 기본적으로 메모리 시스템의 주소 지정 가능 공간(addressable space) 내에 이용 가능하지 않은 공간의 블록을 남기게 된다. 그 후 운영 체제는 불량 메모리 위치를 갖는 페이지(page)를 피하기 위하여 논리적 주소를 물리적 주소로 매핑하여야 한다. 이러한 문제점들은 OS의 부하를 증가시키고 메모리의 제어를 복잡하게 한다. 선행 기술의 상기한 문제점을 해결하고 요구되는 바에 따라 물리적 메모리를 빠르고 효율적으로 동적 재구성할 수 있는 물리적 메모리 제어를 위한 방법 및 시스템이 필요하다.
도 1은 본 발명의 바람직한 실시예에 따라 구현된 데이터 프로세싱 시스템.
도 2는 본 발명의 바람직한 실시예에 따른, 도 1에 도시된 데이터 프로세싱 시스템의 메모리 시스템을 위한 메모리 주소 변환 프로세스의 블록도 표현.
도 3은 본 발명의 바람직한 실시예에 따른, 메모리 모듈이 물리적 메모리 시스템으로부터 제거되고 있는 경우에 대한 도 1에 도시된 데이터 프로세싱 시스템의 간략화된 도면.
도 4는 본 발명의 바람직한 실시예에 따른, 메모리 모듈이 물리적 메모리 시스템으로부터 제거되고 있는 경우에 대한 도 1에 도시된 데이터 프로세싱 시스템의 간략화된 도면.
< 도면의 주요 부분에 대한 부호 설명 >
10 : 프로세서 유닛
12 : 상호 접속부
14 : 프로세서 코어
26 : 매핑 엔진
28 : 이동 엔진
24 : 메모리 제어기
204 : 세그먼트 테이블 변환
206 : 가상 주소 공간
208 : 페이지 테이블 변환
[관련 출원]
본 출원은 출원 "Method and System of Managing Virtualized Physical Memory in a Memory Controller and Processor System"(문서 제AUS920020200US1호) 및 출원 "Method and System of Managing Virtualized Physical Memory in a Data Processing System" (문서 제AUS920020202US1)와 관련된 출원이다. 상기 출원들의 내용은 참조로서 본 명세서에 포함된다.
바람직한 실시예에 따르면, 멀티프로세서 시스템의 가상화된 물리적 메모리를 관리하는 방법 및 시스템이 제공된다. 이 멀티프로세서 시스템은 데이터를 복수의 메모리 블록으로서 저장하기 위하여 복수의 메모리 모듈을 포함하는 물리적 메모리에 연결되며, 각각의 메모리 블록은 물리적 메모리의 연속적인 바이트를 포함하고, 상기 멀티프로세서 시스템은 적어도 하나의 메모리 제어기에 더 연결되며, 상기 적어도 하나의 메모리 제어기의 각각의 메모리 제어기는 그것에 연결된 상기 복수의 메모리 모듈 중 하나 이상의 메모리 모듈을 포함하고, 상기 적어도 하나의 메모리 제어기의 각각의 메모리 제어기는 그것에 연결된 상기 메모리 모듈 중 하나 이상 내에 저장된 메모리 블록을 기록 및 판독함으로써 메모리 액세스에 응답한다. 상기 멀티프로세서 시스템은, 데이터의 판독 및 기록을 위한 상기 물리적 메모리의 메모리 위치와 관련된 실제 주소를 포함하는 메모리 액세스를 생성하는 프로세서 장치를 포함한다. 프로세서 장치 내의 레지스터는 연결된 상기 복수의 메모리 모듈 중 제1 메모리 모듈에 대응하는 FROM 실제 주소를 저장하는 제1 필드, 및 연결된 상기 복수의 메모리 모듈 중 제2 메모리 모듈에 대응하는 TO 실제 주소를 저장하는 제2 필드를 포함하는데, 상기 제1 메모리 모듈에 연결된 제1 메모리 제어기는 상기 FROM 실제 주소로 주소 지정된 메모리 요구에 응답하도록 프로그램되고, 상기 제2 메모리 모듈에 연결된 제2 메모리 제어기는 상기 TO 실제 주소에 주소 지정된 메모리 요구에 응답하도록 프로그램된다. 상기 제1 메모리 모듈 및 제2의 메모리 모듈의 구성이 수정되고 있다는 통지에 응하여, 상기 FROM 실제 주소 및 상기 TO 실제 주소에 기초하여 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하는 상기 프로세서 장치 내의 이동 엔진이 제공된다. 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 시간 구간 동안 상기 제1 필드 또는 제2 필드 중 하나에 저장된 상기 실제 주소로 주소 지정된 기록 메모리 요구를 발생시키는 상기 프로세서 장치에 응하여 상기 FROM 실제 주소 및 상기 TO 실제 주소로 주소 지정된 기록 메모리 요구를 발생시키고, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 상기 시간 구간 후에 상기 FROM 실제 주소로 주소 지정된 메모리 요구에 응답하도록 상기 제2 메모리 제어기를 재프로그램하는 상기 프로세서 장치내의 매핑 엔진이 제공된다.
다른 실시예에서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제1 메모리 모듈로 복사하고 있는 상기 시간 구간 동안 상기 FROM 실제 주소로 주소 지정된 기록 메모리 요구를 요구하는 상기 프로세서 장치에 응하여 상기 매핑 엔진이 상기 FROM 실제 주소 및 TO 실제 주소로 주소 지정된 상기 기록 메모리 요구를 발생시킨다.
또 다른 실시예에서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제1 메모리 모듈로 복사하고 있는 상기 시간 구간 후에 상기 매핑 엔진이 상기 제2 메모리 제어기가 상기 FROM 실제 주소로 주소 지정된 메모리 액세스에 응답하도록 하는 것을 가능하게 한 후에 상기 제1 메모리 모듈이 상기 물리적 메모리 시스템으로부터 제거된다.
또 다른 실시예에서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1메모리 모듈로부터 상기 제1 메모리 모듈로 복사하고 있는 상기 시간 구간 전에 상기 FROM 실제 주소는 상기 물리적 메모리 시스템의 현재의 주소 지정 가능 공간 내에 있다.
또 다른 실시예에서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하기 전에 상기 제2 메모리 모듈은 상기 물리적 메모리 시스템으로 삽입된다.
또 다른 실시예에서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제1 메모리 모듈로 복사하고 있는 상기 시간 구간 전에 상기 FROM 실제 주소는 상기 물리적 메모리 시스템 주소의 현재의 주소 지정 가능 공간 밖에 있다.
< 실시예 >
도면, 특히 도 1을 참조하면, 본 발명의 일 실시예에 따른, 가상화된 물리적 메모리의 메모리 관리를 지원하는 멀티프로세서(MP) 데이터 프로세싱 시스템의 고차원 블록도가 도시되어 있다. 도시된 바와 같이, 데이터 프로세싱 시스템(8)은 시스템 상호 접속부(interconnect)(12)에 의한 통신을 위하여 연결된 다수(예를 들어, 64)의 프로세싱 유닛(10)을 포함한다. 각각의 프로세싱 유닛(10)은 하나 이상의 프로세서 코어(core)(41)를 포함하는 집적 회로이다. 레지스터, 명령어 흐름 로직(instruction flow logic) 및 프로그램 명령어를 실행하기 위하여 이용되는 실행 유닛에 추가하여, 각각의 프로세서 코어(14)는 관련 프로세서 코어(14)에 의하여 액세스될 수 있는 명령어 및 피연산자 데이터(operand data)를 각각 임시로 버퍼링하는 관련된 레벨 1(Level One; L1) 명령어 및 데이터 캐시(16, 18)를 포함한다.
도 1에 도시된 바와 같이, 데이터 프로세싱 시스템(8)의 메모리 계층은 또한 메모리 계층에서 최하위 레벨의 휘발성 데이터 저장 장치를 형성하는 (메모리 모듈 M1, M2 및 M3로서 도시된) 하나 이상의 메모리 모듈을 포함하는 물리적 메모리(22), 및 물리적 메모리(22)로부터 프로세서 코어(14)로 명령어 및 연산자 데이터를 스테이지(stage)하기 위하여 사용되는 온-칩(on-chip) 레벨 2(level two; L2) 캐시(20)와 같은 하나 이상의 하위 레벨의 캐시 메모리를 포함한다. 당업자에게 이해되는 바와 같이, 일반적으로 메모리 계층의 각각의 연속하는 하위 레벨은 상위 레벨 보다 다량의 데이터를 저장할 수 있지만, 더 높은 액세스 지연을 갖는다. 도시된 바와 같이, 메모리 제어기(23, 34 및 44)에 의하여 상호 접속부(12)에 인터페이스된 물리적 메모리(22)는 피연산자 데이터 및 하나 이상의 운영 체제 및 하나 이상의 애플리케이션 프로그램의 일부를 저장할 수 있다. 메모리 제어기(24, 34 및 44)는 각각 대응하는 메모리 모듈 M1, M2 및 M3에 연결되고 이들을 제어한다(각각 단일 메모리 모듈에만 연결된 것으로 도시되어 있지만, 각각의 메모리 제어기는 메모리 시스템(22)의 복수의 메모리 모듈을 제어할 수 있다는 것을 유의하여야 한다). 메모리 모듈 M1, M2 및 M3의 모두 또는 일부를 포함하는 세트(set)는 기계의 운영 체제 및 애플리케이션을 위한 물리적 메모리 자원의 세트를 이룬다.
하나 이상의 버스, 스위치 패브릭(switch fabric) 또는 다른 상호 접속 아키텍처를 포함할 수 있는 시스템 상호 접속부(12)는 시스템 상호 접속부(12)에 연결된 장치(예를 들어, 프로세싱 유닛(10), 메모리 제어기(23, 34 및 44) 등) 간의 통신을 위한 관로(conduit)로서 동작한다. 시스템 상호 접속부(12)의 일반적인 트랜잭션(transaction)은 트랜잭션의 형식을 지시하는 트랜잭션 필드, 트랜잭션의 소스 및/또는 목적된 수신처를 지시하는 하나 이상의 태그, 그리고 주소 및/또는 데이터를 포함할 수 있는 요구로부터 시작된다. 바람직하게는 시스템 상호 접속부(12)에 연결된 각각의 장치는 시스템 상호 접속부(12)의 모든 트랜잭션을 스누프(snoop)하고, 적당하면 스누프 응답으로 요구에 응답한다. 이러한 동작은 시스템 상호 접속부(12) 상에서 데이터의 출처를 명시하는 단계, 요구하는 스누퍼(snooper)에 의하여 제공되는 데이터를 저장하는 단계, 캐시된 데이터를 무효화하는 단계 등을 포함할 수 있다. 또한 입출력 접속기(52)는 상호 접속부(12)에 연결되고, 상호 접속부(12)에 연결된 다른 장치와 브리지(bridge)(58)를 통하여 PCI 버스(58)에 연결된 외부 장치 간의 통신을 위한 관로를 제공한다.
데이터 프로세싱 시스템(8)은 가상 메모리 시스템을 이용하는데, 가상 메모리 시스템은 프로그램 주소( 또는 유효 주소(effective address))를 실제 메모리 주소로 매핑하는 변환 테이블을 구현한다. 가상 메모리 시스템은 이용 가능한 물리적 메모리가 다수의 프로그램 또는 프로세서간에 공유될 수 있도록 한다. 프로세싱 유닛(10)은 유효 주소(EA)를 실제 물리적 메모리의 위치를 가리키는 물리적 주소(PA)로 변환하는 주소 변환 메커니즘을 제공함으로써, 프로세싱 유닛의 주소 공간("논리적 주소 공간")이 이용 가능한 물리적 메모리(22)와 다른 크기를 가질수 있도록 한다. 또한 가상 메모리 시스템은 다수의 프로그램이 각각 물리적 기준 주소(base address)의 위치를 알 필요가 없이 시스템 메모리 내에 동시에 상주할 수 있도록 한다. 오히려, 그러한 다수의 프로그램은 단지 그들의 논리적 기준 주소만을 알 필요가 있다. 또한, 각각의 가능한 유효 주소를 위한 변환 또는 매핑을 유지하려고 시도하는 대신에, 가상 메모리 시스템은 유효한 물리적 메모리를 블록으로 분할한다. 다수의 시스템에서, 이러한 블록은 크기가 고정되고 섹션(section) 또는 페이지(page)라고 한다. 개별 페이지 내의 주소는 모두 동일한 최상위비트를 가지고 있다. 그러므로, 메모리 주소는 주소의 상위비트에 대응하는 페이지 번호 및 주소의 하위비트에 대응하는 페이지 오프셋의 연속이다.
일반적으로 데이터 구조는 유효 페이지 번호로부터 실제 페이지 번호로 변환하기 위하여 물리적 메모리에서 유지된다. 흔히 이러한 데이터 구조는, 일반적으로 세그먼트 테이블(segment table) 및 페이지 테이블이라고 하는 변환 테이블(conversion table)의 형태를 취한다. 세그먼트 테이블은 유효 페이지 주소 또는 번호에 의하여 인덱스되고, 일반적으로 유효 주소 공간의 페이지에 대응하는 다수의 엔트리(entry)를 갖는다. 각각의 엔트리는 특정 페이지 번호 또는 유효 페이지 주소를 가상 페이지 주소로 매핑하는 것이다. 페이지 테이블은 가상 페이지 주소 또는 번호에 의하여 인덱스되고, 일반적으로 가상 주소 공간의 페이지에 대응하는 다수의 엔트리를 갖는다. 각각의 엔트리는 특정 페이지 번호 또는 가상 페이지 주소를 실제 페이지 주소로 매핑하는 것이다.
유효-실제 주소 변환(effective-to-real address translation)은, 변환 전용의 주소 변환 캐시 또는 변환 색인 버퍼(translation lookaside buffer; TLB)라고 하는 전문화된 하드웨어 캐시(도시되지 않음)을 사용하여 프로세서 유닛(10)에서 수행된다. TLB는 페이지 테이블로부터 가장 흔히 참조되는 엔트리를 저장하기 위한 빠르고 소형의 정적 메모리(static memory)이다. 일반적으로 그것은 고정된 수의 엔트리를 갖는다. 메모리 요구를 처리할 때, 우선 컴퓨터는 TLB 내의 적당한 주소 변환을 찾으려고 시도한다. 그러한 주소 변환이 발견되지 않으면, 페이지 테이블은 자동으로 적당한 변환을 검색하기 위하여 액세스된다.
당업자는, 데이터 프로세싱 시스템(8)이 I/O 어댑터, 상호 접속 브리지, 비휘발성 저장 장치, 네트워크 또는 부착된 장치를 위한 포트 등과 같은 도시되지 않은 추가의 구성 요소를 포함할 수 있다는 것을 이해할 것이다. 그러한 추가 구성 요소는 본 발명을 이해하는데 필요하지 않기 때문에, 그것은 도 1에서 도시되거나 본 명세서에서 설명되지 않는다. 그러나, 본 발명에 의하여 제공되는 향상은 임의의 아키텍처의 데이터 프로세싱 시스템에 적용 가능하고 도 1에 도시된 일반화된 MP 구조에 절대로 제한되지 않는다는 것을 유의하여야 한다.
도 2를 참조하면, 본 발명의 바람직한 실시예에 따른, 데이터 프로세싱 시스템(8)의 가상 메모리 시스템을 위한 메모리 관리 시스템에 의하여 수행되는 메모리 매핑 기능이 도시되어 있다. 애플리케이션 주소 공간은 프로세서 유닛(10)에서 동작하는 복수의 프로세스가 서로 독립하여 동작하는 주소 공간을 나타낸다. 3개의 프로세스, 프로세스 1(P1), 프로세스 2(P2) 및 프로세스(P3)가 도시되어 있고, 각각은 자신의 논리 주소 공간을 가지고 있다. 각각의 프로세스에 대하여, 주소 지정 가능 공간의 페이지 또는 블록은 유효 주소에 의하여 주소 지정된다. 도 2에 도시된 바와 같이, 물리적 주소 공간에 현재 로드된 페이지의 애플리케이션 주소 공간 내의 유효 주소는 각각 3개의 실행 프로세스에 대하여 P1-EA, P2-EA 및 P3-EA로 도시되어 있다. 각각의 유효 주소는 세그먼트 테이블 변환(204)에 의하여 변환되는 64비트 주소이다. 세그먼트 테이블 변환(204)은 프로세서 코어(14) 내에서 세그먼트 색인 버퍼(segment look-aside buffer; SLB) 또는 세그먼트 색인 레지스터(segment look-aside register; SLR)에 의하여 수행된다. 애플리케이션 주소 공간 P1, P2 및 P3 내의 각각의 주소 지정 가능 공간은 SLB 또는 SLR에 의하여 가상 주소 공간(206) 내의 80비트 가상 주소로 변환된다. 그러므로, P1-EA, P2-EA 및 P3-EA는 각각 세그먼트 테이블 변환에 의하여 P2-VA, P1-VA 및 P3-VA로 변환된다. 프로세서 코어(14) 내의 변환 색인 버퍼(TLB)를 사용하여, 그 후 각각의 가상 주소 공간 P1-VA, P2-VA 및 P3-VA는, 각각의 80비트 가상 주소 P1-VA, P2-VA 및 P3-VA가 시스템 메모리 내의 실제 주소를 나타내는 그들의 64비트 실제 주소 P1-RA, P2-RA 및 P3-RA로 변환되도록, 페이지 테이블 변한(208)에 의하여 실제 주소 공간(210)으로 변환된다. 보통 실제 주소 RA는 물리적 페이지 번호를 비트, 예를 들어 상위비트의 수 "i"로 코딩하는 필드, 및 물리적 페이지의 시작으로부터의 시프트(shift)를 비트, 예를 들어 하위비트의 수 "j"로 코딩하는 필드인 두개의 필드로 이루어진다. 2의 j 제곱은 페이지의 크기를 나타내는데, 예를 들어 12에 동일한 수 j는 4킬로바이트의 페이지 크기를 나타낸다. 2의 i 제곱은 페이지의 번호에서의 물리적 메모리 크기를 지시하는데, 예를 들어 20에 동일한 수 i는 1 물리적메가페이지(megapage) 또는 4 기가바이트 물리적 메모리를 지시한다.
도 1에 도시된 바와 같이, 메모리 제어기(24, 34 및 44)는 메모리 모듈 M1, M2 및 M3의 요구된 페이지를 액세스하기 위하여 실제 주소를 물리적으로 매핑한다. 그래서, 실제 주소 공간(210)의 주소 지정된 페이지가 L1 캐시(16, 18) 및 L2 캐시(20)에서 발견되지 않으면, 메모리 액세스가 상호 접속부(12)를 통해 요구된다. 상호 접속부(12)에서 메모리 액세스 요구를 감지하면, 각각의 메모리 제어기(24, 34, 44)는 메모리 액세스에 의하여 주소 지정된 실제 주소 공간을 조사한다. 프로세서 유닛(10)으로부터의 실제 주소의 상위비트는 메모리 제어기(24, 34 및 44)에 의하여 디코딩되는데, 이는 각각의 메모리 제어기의 대응하는 메모리 모듈 M1, M2, M3의 주소 지정 가능 실제 공간을 식별한다. 각각의 메모리 제어기(24, 34 및 44)는 그것의 대응하는 메모리 모듈에 주소 지정된 메모리 액세스에 응답한다.
따라서, 도 2에 도시된 바와 같이, 물리적 매핑(212)은 메모리 제어기(24, 34 및 44)에 의하여 수행된다. 물리적 매핑(212)은 주소 페이지 P1-RA, P2-RA 및 P3-RA를 위한 실제 주소를 변환하고 그들을 대응하는 메모리 모듈 M1, M2 및 M3 내의 요구된 페이지의 물리적 주소를 나타내는 대응하는 물리적 주소 P1-PA, P2-PA 및 P3-RA로 각각 매핑한다. 물리적 주소는 주소 지정된 정보를 저장하는 메모리 모듈의 특정 메모리 위치를 지시한다. 예를 들어, P2-PA는 메모리 모듈 M2의 주소 지정된 페이지를 고유하게 식별하기 위한 특정 로우(row) 및 칼럼(column) 주소를 지정한다. 이러한 물리적 매핑 메커니즘은 운영 제체(OS)에 보이지 않는데, OS는시스템 메모리(22) 내의 특정 메모리 모듈 M1, M2, M3에 대한 물리적 메모리 자원의 소재를 연역적으로 구별하지 않고 실제 주소에 의하여 모든 물리적 메모리 자원을 감시한다.
도 1을 다시 참조하면, 매핑 엔진(36) 및 이동 엔진(move engine)은 각각의 프로세서 유닛(10)에 포함된다. 매핑 엔징(36) 및 이동 엔진(28)은, 바람직한 실시예에 따라서 물리적 메모리(22)를 효율적으로 재구성하는 것을 허용하는 물리적 메모리의 가상화 기능을 제공한다. 메모리 모듈 M1, M2 및 M3 중 하나가 시스템에서 추가, 제거 또는 대체되는 것과 같이 물리적 메모리(22)가 재구성되면, 이동 엔진(28)은 물리적 메모리(22)의 메모리 모듈간의 데이터 전송을 수행하고, 매핑 엔진(36)은 특정 메모리 모듈의 추가, 제거 또는 대체를 허용하기 위하여 메모리 모듈 M1, M2, M3 의 대상 메모리 모듈의 실제 주소 지정을 제어한다. 이러한 메모리 관리는 물리적 메모리의 재구성을 달성하기 위하여 적은 운영 체제 자원을 요구하면서, 하드웨어/펌웨어(firmware) 레벨에서 효율적으로 수행된다. 동작에 있어서, 각각의 매핑 엔진(36)은 재구성되고 있는 선택된 메모리 모듈을 위하여 실제 주소 공간(특히 상위, 실제 주소비트)의 구성 가능한 할당을 제공하는데, 이는 그 메모리 장치의 기준 주소를 효과적으로 변경한다.
도 3은 메모리 모듈이 데이터 프로세싱 시스템(8)의 간략화된 도면의 물리적 메모리로부터 제거되어 있는 실시예를 도시한다. 설명되는 바와 같이, 프로세서의 이동 엔진은 관련된 매핑 엔진과 함께 동작하여 메모리 모듈의 물리적 제거 전에 관련된 메모리 모듈을 오프-라인(off-line)으로 한다. 일반적으로, 이동 엔진은제거될 메모리 모듈의 내용을 물리적 메모리의 잔여 메모리 모듈로 복사한다. 그 후, 메모리 모듈의 실제 주소는 복사된 내용을 수신하는 메모리 모듈에 재할당된다.
이 예에서, 메모리 모듈 M2는 데이터 프로세싱 시스템(8)로부터 제거되고 있다. 제1 단계로서, 프로세서 유닛(10)은 운영 체제의 이용 가능한 물리적 메모리가 이제 하나의 메모리 모듈만큼 감소되었다는 것을 운영 체제에 알린다. 예를 들어, 각각의 메모리 모듈 M1, M2, M3이 64기가바이트(GB) 메모리 장치이면, 운영 체제의 이용 가능한 물리적 메모리는 이제 128GB라고 운영 체제에 통지된다. 따라서 운영 체제는 저장된 데이터의 양을 감소시키기 위하여 페이지를 스와핑하는 것을 즉시 시작한다. 프로세서 유닛(10)은 메모리 모듈 M2가 물리적 메모리로부터 제거되고 있다는 것을 모든 이동 엔진(28) 및 매핑 엔진(38)에게 알린다. 이동 엔진(28)은 메모리 모듈 M2에 포함된 데이터를 저장하기 위하여 사용될 잔여 모듈(들)을 즉시 선택한다.
프로세서 유닛(10) 내의 각각의 매핑 엔진(36)은 제거되고 있는 메모리 모듈을 위한 "현재의" 실제 주소 및 제거되고 있는 메모리 모듈을 위한 "새로운" 실제 주소(본 명세서에서 사용되는 바와 같이, 실제 주소는 메모리의 인덱스된 블록에 의하여 주소 지정된 데이터를 저장하는 관련된 메모리 모듈을 고유하게 식별하기 위하여 필요한 전체 실제 주소 또는 그 부분(예를 들어, 상위 비트)을 가리킨다)를 저장하는 레지스터(305)를 포함한다. 각각의 프로세싱 유닛(10)은 주어진 메모리 재구성을 수행하기 위하여 필요한 만큼 각각의 레지스터(305)를 로드한다.
도 3에 도시된 바와 같이, 매핑 엔진(36)은 메모리 모듈 M2의 FROM 실제 주소를 포함하는 필드(306), 및 제거된 모듈의 메모리 내용을 보유하는 대응 메모리 모듈, 이 경우에는 메모리 모듈 M3의 TO 실제 주소를 포함하는 필드(308)을 갖는 레지스터(305)를 포함한다. 레지스터(305)는 메모리 모듈 M2의 FROM 실제 주소를 RA2로서 도시하는 필드(306)을 포함하고, 필드(308)는 메모리 모듈 M2를 위한 TO 실제 주소, RA3를 포함한다.
도 3에서 도시된 예에서, 이동 엔진(28)은 메모리 모듈 M2에 저장된 데이터를 수신하기 위하여 메모리 모듈 M3을 선택한다. 메모리 모듈 M1은 온-라인으로 남아 있고 메모리 모듈 M2로부터 어떠한 데이터도 수신하지 않는다. 레지스터(305)를 로딩한 후에, 이동 엔진(28)은 FROM 실제 주소(RA2)에서의 메모리 주소 공간의 내용을 TO 실제 주소(RA3)에서의 메모리 주소 공간으로 복사하는 "이동 프로세스(move process)"를 시작한다. 따라서, 메모리 모듈 M2의 각각의 메모리 셀(cell)을 실제 주소 RA3에서의 메모리 주소 공간으로 복사하기 위하여 이동 엔진(28)은 상호 접속부(12) 상으로 메모리 제어기(34)에 메모리 액세스 요구를 함으로써 메모리 모듈 M2의 내용을 메모리 모듈 M3로 복사하는 것을 시작한다. 그럼으로써 이동 엔진(28)은 경로(325)에 의하여 도시된 바와 같이, 실제 주소 RA2에 의하여 주소 지정된 메모리 모듈 M2의 모든 저장 내용을 실제 주소 RA3에 의하여 주소 지정된 메모리 모듈 M3로 복사한다. 다른 실시예에서, 이동 엔진(28)은 메모리 모듈 M2의 내용의 일부분을 메모리 모듈 M3 및 메모리 시스템(22)의 다른 메모리 모듈(예를 들어, 메모리 모듈 M1)의 잔여자로 복사한다.
메모리 저장 내용을 이동하는 프로세스 동안, 메모리 제어기(24, 34 및 44)는 상호 접속부(12) 상으로의 메모리 액세스 요구에 계속하여 응답한다. 매핑 엔진(36)은, 바람직한 실시예에 따라 현재의 실제 주소 공간으로 지시된 메모리 액세스를 실행하기 위하여 메모리 모듈 M2 및/또는 M3의 물리적 주소로의 매핑을 제공함으로써, FROM 실제 주소 필드(306)에 의하여 지시된 바와 같이 현재의 실제 주소에 저장된 메모리에 주소 지정된 "판독(Read)" 및 "기록(Write)"과 같은 메모리 요구를 각각의 프로세서가 발생시키는 것을 가능하게 한다. 도 3의 예에서, 메모리 모듈 M2는 경로(327)에 의하여 도시된 바와 같이 실제 주소 RA2에 주소 지정된 판독에 계속하여 응답한다. 바람직한 실시예에 따르면, 매핑 엔진(36)은, 관련된 프로세서로부터의 현재의 실제 주소 공간으로의 기록 요구를 각각 FROM 및 TO 실제 주소 필드(306, 308)에 의하여 지시된 바와 같은 FROM 실제 주소 및 새로운 실제 주소로 매핑한다. 따라서, 도 3의 경로(329)에 의하여 도시된 바와 같이, (필드(306)에서 도시된 바와 같이) 메모리 모듈 M2의 FROM 실제 주소는 RA2이고 (필드(308)에서 도시된 바와 같이) 그것의 TO 실제 주소는 RA3이기 때문에 실제 주소 RA2로의 기록은 메모리 제어기(34 및 44)로 지시될 것이다. RA2로의 메모리 기록은 메모리 모듈 M2 및 M3에 계속하여 저장되기 때문에, 메모리 시스템은 이동 프로세스 동안 일관성을 갖는 것이 보장된다.
메모리 모듈 M2로부터 메모리 모듈 M3으로의 데이터 전송을 완료한 후에, 이동 엔진(28)은 TO 실제 주소를 FROM 실제 주소 필드(306)로 복사하거나 매핑 엔진(36)을 리셋함으로써 레지스터(305)를 갱신한다. 그 후 메모리 제어기(44)는예전에 메모리 제어기(34)에 의하여 관리되었던 실제 주소 RA2에 응답하도록 재프로그램된다. 이제 메모리 모듈 M1은 실제 주소 RA1에 의하여 주소 지정되고 메모리 모듈 M3는 이제 실제 주소 RA2에 의하여 주소 지정된다. 이제 메모리 제어기(44)는 RA2 공간의 실제 주소를 직접 메모리 모듈 M3로 물리적으로 매핑을 하고, 그럼으로써 운영 체제에 의하여 이용되고 있는 주소 지정 가능 실제 주소 공간으로부터 가상 물리적 주소 공간으로의 가상화된 물리적 매핑을 생성한다.
도 4를 참조하면, 물리적 메모리(22)에 삽입되고 있는 메모리 모듈 M2를 도시하는 데이터 프로세싱 시스템(8)의 간략화된 블록도가 도시되어 있다. 각각의 프로세서 유닛(10)은 각각의 이동 엔진(28) 및 매핑 엔진(36)에게, 메모리 모듈이 물리적 메모리(22)에 추가되고 있고 메모리 제어기(34)와 관련되고 메모리 제어기(34)에 의하여 제어되는 메모리 슬롯에 삽입될 것이라는 것을 통지한다. 이 점에서, 데이터 프로세싱 시스템(8)을 위한 현재의 실제 주소 공간은 메모리 모듈 M1 및 M3의 물리적 메모리로 이루어지고 실제 주소 공간 RA1-RA2에 의하여 주소 지정된다.
각각의 프로세서 유닛(10) 내의 각각의 레지스터(305)는 바람직한 실시예에 따라 각각의 현재 및 새로운 실제 주소로 프로그램된다. 메모리 모듈 M2에 할당된 TO 실제 주소는 물리적 메모리(22)의 현재의 실제 주소 공간 밖의 실제 주소, 이 경우에는 RA4로 프로그램된다. FROM 실제 주소는, 삽입되고 있는 메모리 모듈이 실제 주소 지정 가능 공간을 삽입 및 재프로그램한 후에 할당될 주소이다. 필드(306)는 FROM 실제 주소 RA2로 프로그램되고 필드(308)는 TO 실제 주소 RA4로프로그램된다. 삽입되고 있는 메모리 모듈과 관련된 메모리 제어기, 이 경우에는 메모리 제어기(34)는 실제 주소 RA4에 응답하도록 프로그램된다. 인정되는 바와 같이, 각각의 필드에 대하여 선택된 실제 주소는 삽입되고 있는 메모리 모듈 M2의 크기 및 존재하는 메모리 모듈 M3의 크기에 의존한다. 이 예에서, 그 크기들은 동일한 크기라고 가정된다. 그것들이 다른 크기를 가진 경우에는, 메모리 모듈 M3를 대한 실제 주소는 연속적인 실제 메모리 공간을 제공하기 위하여 메모리 모듈 M2의 메모리 경계 상에 떨어지도록 선택될 것이다.
메모리 모듈 M2가 물리적으로 물리적 메모리(22)에 삽입되고 레지스터(305)를 로딩한 후에, 이동 엔진(28)은 FROM 실제 주소(RA2)에서의 메모리 주소 공간의 내용을 TO 실제 주소(RA4)에서의 메모리 주소 공간으로 복사하는 "이동 프로세스"를 시작한다. 따라서, 이동 엔진(28)은 메모리 모듈 M3의 각각의 메모리 셀을 실제 주소 RA4의 메모리 주소 공간으로 복사하기 위하여 상호 접속부(12) 상으로 메모리 액세스 요구를 메모리 제어기(44)에 함으로써 메모리 모듈 M3의 내용을 메모리 모듈 M2로 복사하는 것을 시작한다. 메모리 제어기(44)는 메모리 모듈 M3의 각각의 메모리 셀로부터 기록을 수신하고 그것을 메모리 모듈 M2의 물리적 주소 공간으로 매핑한다. 이는 실제 주소 RA2의 메모리 셀을 실제 주소 RA4의 메모리 셀로 복사하는 것을 도시하는 경로(425)에 의하여 도 4에 도시되어 있다.
이동 프로세스 동안, 매핑 엔진(36)은 필드(306)에서의 레지스터(305)로 프로그램된 FROM 실제 주소로 주소 지정된 프로세서 유닛(10)에 의한 메모리 액세스에 응답하도록 프로그램된다. 도 4에 도시된 바와 같이, 실제 주소 RA2로 지시된프로세서 유닛(10)으로부터의 판독 메모리 액세스는 메모리 제어기(44)에 의하여 계속하여 서비스되고, 이는 실제 주소 공간 RA2에 응답하도록 프로그램된다. 실제 주소 RA2로 지시된 프로세서 유닛(10)으로부터의 기록 메모리 액세스는, 각각 레지스터(305)의 FROM 및 TO 실제 주소로의 메모리 액세스에 응답하는 메모리 제어기(이 경우에는 메모리 제어기(34 및 44))로의 기록 메모리 요구를 매핑 엔진(36)이 발생시키게 할 것이다. 이들 메모리 제어기는 대응하는 로우 및 칼럼 물리적 주소로 물리적으로 매핑함으로써 수신된 데이터를 결합된 메모리 모듈로 기록할 것이다. 도 4에 도시된 바와 같이, 프로세서 유닛(10)으로부터 실제 주소 RA2로의 기록 요구는 경로(429)에 의하여 도시되는데, 그 요구는 각각의 메모리 모듈 M2 및 M3가 기록된 데이터에 의하여 갱신되도록 하면서 메모리 제어기(34 및 44)에 의하여 수신된다. 인정되는 바와 같이, 이러한 메커니즘으로 인해 이동 프로세스 동안 메모리 일관성이 가능하다.
메모리 모듈 이동 프로세스가 완료된 후에, 이동 엔진(28)은 메모리 제어기(34)가 필드(306)의 FROM 실제 주소에서 상호 접속부(12)으로부터의 메모리 액세스에 응답하도록 지시하고, 메모리 제어기(44)가 재구성된 실제 메모리 공간 내의 또 다른 실제 주소에서 상호 접속부(12)로부터의 메모리 액세스에 응답하도록 지시한다. 이 예에서, 메모리 제어기(44)는 연속적인 실제 주소 지정 가능 메모리 RA1-RA3를 제공하기 위하여 실제 주소 RA3에 대하여 재프로그램된다. 그 후 운영 체제의 실제 주소 공간이 메모리 모듈 M2의 주소 지정 가능 공간과 동일한 양만큼 증가되었다는 것을 운영체제에게 통지된다. 그 후 운영 체제는 메모리 모듈 M1,M2, 및 M3의 실제 주소 공간 RA1-RA3상으로 메모리 페이지를 저장 및 액세스하는 것을 시작할 것이다.
인정되는 바와 같이, 삽입되고 있는 메모리 모듈이 존재하는 메모리의 메모리 경계와 일치하여 실제 주소 공간이 재구성될 필요가 없는 경우가 있다. 그러므로, 다른 실시예에서, 메모리 이동 프로세스는 수행되지 않고 매핑 엔진(36)은 삽입된 메모리 모듈과 관련된 메모리 제어기가 새롭게 추가된 실제 주소 공간과 관련된 TO 실제 주소에 응답하도록 즉시 프로그램한다. 예를 들어, 도 4에 도시된 바와 같이 메모리 모듈 M2가 물리적 메모리(22)에 추가되고 있으면, 필드(306 및 308) 각각은 실제 주소 RA3로 프로그램된다. 이러한 경우에, 메모리 모듈 M3에 저장된 데이터는 메모리 모듈 M2로 복사되지 않고 메모리 모듈 M3에 남는다. 메모리 모듈 M2가 물리적 메모리(22) 내의 메모리 슬롯에 추가된 후에, 실제 주소 공간이 메모리 모듈 M2의 메모리 저장 공간과 동일한 양만큼 증가되었고 메모리 제어기(34)가 즉시 실제 주소 RA3로의 메모리 액세스에 응답하기 시작한다는 것을 운영 체제에 통지한다.
물리적 메모리(22)의 메모리 모듈을 대체하는 경우에, 메모리 모듈은 도 3과 관련하여 설명된 프로세스에 따라서 물리적 메모리(22)로부터 제거되고, 그 후 새로운 메모리 모듈은 도 4와 관련하여 설명된 프로세스를 따라서 물리적 메모리로 다시 삽입된다. 또한, 도 1을 다시 참조하면, 입출력 접속기(input/output connector)(52) 내의 매핑 엔진(56)은 매핑 엔진(36)과 동일한 방식으로 동작한다. 입출력 접속기(52)는, 바람직한 실시예에 따라서 재구성되고 있는 메모리 모듈에직접 메모리 액세스 동작을 수행할 때 프로세서 유닛(10)으로서 유사한 방식으로 동작한다. 인정되는 바와 같이, 시스템은 상호 접속부(12)에 연결된, 입출력 접속기(52)와 동일한 추가 입출력 접속기를 가질 수 있다. 디스크 드라이브 및 비디오 모니터와 같은 다양한 입출력 장치가 PCI 버스(58)(또는 다른 유사한 부착된 버스)에 추가되고 제거되면, 매핑 엔진(56)은 그러한 입출력 장치로의 물리적 주소의 가상화를 허용하기 위하여 물리적 메모리(22)의 메모리 모듈의 제거 및 추가에 따라 상기와 같은 동일한 방식으로 이동 엔진(28)과 함께 동작할 것이다.
인정되는 바와 같이, 바람직한 실시예는 물리적 메모리 변화를 달성하기 위하여 운영 체제가 물리적 메모리의 재구성을 지시하고 재구성할 필요 없이 메모리 모듈이 물리적 메모리(22)에서 삽입, 제거 또는 대체되도록 한다. 바람직한 실시예에서, 이동 엔진(28) 및 매핑 엔진(36)은 물리적 메모리의 특정 메모리 모듈을 추가, 제거 또는 대체하는 것을 달성하기 위하여 물리적 메모리를 투명하게 재구성하기 위하여 함께 동작한다. 각각의 매핑 엔진은 이동 및 매핑 엔진이, 재구성되고 있는 메모리 모듈에 대한 물리적 주소를 가상화하는 것을 허용하고 소프트웨어가 아닌 하드웨어 기능을 사용하여 실시간으로 저장된 데이터를 재구성하고 처리하는 현재 및 새로운 실제 주소를 저장한다.
본 발명이 바람직한 실시예를 참하여 도시되고 설명되었지만, 당업자는 본 발명의 취지 및 범위를 벗어나지 않으면서 형태 및 상세한 사항에 다양한 변형이 가해질 수 있다는 것을 이해할 것이다.
본 발명에 따르면 물리적 메모리 변화를 달성하기 위하여 운영 체제가 물리적 메모리의 재구성을 지시하고 재구성할 필요 없이 메모리 모듈이 물리적 메모리에서 삽입, 제거 또는 대체될 수 있다. 또한, 이동 엔진 및 매핑 엔진은 물리적 메모리의 특정 메모리 모듈을 추가, 제거 또는 대체하는 것을 달성하기 위하여 물리적 메모리를 투명하게 재구성하기 위하여 함께 동작할 수 있다. 각각의 매핑 엔진은 이동 및 매핑 엔진이, 재구성되고 있는 메모리 모듈에 대한 물리적 주소를 가상화하는 것을 허용하고 소프트웨어가 아닌 하드웨어 기능을 사용하여 실시간으로 저장된 데이터를 재구성하고 처리하는 현재 및 새로운 실제 주소를 저장할 수 있다.

Claims (17)

  1. 데이터를 복수의 메모리 블록으로서 저장하기 위하여 복수의 메모리 모듈을 포함하는 물리적 메모리에 연결된 컴퓨팅 시스템 - 각각의 메모리 블록은 물리적 메모리의 연속적인 바이트를 포함하고, 상기 컴퓨팅 시스템은 적어도 하나의 메모리 제어기에 더 연결되며, 상기 적어도 하나의 메모리 제어기의 각각의 메모리 제어기는 그것에 연결된 상기 복수의 메모리 모듈 중 하나 이상의 메모리 모듈을 포함하고, 상기 적어도 하나의 메모리 제어기의 각각의 메모리 제어기는 그것에 연결된 상기 메모리 모듈 중 하나 이상 내에 저장된 메모리 블록을 기록 및 판독함으로써 메모리 액세스에 응답함 - 에 있어서,
    상기 물리적 메모리 시스템의 메모리 위치에 대한 데이터 판독 및 기록을 위해 상기 물리적 메모리 시스템의 메모리 위치와 관련된 실제 주소를 포함하는 메모리 액세스를 생성하는 프로세서 장치;
    연결된 상기 복수의 메모리 모듈 중 제1 메모리 모듈에 대응하는 FROM 실제 주소를 저장하는 제1 필드 및 연결된 상기 복수의 메모리 모듈 중 제2 메모리 모듈에 대응하는 TO 실제 주소를 저장하는 제2 필드를 포함하는 상기 프로세서 장치 내의 레지스터 - 상기 제1 메모리 모듈에 연결된 제1 메모리 제어기는 상기 FROM 실제 주소로 주소 지정된 메모리 요구에 응답하도록 프로그램되고, 상기 제2 메모리 모듈에 연결된 제2 메모리 제어기는 상기 TO 실제 주소로 주소 지정된 메모리 요구에 응답하도록 프로그램됨 - ;
    상기 제1 메모리 모듈 및 제2의 메모리 모듈의 구성이 수정되고 있다는 통지에 응하여, 상기 FROM 실제 주소 및 상기 TO 실제 주소에 기초하여 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하는 상기 프로세서 장치 내의 이동 엔진; 및
    상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 시간 구간 동안 상기 프로세서 장치가 상기 제1 필드 또는 제2 필드 중 하나에 저장된 상기 실제 주소로 주소 지정된 기록 메모리 요구를 발생시키는 것에 응하여 상기 FROM 실제 주소 및 상기 TO 실제 주소로 주소 지정된 기록 메모리 요구를 발생시키고, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 상기 시간 구간 후에 상기 FROM 실제 주소로 주소 지정된 메모리 요구에 응답하도록 상기 제2 메모리 제어기를 재프로그램하는 상기 프로세서 장치내의 매핑 엔진
    을 포함하는 컴퓨팅 시스템.
  2. 제1항에 있어서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제1 메모리 모듈로 복사하고 있는 상기 시간 구간 동안 상기 프로세서 장치가 상기 FROM 실제 주소로 주소 지정된 기록 메모리 요구를 요구하는 것에 응하여 상기 매핑 엔진이 상기 FROM 실제 주소 및 TO 실제 주소로 주소 지정된 상기 기록 메모리 요구를 발생시키는 컴퓨팅 시스템.
  3. 제1항에 있어서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 상기 시간 구간 후에 상기 매핑 엔진이 상기 제2 메모리 제어기가 상기 FROM 실제 주소로 주소 지정된 메모리 액세스에 응답하는 것을 가능하게 한 후에 상기 제1 메모리 모듈이 상기 물리적 메모리 시스템으로부터 제거되는 컴퓨팅 시스템.
  4. 제3항에 있어서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 상기 시간 구간 전에 상기 FROM 실제 주소가 상기 물리적 메모리 시스템의 현재의 주소 지정 가능 공간 내에 있는 컴퓨팅 시스템.
  5. 제1항에 있어서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하기 전에 상기 제2 메모리 모듈이 상기 물리적 메모리 시스템으로 삽입되는 컴퓨팅 시스템.
  6. 제5항에 있어서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 상기 시간 구간 전에 상기 FROM 실제 주소가 상기 물리적 메모리 시스템의 현재의 주소 지정 가능 공간 밖에 있는 컴퓨팅 시스템.
  7. 물리적 메모리 시스템의 메모리 위치로 데이터를 판독 및 기록하기 위하여 상기 물리적 메모리 시스템의 메모리 위치와 관련된 물리적 주소를 포함하는 메모리 액세스를 생성하는 프로세서 장치를 포함 - 상기 물리적 메모리 시스템은 복수의 메모리 제어기를 포함하며, 각각의 메모리 제어기는 그것에 연결된 하나 이상의 메모리 모듈 내에 저장된 메모리 블록을 기록 및 판독함으로써 상기 프로세서 장치에 의하여 요구된 메모리 액세스에 응답함 - 하는 데이터 프로세싱 시스템내의 데이터 프로세싱 방법에 있어서,
    각각 제1 및 제2 메모리 모듈에 대응하는 FROM 실제 주소 및 TO 실제 주소를 지시하도록 상기 프로세서 장치 내의 레지스터를 설정하는 단계 - 상기 제1 및 제2 메모리 모듈은 각각 제1 및 제2 메모리 제어기에 연결되어 있음 - ;
    상기 FROM 실제 주소 및 상기 TO 실제 주소에 기초하여 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하는 단계;
    상기 복사 단계를 완료하기 전에, 상기 프로세서 장치가 상기 제1 필드 또는 제2 필드 중 하나에 저장된 상기 실제 주소로 주소 지정된 기록 메모리 요구를 발생시키는 것에 응하여 상기 FROM 실제 주소 및 상기 TO 실제 주소로 주소 지정된 기록 메모리 요구를 발생시키는 단계; 및
    상기 복사 단계 완료 후에, 새로운 실제 주소로 주소 지정된 메모리 액세스에만 응답하도록 상기 제1 및 상기 제2 메모리 제어기를 구성하는 단계
    를 포함하는 데이터 프로세싱 방법.
  8. 제7항에 있어서, 상기 복사 단계 동안, 상기 프로세서 장치가 현재의 실제 주소로 주소 지정된 기록 메모리 요구를 발생시키는 것에 응하여 상기 FROM 실제 주소 및 상기 TO 실제 주소로 주소 지정된 기록 메모리 요구가 발생되는 데이터 프로세싱 방법.
  9. 제7항에 있어서, 상기 구성 단계에 후속하여 상기 제1 메모리 모듈을 상기 물리적 메모리 시스템으로부터 제거하는 단계를 더 포함하고, 상기 FROM 실제 주소는 상기 물리적 메모리 시스템의 현재의 주소 지정 가능 공간 내에 있는 데이터 프로세싱 방법.
  10. 제7항에 있어서, 상기 복사하는 단계 전에 상기 제1 메모리 모듈을 상기 메모리 시스템에 삽입하는 단계를 더 포함하고, 상기 TO 실제 주소는 상기 물리적 메모리 시스템의 현재의 주소 지정 가능 공간 밖에 있는 데이터 프로세싱 방법.
  11. 제7항에 있어서, 상기 프로세서에게 상기 복수의 메모리 모듈의 구성이 수정되고 있다는 것을 통지를 하는 단계를 더 포함하고, 상기 설정 단계는 상기 통지에 응하여 수행되는 데이터 프로세싱 방법.
  12. 데이터를 복수의 메모리 블록으로서 저장하는 복수의 메모리 모듈을 포함하는 물리적 메모리 시스템 - 각각의 메모리 블록은 물리적 메모리의 연속적인 바이트를 포함함 - ;
    복수의 메모리 제어기 - 상기 복수의 메모리 제어기의 각각의 메모리 제어기는 그것에 연결된 상기 복수의 메모리 모듈 중 하나 이상의 메모리 모듈을 포함하고, 상기 복수의 메모리 제어기의 각각의 메모리 제어기는 그것에 연결된 상기 하나 이상의 메모리 모듈에 저장된 메모리 블록을 기록 및 판독함으로써 메모리 액세스에 응답함 - ; 및
    상기 물리적 메모리 시스템의 메모리 위치로의 데이터를 판독 및 기록하기 위하여 상기 물리적 메모리 시스템의 메모리 위치와 관련된 실제 주소를 포함하는 메모리 액세스를 생성하는 복수의 프로세서 장치
    를 포함하고, 상기 복수의 프로세서 장치의 각각의 프로세서 장치는,
    연결된 상기 복수의 메모리 모듈 중 제1 메모리 모듈에 대응하는 FROM 실제 주소를 저장하는 제1 필드, 및 연결된 상기 복수의 메모리 모듈 중 제2 메모리 모듈에 대응하는 TO 실제 주소를 저장하는 제2 필드를 포함하는 레지스터 - 상기 제1 메모리 모듈에 연결된 제1 메모리 제어기는 상기 FROM 실제 주소로 주소 지정된 메모리 요구에 응답하도록 프로그램되고, 상기 제2 메모리 모듈에 연결된 제2 메모리 제어기는 상기 TO 주소로 주소 지정된 메모리 요구에 응답하도록 프로그램됨 - ;
    상기 제1 및 제2 메모리 모듈의 구성이 수정되고 있다는 통지에 응하여, 상기 FROM 실제 주소 및 상기 TO 실제 주소에 기초하여 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하는 이동 엔진; 및
    상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 상기 시간 구간 동안 상기 프로세서 장치가 상기 제1 필드 또는 제2 필드 중 하나에 저장된 상기 실제 주소로 주소 지정된 기록 메모리 요구를 요구하는 것에 응하여 상기 FROM 실제 주소 및 상기 TO 실제 주소로 주소 지정된 기록 메모리 요구를 발생시키고, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 상기 시간 구간 후에 상기 FROM 실제 주소로 주소 지정된 메모리 요구에 응답하도록 상기 제2 메모리 제어기를 재프로그램하는 매핑 엔진
    을 포함하는 데이터 프로세싱 시스템.
  13. 제12항에 있어서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 상기 시간 구간 동안 상기 프로세서 장치가 상기 FROM 실제 주소로 주소 지정된 기록 메모리 요구를 요구하는 것에 응하여 상기 매핑 엔진이 상기 FROM 실제 주소 및 TO 실제 주소로 주소 지정된 상기 기록 메모리 요구를 발생시키는 데이터 프로세싱 시스템.
  14. 제12항에 있어서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 상기 시간 구간 후에 상기 매핑 엔진이 상기 제2 메모리 제어기가 상기 TO 실제 주소로 주소 지정된 메모리 액세스에 응답하는 것을 가능하게 한 후에 상기 제1 메모리 모듈이 상기 물리적 메모리 시스템으로부터 제거되는 데이터 프로세싱 시스템.
  15. 제14항에 있어서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 상기 시간 구간 전에 상기 FROM 실제 주소가 상기 물리적 메모리 시스템의 현재의 주소 지정 가능 공간 내에 있는 데이터 프로세싱 시스템.
  16. 제12항에 있어서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하기 전에 상기 제2 메모리 모듈이 상기 물리적 메모리 시스템으로 삽입되는 데이터 프로세싱 시스템.
  17. 제16항에 있어서, 상기 이동 엔진이 상기 복수의 메모리 블록을 상기 제1 메모리 모듈로부터 상기 제2 메모리 모듈로 복사하고 있는 상기 시간 구간 전에 상기 FROM 실제 주소가 상기 물리적 메모리 시스템의 현재의 주소 지정 가능 공간의 밖에 있는 데이터 프로세싱 시스템.
KR10-2003-0062049A 2002-10-10 2003-09-05 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템 KR100515229B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/268,743 US6904490B2 (en) 2002-10-10 2002-10-10 Method and system of managing virtualized physical memory in a multi-processor system
US10/268,743 2002-10-10

Publications (2)

Publication Number Publication Date
KR20040032745A true KR20040032745A (ko) 2004-04-17
KR100515229B1 KR100515229B1 (ko) 2005-09-16

Family

ID=32068640

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0062049A KR100515229B1 (ko) 2002-10-10 2003-09-05 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템

Country Status (4)

Country Link
US (1) US6904490B2 (ko)
KR (1) KR100515229B1 (ko)
CN (1) CN1227594C (ko)
TW (1) TWI236592B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100773001B1 (ko) * 2004-03-31 2007-11-05 인터내셔널 비지네스 머신즈 코포레이션 홀을 갖는 시스템 메모리 어드레스의 지원을 위한 데이터처리 시스템 및 컴퓨터 프로그램 제품
KR101355105B1 (ko) * 2012-01-03 2014-01-23 서울대학교산학협력단 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치
US10019178B2 (en) 2012-12-25 2018-07-10 Huawei Technologies Co., Ltd. Method and related device for determining management mode of shared virtual memory page

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8417913B2 (en) * 2003-11-13 2013-04-09 International Business Machines Corporation Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages
US20050192229A1 (en) * 2004-02-27 2005-09-01 Perricone Nicholas V. Topical glutathione treatments
US7562179B2 (en) 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US7330942B2 (en) * 2004-07-31 2008-02-12 Hewlett-Packard Development Company, L.P. Method for efficient virtualization of physical memory in a virtual-machine monitor
US20060080514A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Managing shared memory
US7827551B2 (en) * 2005-09-21 2010-11-02 Intel Corporation Real-time threading service for partitioned multiprocessor systems
US7721023B2 (en) 2005-11-15 2010-05-18 International Business Machines Corporation I/O address translation method for specifying a relaxed ordering for I/O accesses
US20070261059A1 (en) * 2006-04-25 2007-11-08 Orth Joseph F Array-based memory abstraction
US7493468B2 (en) * 2006-06-01 2009-02-17 International Business Machines Corporation Method for broadcasting instructions/data to a plurality of processors in a multiprocessor device via aliasing
EP2313890B1 (en) * 2008-08-08 2016-05-04 Hewlett-Packard Development Company, L.P. Independently controllable and reconfigurable virtual memory devices in memory modules that are pin-compatible with standard memory modules
US10061534B2 (en) * 2011-12-01 2018-08-28 Intel Corporation Hardware based memory migration and resilvering
CN103294605A (zh) * 2012-03-01 2013-09-11 联想(北京)有限公司 管理存储装置的方法和电子设备
US9323662B2 (en) 2012-12-31 2016-04-26 SanDisk Technologies, Inc. Flash memory using virtual physical addresses
CN103152394B (zh) 2013-02-06 2016-09-28 华为技术有限公司 数据存取系统、内存共享设备及数据读取方法
EP3054384B1 (en) * 2015-02-04 2018-06-27 Huawei Technologies Co., Ltd. System and method for memory synchronization of a multi-core system
US10395722B2 (en) * 2017-09-29 2019-08-27 Intel Corporation Reading from a mode register having different read and write timing
CN107861888B (zh) * 2017-11-08 2020-03-24 郑州云海信息技术有限公司 Fpga卡用ddr的方法、系统、装置及可读存储介质
US11354247B2 (en) 2017-11-10 2022-06-07 Smart IOPS, Inc. Devices, systems, and methods for configuring a storage device with cache
US10394474B2 (en) 2017-11-10 2019-08-27 Smart IOPS, Inc. Devices, systems, and methods for reconfiguring storage devices with applications
US11907114B2 (en) 2019-08-18 2024-02-20 Smart IOPS, Inc. Devices, systems, and methods for dynamically remapping memory addresses

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04180174A (ja) * 1990-11-15 1992-06-26 Ricoh Co Ltd 電子ファイリング装置
US5615352A (en) * 1994-10-05 1997-03-25 Hewlett-Packard Company Methods for adding storage disks to a hierarchic disk array while maintaining data availability
JPH0973412A (ja) * 1995-06-30 1997-03-18 Toshiba Corp データ転送方法及びメモリ管理装置
JPH0991230A (ja) * 1995-09-26 1997-04-04 Matsushita Electric Ind Co Ltd データ転送システム
US5819310A (en) * 1996-05-24 1998-10-06 Emc Corporation Method and apparatus for reading data from mirrored logical volumes on physical disk drives
JPH10105345A (ja) * 1996-09-27 1998-04-24 Fujitsu Ltd アレイディスク装置
US5926836A (en) * 1996-12-03 1999-07-20 Emc Corporation Computer and associated method for restoring data backed up on archive media
US6073209A (en) * 1997-03-31 2000-06-06 Ark Research Corporation Data storage controller providing multiple hosts with access to multiple storage subsystems
US6223269B1 (en) * 1997-09-27 2001-04-24 Emc Corporation Stacked mapped storage system
US6442650B1 (en) * 1997-10-06 2002-08-27 Emc Corporation Maximizing sequential output in a disk array storage device
US6356991B1 (en) * 1997-12-31 2002-03-12 Unisys Corporation Programmable address translation system
JP3672159B2 (ja) * 1998-03-31 2005-07-13 ヤマハ株式会社 音源システム
US6269431B1 (en) * 1998-08-13 2001-07-31 Emc Corporation Virtual storage and block level direct access of secondary storage for recovery of backup data
US6457139B1 (en) * 1998-12-30 2002-09-24 Emc Corporation Method and apparatus for providing a host computer with information relating to the mapping of logical volumes within an intelligent storage system
US6442649B1 (en) * 1999-08-18 2002-08-27 Intel Corporation Dynamic expansion of storage device array
US6434681B1 (en) * 1999-12-02 2002-08-13 Emc Corporation Snapshot copy facility for a data storage system permitting continued host read/write access
US6341341B1 (en) * 1999-12-16 2002-01-22 Adaptec, Inc. System and method for disk control with snapshot feature including read-write snapshot half
US6665787B2 (en) * 2000-02-29 2003-12-16 International Business Machines Corporation Very high speed page operations in indirect accessed memory systems
US6662289B1 (en) * 2001-05-15 2003-12-09 Hewlett-Packard Development Company, Lp. Method and apparatus for direct conveyance of physical addresses from user level code to peripheral devices in virtual memory systems

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100773001B1 (ko) * 2004-03-31 2007-11-05 인터내셔널 비지네스 머신즈 코포레이션 홀을 갖는 시스템 메모리 어드레스의 지원을 위한 데이터처리 시스템 및 컴퓨터 프로그램 제품
KR101355105B1 (ko) * 2012-01-03 2014-01-23 서울대학교산학협력단 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치
US9208088B2 (en) 2012-01-03 2015-12-08 Seoul National University R&Db Foundation Shared virtual memory management apparatus for providing cache-coherence
US10019178B2 (en) 2012-12-25 2018-07-10 Huawei Technologies Co., Ltd. Method and related device for determining management mode of shared virtual memory page

Also Published As

Publication number Publication date
US6904490B2 (en) 2005-06-07
TW200413917A (en) 2004-08-01
US20040073743A1 (en) 2004-04-15
CN1227594C (zh) 2005-11-16
CN1489059A (zh) 2004-04-14
TWI236592B (en) 2005-07-21
KR100515229B1 (ko) 2005-09-16

Similar Documents

Publication Publication Date Title
KR100515229B1 (ko) 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템
US6920521B2 (en) Method and system of managing virtualized physical memory in a data processing system
US6907494B2 (en) Method and system of managing virtualized physical memory in a memory controller and processor system
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
US8156299B2 (en) Managing memory systems containing components with asymmetric characteristics
CA2414438C (en) System and method for semaphore and atomic operation management in a multiprocessor
US6456891B1 (en) System and method for transparent handling of extended register states
US20080235477A1 (en) Coherent data mover
JP3987577B2 (ja) システム管理モード情報を他の情報と共にキャッシュに入れる方法および装置
TWI614669B (zh) 遷移異構處理器之間不同大小的分頁
JPH11232173A (ja) ローカルメモリに組み込んでいるリモートキャッシュとcc−NUMA(キャッシュ整合型の不均一メモリアクセス)アーキテクチュアを有するデータ処理システム
JP2013254524A (ja) ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
US20130227219A1 (en) Processor, information processing apparatus, and arithmetic method
EP0497600A2 (en) Memory access method and apparatus
JP2004192615A (ja) ハードウェア管理仮想−物理アドレス変換機構
US20060123196A1 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation requests
EP0619899B1 (en) Software control of hardware interruptions
KR100373576B1 (ko) 변환 장치의 엔트리를 무효로 하는 시스템 및 방법
KR102658600B1 (ko) 디바이스를 디버깅할 때 메타데이터에 액세스하기 위한 장치 및 방법
JP3808058B2 (ja) 複数のホストが圧縮データを記憶するメモリ・セクタの集合を共用できるようにするための装置
JPH071489B2 (ja) コンピュータ装置およびコンピュータ装置においてキャッシュデータアレイ内のデータの不一致を検出して修正する方法
CN113849262A (zh) 用于无需复制而在虚拟机之间移动数据的技术
JP2008123333A5 (ko)
EP0389886A2 (en) Ring reduction logic mechanism
EP1262876B1 (en) Multiprocessing system with shared translation lookaside buffer

Legal Events

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

Payment date: 20110902

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20120824

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee