KR100541174B1 - 로컬화된 메모리 재이용을 가진 데이터 처리기 - Google Patents

로컬화된 메모리 재이용을 가진 데이터 처리기 Download PDF

Info

Publication number
KR100541174B1
KR100541174B1 KR1019997003489A KR19997003489A KR100541174B1 KR 100541174 B1 KR100541174 B1 KR 100541174B1 KR 1019997003489 A KR1019997003489 A KR 1019997003489A KR 19997003489 A KR19997003489 A KR 19997003489A KR 100541174 B1 KR100541174 B1 KR 100541174B1
Authority
KR
South Korea
Prior art keywords
data
data object
memory
pointers
thread
Prior art date
Application number
KR1019997003489A
Other languages
English (en)
Other versions
KR20000068812A (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 KR20000068812A publication Critical patent/KR20000068812A/ko
Application granted granted Critical
Publication of KR100541174B1 publication Critical patent/KR100541174B1/ko

Links

Images

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • 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/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

멀티 스레드 프로그램들을 처리하기 위한 데이터 처리 장치는 복수의 데이터 오브젝트들(DO)을 포함하는 랜덤 액세스 메모리(HM : random access-memory)와 결합된 데이터 처리기를 포함한다. 각각의 데이터 오브젝트는 각각의 스레드들과 관련된 메모리 스택들(SF)에 의해 보유되는 각각의 포인터들을 통해 액세스된다. 주기적으로, 가비지 콜렉션 절차는 식별되고 삭제되는 임의의 소스로부터 거기에 현존하는 포인터들을 갖지 않는 데이터 오브젝트들(DO)을 가진 랜덤 액세스 메모리에 적용된다. 데이터 오브젝트들의 일부에 적용되는 로킹 제한으로, 나머지는 메모리(HM) 내의 자유 공간에 콤팩트된다. 가비지 콜렉션 절차의 로컬화를 가능하게 하기 위해, 참조 스택들(RS)은, 예를 들어, 바람직하게는 퍼 스레드(per-thread) 참조 테이블(TT)을 통해, 단지 단일 프레임만으로부터 참조된 데이터 오브젝트들(DO)을 식별하기 위해 각각의 스레드 스택 프레임(SF)에 대해 제공되고, 여기서 오브젝트들은 그 프레임의 끝에서 삭제된다.
데이터 처리기, 스택, 스레드, 콤팩트, 가비지 콜렉션

Description

로컬화된 메모리 재이용을 가진 데이터 처리기{Data processor with localised memory reclamation}
본 발명은 저장된 데이터를 처리하기 위한 장치 및 방법에 관한 것이고 그러나, 그것에만 한정되지 않고, 특히, 데이터 처리 장치의 실제 또는 가상 메모리 공간에서 메모리 콤팩트화와 가비지 콜렉션(garbage collection)에 관한 것이다.
가비지 콜렉션은 프로그램에 의한 그것의 최종 사용 후, 시스템 메모리 공간의 자동 재이용(automated reclamation)이다. 가비지 콜렉션 기술들의 많은 예들은, 1996년, 알. 존스 등, 펍. 존 윌리 & 선스(R. Jones et al, pub. John Wiley & Sons), ISBN 0-471-94148-4, 페이지 1 내지 18의 "가비지 콜렉션 : 자동 동적 메모리 관리를 위한 알고리즘들(Garbage Collection : Algorithms for Automatic Dynamic Memory Management)", 및 1992년 9월, 프랑스 세인트 말로, 메모리 관리에 관한 1992년 국제 워크숍 회보(Proceedings of the 1992 International Workshop on Memory Management)의 피.알. 윌슨(P.R. Wilson), "단일프로세서 가비지 콜렉션 기술들(Uniprocessor Garbage Collection Techniques)"에 논의되어 있다. 많은 컴퓨터 프로그램들의 저장 요구들은 간단하고 예측할 수 있지만, 메모리 할당 및 재이용은 프로그래머 또는 컴파일러에 의해 처리되며, 특정 데이터 구조들의 라이프타임들(lifetimes)이 실행 시간(run-time) 이전에 더이상 결정될 수 없고 따라서 프로그램을 실행(run)할 때, 이 저장 장치의 자동 재이용이 필수가 되도록 더 복잡한 실행 패턴들을 가지는 언어들을 지향하는 경향이 있다.
상술한 윌슨 참조 문헌에서 기술된 바와 같이, 가비지 콜렉션/메모리 재이용 기술들 중 하나의 특정한 종류는 마크 스위프(mark sweep) 콜렉션이다. 많은 가비지 콜렉션 기술들에 공통적으로, 그것은 두 스테이지의 절차가 있고 그것의 이름이 시사하듯이, 그것은 먼저 데이터 오브젝트(data object)들을 링크하는 포인터들을 통해 경로 또는 경로들을 추적함으로써 여전히 도달 가능한 모든 저장된 오브젝트들을 마킹하고 그 다음, 메모리를 스위프하는 것은, 즉, 공간이 재이용될 수 있는 마킹되지 않은 오브젝트들을 결정하기 위해 메모리에 저장된 오브젝트마다 검사하는 것을 포함한다. 마크 콤팩트(mark-compact)와 복사 콜렉션(copy collection)과 같은 다른 기술들에 있어서, 저장된 데이터 오브젝트들은 "라이브(live)" 오브젝트들과 가비지의 연속하는 영역들을 형성하도록 메모리 주위로 이동되고, 가비지 영역은 오버라이트(overwriting)가 자유롭다.
많은 경우들에 있어서, 가비지 콜렉션은 단일 글로벌 히프(single global heap) 상에서, 즉, 특정한 공간이 특정한 오브젝트를 유지하기에 충분히 큰 지의 여부만이 관계되어, 데이터 구조들 또는 오브젝트들이 특정한 순서없이 저장되는 단일 메모리 영역에서 동작하는 시스템 와이드 작업(system-wide task)이다. 많은 언어들은 오브젝트들의 로컬 저장 개념을 가지고 있지 않고 그러므로 글로벌 히프는, 단명한(short-lived) 데이터 오브젝트들, 예를 들어, 단일 스레드(thread)에 로컬인 것에 대해 사용될 것이다. 동일한 가비지 콜렉션 또는 데이터 오브젝트 분류 기술들은 통상적으로 스레드들 사이에서 공유되는 긴 텀 데이터(term data)와 같은 데이터의 이러한 카테고리에 적용되므로, 총 콜렉션 시간들은 매우 길어질 수 있고 이 로컬 데이터를 처리하기 위한 부하는 시스템 와이드 가비지 콜렉션 처리로 전달된다.
멀티 스레딩(multi-threading) 환경에서, 가비지 콜렉션에 통상적으로 포함되는 처리 부하를 분배함으로써 효율이 증가될 수 있는 수단을 제공하는 것이 본 발명의 목적이다.
본 발명에 따르면, 멀티 스레드 프로그램들을 처리하는 데이터 처리 장치가 제공되며, 장치는 복수의 데이터 오브젝트들을 포함하는 랜덤 액세스 메모리와 결합된 데이터 처리기를 포함하고, 각각의 상기 데이터 오브젝트는 메모리 내의 각각의 알려진 위치에 존재하고 각각의 스레드들과 관련된 메모리 스택들에 의해 운반되는 각각의 포인터들을 통해 액세스되고, 장치는 임의의 소스로부터 거기에 현존하는 포인터들을 갖지 않는 랜덤 액세스 메모리 내의 이들 데이터 오브젝트들을 주기적으로 결정하고 데이터 오브젝트들을 삭제하도록 구성되고; 장치는 복수의 참조 버퍼들을 더 포함하고, 각각은 각각의 메모리 스택 프레임에 할당되고, 각각의 참조 버퍼는 각각의 스택 프레임에 의해 참조되는 각각의 데이터 오브젝트에 대한 포인터들을 보유하고, 장치는 각각의 스레드 메모리 스택 프레임의 끝(conclusion)에서 클리어되도록 구성되고, 관련된 참조 버퍼와 각각의 참조된 데이터 오브젝트는 임의의 다른 참조 버퍼 내에서 거기에 포인터들을 갖지 않는 것을 특징으로 한다.
각각의 스레드에 대한 참조 버퍼들을 사용함으로써, 하나의 스레드에 의해서만 참조되는 이들 데이터 오브젝트들은 관련된 스레드 메모리 스택부(스택 프레임)가 클리어되자마자 삭제될 수 있다. 이 방식으로, 이러한 단독으로 참조된 오브젝트들은 글로벌 가비지 콜렉션을 혼잡하게 하기보다는 "로컬(local)"에 기초하여 콜렉션되는 가비지일 수 있다. 이것에는 한 가지 예외가 있는데, 이것은 포인터들이 스택으로부터의 이러한 모든 것들이 클리어된 후에도, 다른 데이터 오브젝트들 내에 남아 있는 것이다. 이러한 기능을 제공하기 위해서, 각각의 저장된 데이터 오브젝트는 다른 데이터 오브젝트로부터 데이터 오브젝트에 대한 포인터의 존재에 의해 세팅된 이른바 글로벌 플래그를 포함할 수 있고, 장치는 또한 그것의 세팅된 글로벌 플래그를 가지는 임의의 데이터 오브젝트를 삭제(clearance)로부터 배제하도록 구성된다.
상술될 실시예에 있어서, 처리 테이블(handle table)을 보유하는 추가적인 데이터 저장소가 제공될 수 있고, 각각의 참조된 데이터 오브젝트는 처리 테이블 엔트리(entry)에 대한 포인터를 포함하고, 각각의 처리 테이블 엔트리는 각각의 데이터 오브젝트의 랜덤 액세스 메모리 내의 위치에 대한 포인터를 보유한다. 이러한 처리 테이블에 있어서, 장치는 참조 버퍼로부터 각각의 데이터 오브젝트에 대한 포인터들의 수를 결정하고 이러한 수를 처리 테이블 내에서 데이터 오브젝트에 대한 엔트리를 가지는 참조 카운트로서 저장하도록 동작할 수 있는 수단을 더 포함할 수 있다. 대안적으로, 참조 버퍼들로부터 각각의 데이터 오브젝트에 대한 포인터들의 수를 결정하도록 동작할 수 있는 수단이 제공될 수 있지만, 추가 데이터 저장소는 각각의 엔트리 데이터 오브젝트에 대한 참조 카운트 엔트리로서 이러한 수를 보유하고; 후자의 경우에 있어서, 데이터 오브젝트 위치에 대한 처리 테이블 포인터는 추가 데이터 저장소 참조 카운트 엔트리에 대한 포인터와 그 엔트리로부터 랜덤 액세스 메모리내의 데이터 오브젝트에 대한 다른 포인터로 구성될 수 있다.
대안적인 구성에 있어서, 저장된 데이터 오브젝트들은 비교적 간단하게, 즉, 처리 테이블 엔트리, 또는 임의의 다른 포인터들에 대한 포인터를 저장하지 않고 유지될 수 있다. 이러한 구성에 있어서, 처리 테이블 엔트리에 대한 링크는 상기 참조 버퍼 또는 각각의 참조 버퍼로부터의 다른 포인터에 의해 적합하게 제공될 수 있다.
장치는 바람직하게는 삭제되지 않은 데이터 오브젝트를 이동시킴으로써 랜덤 액세스 메모리 콘텐트들을 주기적으로 콤팩트화하기 위해, 즉, 다른 스레드들에 의해 요구될 수 있는 방해되는 오브젝트(disturbing object)들을 피하기 위해 배열되는 수단을 구비하고, 콤팩트 수단은 바람직하게는 0보다 큰 관련된 참조 카운트 값을 가지는 임의의 데이터 오브젝트를 이동시키지 않고 그대로 둔다. 이것을 콤팩터(compactor)에 나타내기 위해서, 각각의 저장된 데이터 오브젝트는, 세트될 때, 0보다 큰 참조 카운트 값을 디스플레이하는 로크 플래그(lock flag)를 적합하게 구비할 수 있다. 다른 대안적인 구성에 있어서, 로크 플래그는 각각의 데이터 오브젝트의 크기를 최소로 유지하기 위해서, 처리 테이블에 의해 대신 유지될 수 있다. 각각의 참조 버퍼가 미리 규정된 용량을 가지고 있다면, 다른 콤팩트가 제공될 수 있고, 장치는 참조 버퍼가 완전히 채워졌을 때를 검출하도록 동작할 수 있고 스레드 메모리 스택 프레임의 끝 전에 버퍼에 대한 가비지 클리어런스를 수행하도록 배열되는 수단을 더 포함한다.
기술될 다른 실시예에 있어서, 추가 데이터 저장소는 참조되는 각각의 오브젝트를 각각 마킹하는 각각의 엔트리들을 보유하는 각각의 스레드 참조 테이블을 보유하는 것이 제공될 수 있다. 이러한 스레드 참조 테이블에서, 각각의 참조 버퍼는 각각의 참조된 데이터 오브젝트에 대해, 각각의 스레드 테이블 엔트리에 대한 포인터를 적합하게 보유한다. 이러한 장치에서는, 참조 구조들의 상술된 기능성(functionality)이 스택 프레임당 참조 버퍼와 스레드당 스레드 테이블로 분리된다. 이러한 장치는 가비지 콜렉션 목적들을 위해 스택에 대한 인터페이스로 작용하며, 낮은 오버헤드(low-overhead) 참조 카운팅을 지원하고 스택의 보존 스캐닝(scanning)에 대한 필요성을 없애준다.
또한, 본 발명에 따르면, 멀티 스레드 프로그램들을 처리하는 데이터 처리 장치들에서 사용하기 위한 메모리 관리의 방법이 제공되고, 여기서 메모리는 복수의 데이터 오브젝트들을 포함하고, 각각의 상기 데이터 오브젝트는 메모리 내의 각각의 알려진 위치에 존재하고 각각의 스레드들과 관련된 메모리 스택들에 의해서 보유된 각각의 포인터들을 통해 액세스되고, 상기 방법은 임의의 소스로부터 거기에 현존하는 포인터들을 갖지 않는 랜덤 액세스 메모리 내의 이들 데이터 오브젝트들을 주기적으로 결정하고 데이터 오브젝트들을 삭제하는 단계를 포함하고; 각각의 메모리 스택에 대해서, 참조 포인터들이 각각의 스택에 의해 참조되는 각각의 데이터 오브젝트에 대해 발생되고, 각각의 스레드 메모리 스택 프레임의 처리의 끝에서, 관련된 참조 포인터들과 거기에 포인터들을 갖지 않는 각각의 참조된 데이터 아이템이 삭제되는 것을 특징으로 한다. 본 발명의 다른 특징은 첨부된 청구항들에 기술된다.
이하, 본 발명을 첨부 도면을 참조하여, 단지 예로서 설명한다.
도 1은 본 발명을 구현하기에 알맞은 데이터 처리 시스템을 도시한 블록도.
도 2 내지 도7은 도1의 블록도와 같은 시스템의 참조 스택들과 일반적인 메모리 사이의 기능적인 관계들을 개략적으로 도시한 도면.
도 1은 개인용 컴퓨터와 같은 데이터 처리 시스템을 도시하고, 데이터 처리 시스템은, 예를 들어, 가상 환경을 정의하는 데이터를 위한 브라우저(browser)와 같은 시스템을 구성할 수 있는, 다수의 소프트웨어 유틸리티들에 대한 호스트로서 작용한다. 시스템은 어드레스와 데이터 버스(12)를 통해 랜덤 액세스 메모리(RAM) 및 판독 전용 메모리들(ROM)(14,16)에 연결된 중앙처리장치(CPU : 10)를 포함한다. 이러한 메모리들은 하나 또는 몇 개의 집적 회로 장치들로 구성될 수 있고 CD-ROM과 같은 추가적인(제거 가능한) 메모리 장치들로부터 판독하게 하는 수단뿐만 아니라, 시스템 하드 디스크에 의해 보강될 수 있다. 본 발명은 CPU(10)의 제어 하에서, RAM(14)의 작업 영역에 대한 메모리 관리로 특히 구성되고, 이것에 대한 제어 프로그램은 ROM(16)내에 최초에 보유되어 있다가 전원공급시 동작 시스템에 로딩될 수 있다(load up).
또한, 버스(12)를 통해 CPU(10)에는 키보드와 마우스 및 트랙볼과 같은 커서 제어 및 선택 장치를 적합하게 포함할 수 있는 제 1 및 제 2 사용자 입력 장치들(18, 20)이 연결된다. 시스템으로부터의 오디오 출력은 하나 또는 그보다 많은 스피커들(22)을 통해 오디오 처리 스테이지(24)에 의해 구동된다. 시스템으로부터의 비디오 출력은 CPU(10)의 제어 하에서 디스플레이 구동기 스테이지(28)에 의해 구동되는 디스플레이 스크린(26) 상에 제공된다.
시스템에 대한 데이터의 다른 소스는 온라인 링크(online link)를 통해, 예를 들어, 인터넷을 통해 원격지들에 연결되고, 그 시스템은 버스(12)에 연결될 네트워크 인터페이스(30)가 제공된다. 인터페이스 구성이 시스템이 연결된 데이터 네트워크의 유형, 예를 들어, 시스템이 사적인 가정 이용자에 의해 사용되고, 데이터 링크가 로컬 서비스 제공자로의 전화 연결일 수 있는 것에 의존하는 것으로 인식될 수 있지만, 인터페이스의 정확한 구조가 본 발명의 본질적인 특징은 아니다. 이러한 경우에 있어서, 인터페이스(30)는 모뎀을 적합하게 통합할 것이다. ISDN 접속과 같은, 다른 유형들의 데이터 링크에 대해서, 인터페이스가 적합하게 구성이 될 것이다.
도 2 내지 도 7은 도 1의 시스템으로부터 다수의 이산 메모리 영역들, 여러 가지 프로그램 스레드들에 의해 사용하기 위한 많은 데이터 오브젝트들(DO)을 보유하는, 특히, 히프 메모리(HM : heap memory)를 각각 개략적으로 도시하고 있다. 다음 예들은 자바(®선 마이크로시스템즈 인크) 가상 머신의 메모리 관리 기술들을 따르고 있으며 그 용어는 적합하게 해석되어야 한다. 그러나 본 발명은 자바 컴플리언트 시스템들(Java-compliant systems), 오브젝트 지향 언어 시스템들(objects-oriented language systems), 또는 순수 가상 메모리 관리에만 제한되지는 않는 것으로 인식될 것이다.
도시된 장치에 있어서, 데이터 오브젝트들이 프로그램에 의해 단지 참조되거나 또는 마지막으로 참조된 후에 제거되도록 가비지 콜렉션이 수행되는 것은 히프 메모리(HM)이다. 각각의 동작 프로그램 스레드는 스택 프레임들(SF : stack frames)의 그 자신의 콜렉션을 가지고 있고, (이하에 설명되는 것과 같이) 가비지 콜렉션 처리를 로컬화하기 위해서, 각각의 스택 프레임에는 각각의 참조 스택(RS : reference stack)이 제공된다. 처리 테이블(HT : handle table)이 히프 내의 데이터 오브젝트 위치들을 식별하는 포인터들을 보유하기 위해 제공된다. 종래의 시스템들이 처리 테이블을 통해 라우팅될 히프 오브젝트들에 대한 모든 참조들을 제한하는 반면, 본 발명의 실시예들에 있어서, 오브젝트들은 스택 프레임들(SF)과 그들의 관련된 참조 스택(RS) 둘 다로부터의 포인터들에 의해 직접 참조되므로, 도7을 참조하여 아래에 설명될 예에서와 같이, 처리 테이블이 특정한 환경들 하에서 피해질 수 있다는 것을 유의해야 할 것이다.
두 개의 클래스 구조들(CL : class structures)이 히프의 우측에 도시되는데, 이들은 히프 내의 데이터 오브젝트들(DO : data objects)에 의해 참조될 수 있지만 그들 자신들을 데이터 오브젝트들 상에 포인터들을 위치시키지 않을 수 있다. 클래스 구조들의 특정한 형태와 기능들은 본 발명에 따르는 동작에 의미를 갖지 않고 더 설명되지 않을 것이다.
도 2와 도 3에 도시된 제 1 실시예는 다음과 같은 기능들을 도시한 여러 가지 블록들을 가진 공유된 참조 저장소(SRS : share reference store)(아래에 기술됨)를 더 포함한다. 데이터 오브젝트들(DO)은 글로벌 히프에 할당되며, 가비지 콜렉션 처리는 도달할 수 없는 데이터 오브젝트들(즉, 임의의 스택 프레임 내에 자신들에 대한 포인터들을 갖지 않는 오브젝트들 또는 다른 데이터 오브젝트들)을 식별하고 그들을 삭제하도록 시도하고, 새로운 데이터 오브젝트들을 위해 자유 공간으로 리턴한다. 각각의 데이터 오브젝트는 처리 테이블(HT) 내의 오브젝트에 대한 관련된 처리에 대해 뒤로(back) 향하는 처리 포인터(50)와, 오브젝트에 대한 클래스 구조(CL)에 대한 포인터, 및 오브젝트 내의 일련의 단어 길이 데이터 필드(word-length data field)들, 또는 어레이를 포함한다.
처리 포인터들의 사용은 적용되는 글로벌 가비지 콜렉션 방법의 형태에 의존하는데, 일부의 경우들에 있어서, 그것은 포인터들이 없게 될 데이터 오브젝트들에 대해 요구된다(이러한 장치들에서 클래스 구조들이 생략됨). 이러한 경우들에 있어서, 처리 포인터는 생략될 수 있으며, 도2의 점선 부분(150)에 의해 나타낸 바와 같이, 처리 포인터(50)는 참조 스택(RS)내의 대응하는 오브젝트 엔트리로부터 발생된다. 이 장치는 참조 스택에 할당하는데 요구되는 메모리를 증가시키지만 각각의 데이터 오브젝트에 포함될 추가 데이터의 양을 감소시키고 글로벌 가비지 처리를 위한 이용 가능한 기술들의 폭 넓은 선택을 제공한다.
처리 테이블은 데이터 오브젝트들에 대한 포인터들의 글로벌 테이블을 제공한다. 다른 히프 오브젝트들의 필드들 내의 오브젝트들에 대한 참조들은 사실상 처리 테이블 내의 인덱스들이다. 오브젝트 필드의 값은 환경에 의존하여 달라지는데, 오브젝트를 참조하는 스택들(RS)이 없다면, 이때 오브젝트는 도 2의 오브젝트(52)와 같이, 오브젝트에 대한 직접적인 참조를 포함한다. 단지 하나의 스택이 오브젝트에 액세스한다면, 이때 오브젝트 필드 포인터는 다시 도2의 오브젝트(54)와 같이, 오브젝트를 지시하게 된다. 다수의 스택들이 데이터 오브젝트를 참조하면, 이때 처리 테이블 필드는 대신 도 3에 도시된 바와 같이, 공유된 참조 구조(SRS)에 대한 포인터(56)를 포함하고, 이것은 그 오브젝트에 대해 뒤로 향하는(back) 포인터와 함께, 오브젝트에 대한 참조 스택 포인터들의 수의 카운트를 유지한다. 처리 테이블 엔트리들은 데이터 오브젝트들(DO)이 콤팩트 처리에 의해 이동되었을 때에 갱신된다.
스택 프레임(SF)은 방법 인수들(method arguments), 로컬 변수(local variable)들, 고정된 크기의 연산자 스택 및 추가 상태 정보가 특정한 시스템 응용에서 요구되는 것이면 어떤 것으로든 구성된다. 오브젝트 참조인 스택 엔트리들의 각각에 대해서, 데이터 오브젝트에 대한 엔트리는 또한 이러한 스택 프레임에 대한 참조 스택(RS)에 추가된다. 참조 스택 자신은 단일 스택 프레임과 관련된 고정된 크기의 버퍼이고 스택에 배치되어 있는 데이터 오브젝트들에 대한 포인터들로 구성된다. 스택 프레임에 의해 참조될 수 있는 데이터 오브젝트들의 최대 수는 스택 프레임의 크기와 동일하다. 그러므로, 참조 스택은 최소한 스택 프레임과 같은 크기가 되어야 하지만, 그것의 크기에 대한 상한(upper limit)은 없다. 스레드가 오브젝트에 대해 단지 액세서(accessor)라면, 그 오브젝트에 대한 하나의 참조 스택 엔트리만이 존재할 것이다. 참조 스택 내에 엔트리는 히프(HM)내의 그것의 위치에 데이터 오브젝트를 '로크(lock)'시킨다. 참조 스택으로부터의 제거는 이 스레드에 대한 오브젝트를 '언로크(unlock)'시킨다. 콤팩트 처리는 데이터 오브젝트에 대한 로크들이 없을 때에만 메모리에서 이 오브젝트가 이동하는 것이 허용될 것이다.
상술된 실시예에 있어서, 추가적인 처리가 참조-대-스택 변환들(reference-to-stack conversions)에 대해 요구되지만, 스택들 상의 모든 참조들은 직접적인 포인터들이고 따라서, 처리들을 디레퍼런싱(deferencing)하는 오버헤드(overhead)는 모든 동작 데이터에 대해 제거된다. 참조 스택들을 이용하여, 로컬 전용 데이터(local-only data)는 그 데이터가 삭제되기 전에 글로벌 마크 스위프 알고리즘(global mark-sweep algorithm)에 의해 처리될 필요가 없고 가비지의 더 빠른 턴 어라운드(turn-around)를 제공하며, 이 턴 어라운드는 좀 더 빈 메모리(free memory)를 이끌어낸다. 또한, 동작 데이터의 가비지 콜렉션의 작업은 데이터를 액세스하는 실제 스레드들과 링크되기 때문에, 글로벌 가비지 콜렉션 부하는 감소된다. 모든 참조 스택 포인터들이 제거될 때 다른 히프 오브젝트들에서 거기에 기존의 포인터들을 가지는 오브젝트들의 "우연한(accidental)" 삭제를 피하기 위해서, 글로벌 플래그가 각각의 오브젝트에 의해(또는 관련된 처리 테이블 엔트리 내에서) 보유될 수 있다. 글로벌 플래그는 다른 히프 오브젝트들에 포인터들이 존재할 때 세팅되고 로컬 가비지 삭제 동작 중 오브젝트의 삭제를 방지한다.
제 2 오브젝트 인덱스(공유된 참조 저장소(SRS)의 형태로)를 유지할 필요를 없애기 위해서, 도 4와 도 5에 도시된 바와 같이, 본 발명의 대안적인 실시예는 참조 스택들로부터 오브젝트에 대한 참조들의 수의 카운트를 포함하도록 확장되는 처리 데이터 구조(HT)를 가진다. 단일 스택으로부터만 액세스되는 오브젝트들은 처리되지 않으며 도 4의 오브젝트(40)와 같이, 스택 프레임의 끝에서 실행(running) 스레드에 의해 즉시 삭제될 수 있다. 참조번호 42에서와 같이, 참조 카운트가 제로(0)인 오브젝트들은 오브젝트에 대한 직접적인 참조들이 없다는 점에서 "동작" 상태가 아니고, 따라서 일단 데이터 오브젝트가 이동된 후에는 콤팩트기가 처리에서 오브젝트 필드를 갱신해야 하지만, 콤팩트에 의해 이동 가능하게 된다. 도 5의 참조번호 44에 있는 오브젝트들은 다수의 참조 스택들로부터 직접적인 참조들이 있다는 점에서 동작 상태가 되고(참조 카운트 = 오브젝트(44)에 대해서 2) 로크되며, 콤팩트 동안에는 이동되지 않는다.
참조 스택들(RS)이 고정된 크기이므로, 스택 프레임이 많은 수의 데이터 오브젝트들을 참조하는 극단적인 경우들에 있어서, 참조 스택은 오버플로우할 수 있다. 참조 스택이 완전히 차게(reaching) 되는 것을 검출시, 로컬화된 가비지 콜렉션 오퍼레이션이 참조 스택 콘텐트들에 대해 수행된다. 콜렉션 동작은 새로운 참조 스택의 생성으로 적합하게 시작하며, 이어서 기존의 스택 콘텐트들은 아래에서 위의 순서로 판독되고 여전히 유효한 이들 엔트리들(여전히 참조되는 오브젝트들)이 새로운 스택으로 이동된다. 새로운 스택이 형성된 후에는, 기존의 스택 내의 나머지 오브젝트들이 언로크되고, 그것이 임의의 다른 참조 스택과 공유되지 않는다면, 그들은 삭제된다. 새로운 참조 스택이 동작될 때(연속적인 스택 프레임 오브젝트들이 새로운 참조 스택으로부터 참조됨), 기존의 스택은 삭제된다. 이 절차에 대한 몇 가지 변형들이 가능하다는 것이 인식될 것인데, 예를 들어, 새로운 참조 스택 내에서 참조들을 생성할 때 그 오브젝트에 대한 처리 필드가 널(null) 값을 가지는 지의 여부가 검사될 수 있다. 그 오브젝트들에 대한 처리가 널(null) 값을 가지면, 오브젝트는 우연한 손실을 방지하기 위해서 기존의 참조 스택 내의 널 처리 필드를 가진 오브젝트들을 삭제(그리고 다른 오브젝트들을 언로킹)하기 전에, 로킹된다.
두 개의 다른 실시예들이 도 6과 도 7에 도시되어 있다. 이전의 실시예와 비교해보면 주요 차이는 상술된 참조 구조들의 기능성을 퍼 스택 프레임 참조 버퍼들(per-stack-frame-reference buffer) 또는 스택들 및 퍼 스레드 스레드 테이블들(per-thread thread tables)로 분리되는 것과 같이, 스레드에 의해 액세스될 수 있는 모든 데이터 오브젝트들을 미리 규정된 순간 동안에 보유하는 각각의 스레드에 대한 특정 테이블(이하, "스레드 테이블")을 제공하는 것이다. 가비지 콜렉션 목적들을 위해서, 스레드 테이블은 스레드에 의해 참조되는 모든 오브젝트들을 마킹하는데 사용된다. 테이블은 중복 엔트리들을 포함하지 않고, 스레드 테이블 내의 각각의 엔트리에 대해서, 오브젝트를 참조하는 그 스레드 내에는 정확하게 하나의 참조 버퍼 엔트리가 있다. 참조를 포함하고 있는 참조 버퍼(RS)는 스택 프레임이 손상되거나 또는 참조 버퍼가 오버플로우할 때 로컬 가비지 콜렉션 처리에 의해 오버라이트하는 과정이 검출될 것이지만, 가장 낮은 스택 프레임 내의 오브젝트에 대한 참조들은 오버라이트될 수 있는 것이 가능하다는 참조를 포함할 수 있는 가장 낮은 스택 프레임(SF)과 관련된다. 이전과 같이, 엔트리들은 참조들이 기능으로부터 리턴될 때, 스택 아래로 전달된다.
스택 쓰기 배리어 기능(stack write barrier function)은 참조가 스레드 테이블에 이미 존재하는 지를 검사하는 지의 여부를 검사하고, 스레드 테이블에 존재하지 않으면, 스레드 테이블과 동작 참조 버퍼 내에 모두 삽입된다. 스레드 테이블은 신속한 룩 업(look-up) 동작들을 위한 최적화에 의해서 효과적인 삽입 및 분석을 위해 구성된다.
도6과 도7의 실시예들에 있어서, 로컬과 글로벌 오브젝트들 사이의 뚜렷한 차이가 존재하지 않는다. 오브젝트는 오브젝트가 단일 스레드 참조 테이블에 의해 유일하게 참조되는 지가 로컬적으로 고려될 수 있다. 가비지 콜렉션 시스템은 스레드 테이블들과 다른 오브젝트들로부터의 참조들의 총 수가 0으로 되어 그 오브젝트를 삭제할 때를 식별하도록 참조 카운팅 방법을 사용할 수 있다. 이전의 실시예들과 같이, 이 참조 카운트는 도6의 참조번호 60에서와 같이, 글로벌 처리 테이블 내에 저장되거나 또는 여기서 도7의 실시예와 같이, 처리 테이블이 생략되는 경우에는, 참조번호 62에서 나타낸 바와 같이, 오브젝트 자체 내에 참조 카운트가 포함될 수 있다. 가비지 콜렉션 동안, 참조 버퍼들(RS)은 전과 같이 플러시(flush)되지만, 참조가 버퍼로부터 제거될 때, 스레드 테이블(TT)내의 각각의 엔트리는 또한 클리어된다. 가비지 콜렉션 시스템은 오브젝트에 대한 참조 카운트를 감소시키기 위해서 트리거(trigger)로서 이 이벤트(event)를 적절하게 사용한다.
참조 버퍼들은 이 모델을 위한 스택으로서 간단하게 구현될 있다. 그러나, 참조 버퍼 오버플로우들을 신속하게 처리하기 위해서, 버퍼는 그것의 라이프타임 동안 분류와 검색 동작들을 행할 수 있다. 이것을 수용하기 위해서, 스레드에 대한 참조 스택은 어레이 내에 보유될 수 있고, 정상 동작 시에는, 스택 세만틱스(semantics)를 갖지만, 즉 로컬 가비지 처리 동안에 푸시 동작들만을 지원하게 되지만, 특정한 스택 프레임들이 좀 더 효과적인 검색을 위해 분류될 수 있다.
스레드 테이블(TT)들의 사용은 각각의 스레드에 대한 별도의 처리 테이블들을 가지는 것과 유사하다. 그러나, 처리 테이블에 대한 대체는 없고, 둘 다의 테이블들은 도6의 실시예와 같이, 동일한 시스템 내에서 사용될 수 있다. 스레드 테이블은 낮은 오버헤드 참조 카운팅을 지원하고 스택의 보존 스캐닝의 필요성을 제거하는 가비지 콜렉션 목적들을 위한 스택에 대해 인터페이스로서 여겨져야 한다.
도6과 도7의 실시예에서는, 스레드 테이블들을 이용하여, 안전하게 명시한 삭제 동작이 스택 변수들에 대해서 사용될 수 있다. 다음의 검사들이 모두 성공적이라면, 오브젝트들은 안전하게 삭제될 수 있다 :
- 동작 참조 스택 내에 참조가 있음;
- 삭제 동작 자체 내에 포함된 것 이외에, 현재의 스택 프레임 내에 참조들이 없음;
- 오브젝트에 대한 참조 카운트가 오브젝트에 대한 다른 참조들이 없다는 것을 나타냄.
로컬 가비지 콜렉션 방법들은 세대의(generational)(또는 "짧은(ephemeral)") 가비지 콜렉션의 알려진 기술과 함께 사용될 수 있고 오브젝트들의 세트는 오브젝트 에이지들(ages)에 근거하여 분할된다. 다수의 오브젝트들은 최근(young) 동안에는 리던던트(redundant)가 될 것이라는 이론에 근거하여, 최근 세대(younger generation)에 대한 콜렉션에서 더 많은 노력이 든다. 공통적인 오래된 세대들(older generations)을 갖지만, 가장 최근 세대(youngest generation)를 각 스레드에 대한 로컬 그룹들로 분할할 가능성이 존재한다. 로컬 참조 구조들은 로컬/초기 그룹들에 대한 루트 세트(root set)로서 동작할 수 있고 로컬 그룹에서 글로벌로의 오브젝트들의 트랜지션은 로컬 그룹에서 다음 세대로의 오브젝트를 촉진하는 결과는 낳는다.
예시적인 실시예들에 대해 설명하였지만, 많은 변형들이, 예를 들면, 참조 버퍼(참조 스택 : RS) 크기를 튜닝할 수 있다는 것이 인식될 것이다. 로컬 가비지가 절차 종료 시에 또는 참조 버퍼가 오버플로우할 때, 콜렉션되므로, 참조 버퍼의 크기를 조절은 리싸이클(recycle) 주기들과 콜렉션 오버헤드간의 균형을 관리하는 방식이다. 오버플로우들은 더 큰 참조 버퍼와 로킹 및 삭제 동작들이 발생되는 동안 현재의 스레드의 실행 시에 짧은 멈춤을 발생시킬 수 있고, 더 긴 멈춤들은 참조 버퍼의 크기를 최소 크기에 아주 근접하게 설정하는 일은 빈번한 오버플로우들과 높은 처리 오버헤드를 이끌 수 있지만, 가비지를 발생시키지 않는 방법들에 대한 큰 참조 버퍼들은 낭비가 될 것이다.
스택으로 구성된 참조 버퍼(버퍼에 대한 가장 올바른 구조임)에 있어서, 이중 엔트리 검출은 리던던트 참조 카운트 동작들을 피하도록 요구된다. 언로크될 오브젝트들에 대해 작은 큐가 사용될 수 있고 언로크되도록 대기하는 오브젝트들 상의 로크 동작들이 검출될 수 있고 둘 다의 동작들이 취소될 수 있다. 나머지 복잡성이 부정적인 요소로 작용하지만, 스택의 사용에 대한 대안은 해시테이블(hashtable) 참조 버퍼를 가질 수 있으므로, 합리적인 해싱 기능은 중복된 로크 동작들의 감소된 수로 나머지 처리 비용을 절감시킬 수 있다.
삭제

Claims (15)

  1. 멀티 스레드(multi-thread) 프로그램들을 처리하기 위한 데이터 처리 장치에 있어서, 상기 장치는
    복수의 데이터 오브젝트들을 포함하는 랜덤 액세스 메모리와 결합된 데이터 처리기를 포함하고, 각각의 상기 데이터 오브젝트는 상기 메모리 내의 각각의 알려진 위치에 있고 각각의 스레드들과 관련된 메모리 스택들에 의해 보유되어 각각의 포인터들을 통해 액세스되고, 상기 장치는 임의의 소스로부터 거기에 현존하는 포인터들을 갖지 않는 상기 랜덤 액세스 메모리 내의 이들 데이터 오브젝트들을 주기적으로 결정하고 상기 데이터 오브젝트들을 삭제하도록 구성되고;
    상기 장치는 복수의 참조 버퍼들을 더 포함하고, 참조 버퍼들 각각은 각각의 메모리 스택 프레임에 할당되고, 각각의 참조 버퍼는 상기 각각의 스택 프레임에 의해 참조되는 각각의 데이터 오브젝트에 대한 포인터들을 유지하고, 상기 장치는, 각각의 스레드 메모리 스택 프레임의 끝(conclusion)에서, 관련된 참조 버퍼, 및 임의의 다른 참조 버퍼에서 거기에 포인터들을 갖지 않는 각각의 참조된 데이터 오브젝트를 클리어하도록 구성되는 것을 특징으로 하는, 데이터 처리 장치.
  2. 제 1 항에 있어서,
    처리 테이블(handle table)을 보유하는 추가 데이터 저장소(store)를 더 포함하며, 각각의 처리 테이블 엔트리는 각각의 데이터 오브젝트의 상기 랜덤 액세스 메모리 내의 상기 위치에 대한 포인터를 유지하는, 데이터 처리 장치.
  3. 제 2 항에 있어서,
    각각의 참조된 데이터 오브젝트는 상기 각각의 처리 테이블 엔트리에 대한 포인터를 포함하는, 데이터 처리 장치.
  4. 제 2 항에 있어서,
    각각의 참조 버퍼는 각각의 참조된 데이터 오브젝트에 대해, 상기 각각의 처리 테이블 엔트리에 대한 포인터를 유지하는, 데이터 처리 장치.
  5. 제 2 항에 있어서,
    참조 버퍼들로부터 각각의 데이터 오브젝트에 대한 포인터들의 수를 결정하고, 상기 처리 테이블에서 그 데이터 오브젝트에 대한 상기 엔트리를 가지고 참조 카운트로서 이 수를 저장하도록 동작할 수 있는 수단을 더 포함하는, 데이터 처리 장치.
  6. 제 2 항에 있어서,
    참조 버퍼들에서 각각의 데이터 오브젝트에 대한 포인터들의 수를 결정하도록 동작할 수 있는 수단과 이러한 수를 상기 각각의 데이터 오브젝트에 대한 참조 카운터 엔트리로서 유지하는 추가의 데이터 저장소를 더 포함하고, 상기 데이터 오브젝트 위치에 대한 상기 처리 테이블 포인터는 상기 추가 데이터 저장소 참조 카운트 엔트리에 대한 포인터와 상기 엔트리로부터 상기 랜덤 액세스 메모리에서의 상기 데이터 오브젝트에 대한 다른 포인터로 구성되는, 데이터 처리 장치.
  7. 제 5 항 또는 제 6 항에 있어서,
    삭제되지 않은 데이터 오브젝트들을 이동시킴으로써 상기 랜덤 액세스 메모리 콘텐트들을 주기적으로 콤팩트화(compact)하도록 배열되는 수단을 더 포함하고, 상기 수단은 0보다 큰 관련된 참조 카운트 값을 가진 임의의 데이터 오브젝트를 이동시키지 않고 그대로 두는, 데이터 처리 장치.
  8. 제 7 항에 있어서,
    각각의 저장된 데이터 오브젝트는, 세팅되었을 때, 0보다 큰 참조 카운트 값을 상기 메모리 콘텐트들을 주기적으로 콤팩트화하도록 배열되는 상기 수단에 나타내는 로크 플래그(lock flag)를 포함하는, 데이터 처리 장치.
  9. 제 1 항에 있어서,
    각각의 저장된 데이터 오브젝트는 다른 데이터 오브젝트로부터 상기 데이터 오브젝트에 대한 포인터의 존재에 의해 세팅된 글로벌 플래그(global flag)를 포함하고, 상기 장치는 또한 그것의 세팅된 글로벌 플래그를 가진 임의의 데이터 오브젝트를 삭제로부터 배제시키도록 구성된, 데이터 처리 장치.
  10. 제 1 항에 있어서,
    각각의 참조 버퍼는 미리 규정된 용량을 가지며, 상기 장치는 참조 버퍼가 완전히 채워지는 때를 검출하도록 동작할 수 있고 상기 스레드 메모리 스택 프레임의 끝 이전에, 상기 버퍼에 대한 가비지 삭제를 수행하도록 배열되는 수단을 더 포함하는, 데이터 처리 장치.
  11. 제 1 항에 있어서,
    각각의 스레드에 대해, 상기 스레드에 의해 참조되는 각각의 오브젝트를 각각 마킹하는 각각의 엔트리들을 유지하는 각각의 스레드 참조 테이블을 유지하는 추가 데이터 저장소를 추가적으로 포함하는, 데이터 처리 장치.
  12. 제 11 항에 있어서,
    각각의 참조 버퍼는, 각각의 참조된 데이터 오브젝트에 대해, 상기 각각의 스레드 테이블 엔트리에 대한 포인터를 유지하는, 데이터 처리 장치.
  13. 멀티 스레드 프로그램들을 처리하는 데이터 처리 장치들에서 사용하기 위한 메모리 관리 방법에 있어서, 상기 메모리는 복수의 데이터 오브젝트들을 포함하고, 각각의 상기 데이터 오브젝트는 상기 메모리 내의 각각의 알려진 위치에 있고 상기 각각의 스레드들과 관련된 메모리 스택들에 의해 보유되어 각각의 포인터들을 통해 액세스되고, 상기 방법은 임의의 소스로부터 거기에 현존하는 포인터들을 갖지 않는 랜덤 액세스 메모리 내의 이들 데이터 오브젝트들을 주기적으로 결정하고 상기 데이터 오브젝트들을 삭제하는 단계를 포함하고;
    각각의 메모리 스택에 대해서, 참조 포인터들이 상기 각각의 스택에 의해 참조되는 각각의 데이터 오브젝트에 대해 발생되고, 각각의 스레드 메모리 스택의 처리의 끝에서, 상기 관련된 참조 포인터들과 거기에 다른 참조 포인터들을 갖지 않는 각각의 참조된 데이터 아이템이 삭제되는 것을 특징으로 하는, 메모리 관리 방법.
  14. 제 13 항에 있어서,
    상기 데이터 오브젝트 메모리 콘텐트들을 주기적으로 콤팩트화하는 추가 단계를 포함하는, 메모리 관리 방법.
  15. 제 14 항에 있어서,
    참조 포인터들을 갖는 이들 저장된 데이터 오브젝트들은 로크된 것으로 식별되고 상기 콤팩트 처리의 결과로서 이동되지 않는, 메모리 관리 방법.
KR1019997003489A 1997-08-22 1998-07-16 로컬화된 메모리 재이용을 가진 데이터 처리기 KR100541174B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9717715.8 1997-08-22
GBGB9717715.8A GB9717715D0 (en) 1997-08-22 1997-08-22 Data processor with localised memory reclamation
PCT/IB1998/001087 WO1999010811A1 (en) 1997-08-22 1998-07-16 Data processor with localised memory reclamation

Publications (2)

Publication Number Publication Date
KR20000068812A KR20000068812A (ko) 2000-11-25
KR100541174B1 true KR100541174B1 (ko) 2006-01-10

Family

ID=10817820

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997003489A KR100541174B1 (ko) 1997-08-22 1998-07-16 로컬화된 메모리 재이용을 가진 데이터 처리기

Country Status (7)

Country Link
US (1) US6304949B1 (ko)
EP (1) EP0938706B1 (ko)
JP (1) JP2001504970A (ko)
KR (1) KR100541174B1 (ko)
DE (1) DE69836796T2 (ko)
GB (1) GB9717715D0 (ko)
WO (1) WO1999010811A1 (ko)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6557091B2 (en) * 1997-08-22 2003-04-29 Koninklijke Philips Electronics N.V. Data processor with localized memory reclamation
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
GB2345159B (en) * 1998-12-23 2003-08-20 Ibm Virtual machine memory management
GB2345160B (en) * 1998-12-23 2003-08-20 Ibm Virtual machine memory management
EP1276331A3 (en) * 1999-04-01 2005-06-01 Ravisent Technologies, Inc. Method for preventing dual-step half-pixel motion compensation accumulation errors in prediction-rich MPEG-2 sequences
US6567557B1 (en) 1999-12-10 2003-05-20 Stmicroelectronics, Inc. Method for preventing dual-step half-pixel motion compensation accumulation errors in prediction-rich MPEG-2 sequences
US6237060B1 (en) * 1999-04-23 2001-05-22 Sun Microsystems, Inc. Cache management techniques
JP3611295B2 (ja) * 2000-03-09 2005-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータシステム、メモリ管理方法及び記憶媒体
US6823351B1 (en) * 2000-05-15 2004-11-23 Sun Microsystems, Inc. Work-stealing queues for parallel garbage collection
US6826583B1 (en) 2000-05-15 2004-11-30 Sun Microsystems, Inc. Local allocation buffers for parallel garbage collection
US6507903B1 (en) 2000-06-20 2003-01-14 International Business Machines Corporation High performance non-blocking parallel storage manager for parallel software executing on coordinates
US6832378B1 (en) 2000-06-20 2004-12-14 International Business Machines Corporation Parallel software processing system
US7140018B1 (en) 2000-06-20 2006-11-21 International Business Machines Corporation Method of using a distinct flow of computational control as a reusable abstract data object
US6757891B1 (en) * 2000-07-12 2004-06-29 International Business Machines Corporation Method and system for reducing the computing overhead associated with thread local objects
US7168069B1 (en) 2000-07-12 2007-01-23 Stmicroelectronics, Inc. Dynamic generation of multimedia code for image processing
US6622226B1 (en) * 2000-07-31 2003-09-16 Microsoft Corporation Method and system for using a mark-list for garbage collection
US6813693B2 (en) * 2000-12-11 2004-11-02 Microsoft Corporation System and method for the discovery and use of repetitively accessed data
US7711818B2 (en) 2000-12-22 2010-05-04 Oracle International Corporation Support for multiple data stores
US6675261B2 (en) * 2000-12-22 2004-01-06 Oblix, Inc. Request based caching of data store data
US7802174B2 (en) 2000-12-22 2010-09-21 Oracle International Corporation Domain based workflows
US7415607B2 (en) 2000-12-22 2008-08-19 Oracle International Corporation Obtaining and maintaining real time certificate status
US7213249B2 (en) * 2000-12-22 2007-05-01 Oracle International Corporation Blocking cache flush requests until completing current pending requests in a local server and remote server
US7349912B2 (en) 2000-12-22 2008-03-25 Oracle International Corporation Runtime modification of entries in an identity system
US7937655B2 (en) 2000-12-22 2011-05-03 Oracle International Corporation Workflows with associated processes
US7380008B2 (en) 2000-12-22 2008-05-27 Oracle International Corporation Proxy system
US8015600B2 (en) 2000-12-22 2011-09-06 Oracle International Corporation Employing electronic certificate workflows
US7475151B2 (en) 2000-12-22 2009-01-06 Oracle International Corporation Policies for modifying group membership
US7581011B2 (en) 2000-12-22 2009-08-25 Oracle International Corporation Template based workflow definition
US7363339B2 (en) * 2000-12-22 2008-04-22 Oracle International Corporation Determining group membership
US7085834B2 (en) 2000-12-22 2006-08-01 Oracle International Corporation Determining a user's groups
US6751718B1 (en) * 2001-03-26 2004-06-15 Networks Associates Technology, Inc. Method, system and computer program product for using an instantaneous memory deficit metric to detect and reduce excess paging operations in a computer system
US6804681B2 (en) * 2001-05-08 2004-10-12 Sun Microsystems, Inc. Identifying and tracking object references in a java programming environment
US7065747B2 (en) 2001-05-08 2006-06-20 Sun Microsystems, Inc. Identifying references to objects during bytecode verification
US7103887B2 (en) * 2001-06-27 2006-09-05 Sun Microsystems, Inc. Load-balancing queues employing LIFO/FIFO work stealing
GB0116497D0 (en) * 2001-07-06 2001-08-29 Koninkl Philips Electronics Nv Receiver apparatus and method
US7225256B2 (en) 2001-11-30 2007-05-29 Oracle International Corporation Impersonation in an access system
US7840658B2 (en) 2002-05-15 2010-11-23 Oracle International Corporation Employing job code attributes in provisioning
US7216163B2 (en) 2002-05-15 2007-05-08 Oracle International Corporation Method and apparatus for provisioning tasks using a provisioning bridge server
US6862674B2 (en) * 2002-06-06 2005-03-01 Sun Microsystems Methods and apparatus for performing a memory management technique
US7328438B2 (en) * 2003-03-27 2008-02-05 International Business Machines Corporation Deallocation of computer data in a multithreaded computer
US7882132B2 (en) 2003-10-09 2011-02-01 Oracle International Corporation Support for RDBMS in LDAP system
US7904487B2 (en) 2003-10-09 2011-03-08 Oracle International Corporation Translating data access requests
US7340447B2 (en) 2003-10-09 2008-03-04 Oracle International Corporation Partitioning data access requests
US7594234B1 (en) 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
US7475397B1 (en) 2004-07-28 2009-01-06 Sun Microsystems, Inc. Methods and apparatus for providing a remote serialization guarantee
DE102005026721A1 (de) * 2005-06-09 2007-01-11 Rohde & Schwarz Gmbh & Co. Kg Verfahren zur Speicherverwaltung von digitalen Recheneinrichtungen
US7823158B2 (en) 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
CN101346634B (zh) * 2005-11-04 2012-10-24 甲骨文国际公司 用于通信网络中的网守的系统和方法
US20070104186A1 (en) * 2005-11-04 2007-05-10 Bea Systems, Inc. System and method for a gatekeeper in a communications network
US8171466B2 (en) * 2006-05-16 2012-05-01 Oracle International Corporation Hitless application upgrade for SIP server architecture
US8001250B2 (en) * 2006-05-16 2011-08-16 Oracle International Corporation SIP and HTTP convergence in network computing environments
US8112525B2 (en) * 2006-05-16 2012-02-07 Oracle International Corporation Engine near cache for reducing latency in a telecommunications environment
US8219697B2 (en) * 2006-05-17 2012-07-10 Oracle International Corporation Diameter protocol and SH interface support for SIP server architecture
US7661027B2 (en) * 2006-10-10 2010-02-09 Bea Systems, Inc. SIP server architecture fault tolerance and failover
US20080140737A1 (en) * 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US9667430B2 (en) * 2006-12-13 2017-05-30 Oracle International Corporation System and method for a SIP server with offline charging
US20080147551A1 (en) * 2006-12-13 2008-06-19 Bea Systems, Inc. System and Method for a SIP Server with Online Charging
US8078737B2 (en) * 2006-12-13 2011-12-13 Oracle International Corporation System and method for efficient storage of long-lived session state in a SIP server
US7657500B2 (en) * 2007-03-12 2010-02-02 Sun Microsystems, Inc. Concurrent extensible cuckoo hashing
JP2009037546A (ja) * 2007-08-03 2009-02-19 Hitachi Ltd スレッド固有領域を利用するメモリ管理方法およびその方法を用いたコンピュータ
US8140597B2 (en) * 2007-08-29 2012-03-20 International Business Machines Corporation Computer system memory management
US7991808B2 (en) * 2008-05-21 2011-08-02 Apple Inc. Per thread garbage collection
US20110252216A1 (en) * 2010-04-12 2011-10-13 Tatu Ylonen Oy Ltd Thread-local hash table based write barrier buffers
US8738877B2 (en) 2011-12-14 2014-05-27 Advance Micro Devices, Inc. Processor with garbage-collection based classification of memory
US10437720B2 (en) * 2014-03-12 2019-10-08 Optumsoft, Inc. Deferred destruction for efficient resource reclamation
US11573894B2 (en) 2020-10-29 2023-02-07 Oracle International Corporation Tracking garbage collection states of references
US11875193B2 (en) 2021-03-25 2024-01-16 Oracle International Corporation Tracking frame states of call stack frames including colorless roots
US11513954B2 (en) 2021-03-25 2022-11-29 Oracle International Corporation Consolidated and concurrent remapping and identification for colorless roots
US11573794B2 (en) * 2021-03-25 2023-02-07 Oracle International Corporation Implementing state-based frame barriers to process colorless roots during concurrent execution
US11507503B1 (en) 2021-05-19 2022-11-22 Oracle International Corporation Write barrier for remembered set maintenance in generational Z garbage collector
US12019541B2 (en) 2022-10-17 2024-06-25 Oracle International Corporation Lazy compaction in garbage collection

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4853842A (en) * 1985-09-11 1989-08-01 Texas Instruments Incorporated Computer memory system having persistent objects
US5321834A (en) * 1989-11-28 1994-06-14 Xerox Corporation Method and system for reclaiming unreferenced computer memory space
US5355483A (en) * 1991-07-18 1994-10-11 Next Computers Asynchronous garbage collection
US5765174A (en) * 1995-10-06 1998-06-09 Sun Microsystems, Inc. System amd method for distributed object resource management
US5761670A (en) * 1995-12-08 1998-06-02 Sun Microsystems, Inc. System and method for space efficient object locking using global and local locks
US5968157A (en) * 1997-01-23 1999-10-19 Sun Microsystems, Inc. Locking of computer resources
US5848423A (en) * 1997-04-23 1998-12-08 Sun Microsystems, Inc. Garbage collection system and method for locating root set pointers in method activation records

Also Published As

Publication number Publication date
JP2001504970A (ja) 2001-04-10
WO1999010811A1 (en) 1999-03-04
DE69836796T2 (de) 2007-10-11
DE69836796D1 (de) 2007-02-15
EP0938706B1 (en) 2007-01-03
US6304949B1 (en) 2001-10-16
EP0938706A1 (en) 1999-09-01
KR20000068812A (ko) 2000-11-25
GB9717715D0 (en) 1997-10-29

Similar Documents

Publication Publication Date Title
KR100541174B1 (ko) 로컬화된 메모리 재이용을 가진 데이터 처리기
US6557091B2 (en) Data processor with localized memory reclamation
KR100512665B1 (ko) 가비지 수집기들을 추적하는 공간 한정된 마킹 구조
EP0881576B1 (en) Method and apparatus for generational garbage collection in a shared heap memory by means of multiple processor units
US6424977B1 (en) Train-algorithm-based garbage collector employing reduced oversized-object threshold
US6434576B1 (en) Popular-object handling in a train-algorithm-based garbage collector
US6185581B1 (en) Train-algorithm-based garbage collector employing fixed-size remembered sets
US6434577B1 (en) Scalable-remembered-set garbage collection
US6487563B1 (en) Memory reclamation method
US6529919B1 (en) Incremental class unloading in a train-algorithm-based garbage collector
US6226653B1 (en) Method and apparatus for performing generational garbage collection using remembered set counter
US6449626B1 (en) Reduced-cost remembered-set processing in a train-algorithm-based garbage collector
US6826583B1 (en) Local allocation buffers for parallel garbage collection
US6415302B1 (en) Train-algorithm-based garbage collector employing farthest-forward-car indicator
US6510440B1 (en) Method and apparatus for performing generational garbage collection using barrier bits
US6105040A (en) Method and apparatus for managing stored objects
EP0173464A2 (en) Computer memory system with parallel garbage collection independent from an associated user processor
US9116798B2 (en) Optimized memory management for class metadata
US6701520B1 (en) Preventing garbage collection of objects in object oriented computer programming languages
US20060190697A1 (en) A lock-free memory allocator with delayed coalescing
US6470361B1 (en) Method and apparatus for performing generational garbage collection using middle-aged objects
US7620943B1 (en) Using class properties to segregate objects in a generation managed by the train algorithm
US20040088337A1 (en) Efficiently supporting the existence of long trains in a generation managed by the train algorithm
US7617264B1 (en) Parallel remembered-set processing respecting popular-object detection
US20090228537A1 (en) Object Allocation System and Method

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: 20080702

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee