KR20010025111A - 불요정보 정리를 스케줄하는 방법 - Google Patents

불요정보 정리를 스케줄하는 방법 Download PDF

Info

Publication number
KR20010025111A
KR20010025111A KR1020007013525A KR20007013525A KR20010025111A KR 20010025111 A KR20010025111 A KR 20010025111A KR 1020007013525 A KR1020007013525 A KR 1020007013525A KR 20007013525 A KR20007013525 A KR 20007013525A KR 20010025111 A KR20010025111 A KR 20010025111A
Authority
KR
South Korea
Prior art keywords
instructions
processor
scheduling
memory
program
Prior art date
Application number
KR1020007013525A
Other languages
English (en)
Other versions
KR100722710B1 (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 KR20010025111A publication Critical patent/KR20010025111A/ko
Application granted granted Critical
Publication of KR100722710B1 publication Critical patent/KR100722710B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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
    • 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/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System (AREA)

Abstract

본 발명은 소정의 다수의 명령들을 현재 실행할 수 있는, 프로세서에 의해 현재 실행될 명령을 스케줄하는 방법에 관한 것이다. 제 1 프로세스 및 제 2 프로세스로부터의 명령들은 제 3 프로세스에 주어진 소정의 규칙에 따라 인터리브된다. 제 3 프로세스로부터 명령들은 프로세서에 의해 제 1 시점에서 실행하도록 스케줄된다. 제 1 프로세스의 명령들은 메모리 힙(heap)에서 식별 포인터에 의해 링크된 데이터 오브젝트들(object)을 포함하는 데이터 구조들을 발생시킨다. 제 2 프로세스는 제 1 프로세스에 의해 미사용된 데이터 구조들에 할당된 메모리를 보정하고, 메모리 힙을 통해 불요정보 정리 프로세스를 포함한다.

Description

불요정보 정리를 스케줄하는 방법{A method of scheduling garbage collection}
이용할 수 있는 컴퓨터 프로세서 구조의 현재 세대는 명령 레벨 병렬계산에 대한 능력을 제공하고, 즉, 단일 클럭 사이클에서 다중의 동시발생하는 명령들의 실행을 제공한다. 그러한 프로세서에 대한 명령 발생(issue) 레지스터는 통상적으로 많은 슬롯으로 분할된다. 단일 클럭 사이클에서, 프로세서는 각각의 슬롯에서 명령을 처리할 수 있다. 그러한 특징을 제공하는 프로세서 구조들의 예는 수퍼스칼라(Superscalar) 구조 및 매우 긴 명령 워드(Very Long Instruction Word)(VLIW) 구조이다.
프로세서가 다중의 동시발생 명령들을 실행할 수 있도록, 각각의 명령 및 효과는 동일한 클럭 사이클에서 실행될 다른 명령들에 독립적이어야 한다. 예를 들어, 변수의 값을 두배로 된 명령은 또다른 변수에 동일한 변수의 값을 복사했던 명령으로서 동일한 클럭 사이클에서 처리될 수 없다. 명령들이 서로 독립한지, 그러므로 동시에 처리될 수 있는지를 결정하는 요구는 많은 다른 방법으로 해결되어 왔다. 수퍼스칼라 구조에서, 전용 하드웨어는 명령 발생 레지스터에 도달한 독립 명령들을 결정하도록 실행되어 왔다. VLIW 구조에서, 프로그램 컴파일러는 서로 연관된 몇몇의 독립 명령들을 구성하는 매우 긴 명령 워드들을 발생시키도록 실행되어 왔고, 단일 VLIW는 각각의 클럭 사이클동안 프로세서에 의해 실행되어 진다.
그러나, 양쪽의 접근법은 동일한 제한을 받는다. VLIW상에 실행되는 매우 작은 프로그램, 수퍼스칼라 또는 유사한 프로세서들은 프로세서의 모든 슬롯들을 점유하기에 충분한 수의 독립 명령들을 갖는다. 통상적으로, 많은 양의 프로세싱이 다수의 독립 성분들상에 실행되도록 요구되는, 사운드 또는 이미지 프로세싱과 같은, 멀티미디어 어플리케이션들만이 프로세서의 모든 슬롯을 점유하여 접속된다. 상기 프로세서를 구비한 컴퓨터의 사용자가 프로세서의 미사용 슬롯들로부터 역효과를 인지하는 동안, 프로세서의 가장 능률적인 사용 및 동시 처리 능력이 이루어지는 것은 바람직하다.
Modula-3 및 Cedar와 같은, Sun Microsystems' Java 및 몇몇 다른 언어들과 프로그램 환경, 불요정보 정리 프로세스는 프로그램 프로세스와 병렬로 실행된다.
불요정보 정리는 프로그램에 의한 메모리 공간의 마지막 사용후에 시스템 메모리 공간의 자동화된 보정이다. 불요정보 정리 기술들의 다수의 예들은 R. Johes 등에 의해, "Garbage Collection- Algorithms for Automatic Dynamic Memory Management", pub. John Wiley & Sons 1996, ISBN 0-471-94148-4의 1 내지 18 페이지, 및 1992년 9월 the 1992 International Workshop on Memory Management의 회보인, P.R. Wilson에 의해 "Uniprocessor Garbage Collection Techniques", St.Malo, Framce에 논의되었다. 프로그래머 또는 컴파일러에 의해 메모리 할당 및 복구가 조종되며, 많은 컴퓨터 프로그램들의 저장 요청이 단순하고 예측가능한 반면에, 기능 언어들이 더 복잡한 패턴의 실행을 갖는 추세이며 특정 데이터 구조들의 수명이 런-타임(run-time)에 앞서 더 이상 결정될 수 없고, 그러므로 프로그램이 동작할 때, 이러한 저장의 자동화된 보정은 필수적이다.
본 발명은 다른 프로세스들의 명령을 실행하기 위한 불요정보 정리(garbage collection) 명령들을 스케줄하는 장치 및 방법에 관한 것이고, 특히 명령 레벨 병렬성을 갖는 프로세서들을 위한 불요정보 정리 명령들의 스케줄링과 관련한다.
도 1는 본 발명을 구현하는데 적합한 데이터 처리 시스템의 블록도.
도 2는 실행하기 위한 프로그램 프로세스 및 불요정보 정리 프로세스에 의해 발생된 명령들의 큐를 도시하는 도면.
도 3는 도 2의 큐를 처리하는 명령 슬롯들을 갖는 VLIW 프로세서를 나타내는 도면.
도 4는 본 발명의 방법에 따른 실행을 위해 스케줄된 도 2의 명령들의 큐를 도시하는 도면.
도 5는 도 4의 명령들을 실행하는 도 3의 VLIW 프로세서를 나타내는 도면.
상술된 Wilson 참고서에 기술된 바와 같이, 몇몇 불요정보 정리 보정 기술들의 공통된 특징은 개별적으로 저장된 데이터 오브젝트들에 의해 실행된 포인터들을 참조하여 형성된 데이터 구조를 증분적으로 트래버스(traverse)하는 것이다. 상기 기술은 포인터 링크 데이터 오브젝트들을 통한 하나의 경로 또는 경로들을 추적하여 외부 장소로부터 또는 다른 저장된 오브젝트들에 의해 여전히 도달가능한 모든 저장된 오브젝트들의 제 1 마킹(marking)을 수반한다.
이것은 메모리를 압축(compacting) 또는 스위핑(sweeping)의 다음에 올수 있다 - 즉, 공간이 보정될 수 있는 마크되지 않은 오브젝트들을 결정하기 위해 메모리내에 저장된 모든 오브젝트를 검사하는 것이다.
통상적으로, 프로그램 프로세스로부터 불요정보가 가능한 빨리 검출되고 적절한 리소스들이 보정되도록, 불요정보 정리 및 보정 프로세스는 프로그램 프로세스와 병렬로 컴퓨터상에서 동작하며, 불요정보 정리기 및 보정 프로세스는 프로그램 프로세스의 데이터 오브젝트들에 의해 점유된 힙(메모리 영역)상에서 동작한다.
프로그램 프로세스에 추가하여 불요정보 정리 프로세스를 실시하기 위해, 각각은 분배된 힙상에서 동작하는 개별적인 스레드로서 통상적으로 실행된다. 그것들 양쪽이 동일한 프로세서 리소스들을 분배해야하기 때문에, 개별적인 스레드들에서 프로세스들의 실행은 양쪽 프로세서들의 성능을 감소시킨다. 하나의 스레드가 처리되는 동안, 다른 하나는 중지될 수 있고 반대로 될 수 있다.
VLIW 프로세서상에서, 각각의 스레드는 컴파일되기 쉽고, 두 개의 스레드중에 교대로 스왑되고 있는 프로세서 리소스들과 개별적으로 실행되기 쉽다.
본 발명에 따라, 동시에 소정수의 명령들이 실행할 수 있는, 프로세서에 의해 동시에 실행될 명령들을 스케줄링하는 방법이 제공되고, 상기 방법은,
제 3 프로세스에 주어진 소정의 규칙에 따라 제 1 프로세스 및 제 2 프로세스로부터 명령들을 인터리브하는 단계와,
프로세서에 의해 제 1 시점에서 실행하기 위한 제 3 프로세스로부터의 명령들을 스케줄하는 단계를 포함하고,
제 1 프로세스의 명령들은 메모리 힙에서 식별 포인터에 의해 링크된 데이터 오브젝트들을 포함하고, 제 2 프로세스는 제 1 프로세스에 의해 미사용된 데이터 구조들에 할당된 메모리를 보정하고 메모리 힙을 트래버스하는 불요정보 정리 프로세스를 포함한다.
본 발명의 장점은 프로세서의 미사용 동시 실행 리소스들이 실행되고 있는 프로세스에 영향을 미치지 않고 불요정보 정리에 이용되는 것이다.
양호하게는, 소정의 규칙은 제 1 프로세스로부터 명령을 스케줄링하고, 제 1 시점에서 동시에 실행하도록 스케줄된 소정수의 명령들보다 더 작은지를 결정하고, 만일 그렇다면, 제 1 시점에서 실행하기 위해 제 2 프로세스로부터 명령들을 스케줄하는 것을 포함한다.
다른 명령들에 대한 프로세서들의 용량을 모니터함으로써, 불요정보 정리는 프로세스들에 이용가능한 동시 처리 리소스들을 감소시키지 않고 프로세스쪽에 적응적으로 스케줄될 수 있다.
대안적으로, 소정의 규칙은 제 1 및 제 2 프로세스들로부터 명령들의 대안 세트의 선택을 포함할 수 있다. 또다른 대안으로, 소정의 규칙은 제 2 프로세스로부터 스케줄링 명령들의 효과를 결정하는 단계를 포함할 수 있고, 아니다면, 스케줄된 제 2 프로세스 명령들의 수를 감소시킨다.
제 2 프로세스로부터 인터리브된 불요정보 정리 명령들은 제 1 프로세스로부터 명령들보다 프로세스에 대해 훨씬 더 많은 시간을 가질 수 있다. 제 2 프로세스로부터 명령들의 효과를 모니터하거나 대안 세트를 선택함으로써, 불요정보 정리 명령들의 지연 효과는 따라서 감소될 수 있다.
본 발명에 따라, 식별 포인터에 의해 링크된 데이터 오브젝트들을 포함하는 데이터 구조를 포함하는 랜덤 액세스 메모리와 동시에 연결된 소정수의 명령들을 실행가능한 프로세서를 구비한 데이터 처리 장치가 제공되고, 저장된 다수의 데이터 오브젝트들 상에 동작하는 동안 이하의 것,
제 3 프로세스에 주어진 소정의 규칙에 따라 제 1 프로세스 및 제 2 프로세스로부터 명령들을 인터리브하는 제 1 수단과,
프로세서에 의해 제 1 시점에서 실행하도록 제 3 프로세스로부터 명령들을 스케줄하는 제 2 수단들을 제공하도록 구성되고,
제 1 프로세스의 명령들은 메모리 힙에 데이터 구조들을 발생시키고, 제 2 프로세스는 메모리 힙을 트래버스하고 제 1 프로세스에 의해 미사용된 데이터 구조들에 할당된 메모리를 보정하는 불요정보 정리 프로세스를 포함한다.
제 1 및 제 2 수단들은 프로세서상에 명령들을 실행하는 프로그램 해석기를 포함할 수 있다. 제 1 및 제 2 수단들은 프로세서상에 명령들을 실행하는 프로그램 컴파일러를 포함할 수 있다. 대안적으로, 제 1 및 제 2 수단들은 프로세서에 대해 동시에 실행될 명령들을 모으고 통과시키는 명령 처리 방법들을 포함한다.
도 1는 예를 들어, 가상 환경을 한정하는 데이터에 대한 브라우저(browser)로서 시스템을 형성할 수 있는 몇몇 소프트웨어 유틸리티들에 대해 호스트로 동작하는, 개인용 컴퓨터와 같은, 데이터 처리 시스템을 나타낸다. 상기 시스템은 랜덤 액세스(RAM) 및 판독 전용(ROM) 메모리들(14, 16)에 대한 어드레스 및 데이터 버스(12)를 거쳐 연결된 VLIW 프로세서를 구비한 중앙 처리 유니트(CPU)(10)을 포함한다. 이러한 메모리들은 하나 또는 몇몇의 집적 회로 장치에 포함되고, 시스템 하드 디스크뿐만 아니라 CD-ROM과 같은, 부가(제거가능한) 메모리 장치들로부터 판독하기 위한 수단들에 의해 증가될 수 있다. 본 발명은 특히 CPU(10)의 제어하에 RAM(14)의 동작 영역에 대한 메모리 관리 동작들의 효과적인 스케줄링을 실시한다. 또한 키보드 및 커서 제어 및 마우스나 트랙볼과 같은 선택 장치를 적절하게 구비할 수 있는 제 1 및 제 2 사용자 입력 장치(18, 20)는 또한 버스(12)를 거쳐 CPU(10)에 연결된다. 시스템으로부터 오디오 출력은 오디오 처리 단계(24)에 의해 구동된 하나 이상의 스피커들(22)을 거친다. 시스템으로부터 비디오 출력은 CPU(10)의 제어하에 디스플레이 구동기 단계(28)에 의해 구동된 디스플레이 스크린(26)상에 나타난다. 시스템에 대한 다른 소스는 원격 사이트에 온라인 링크를 거쳐, 예를 들어 인터넷을 거쳐, 버스(12)에 연결된 네트워크 인터페이스(30)에 제공된 시스템 말단에 접속된다.
도 2는 프로그램 프로세스 스레드(40) 및 불요정보 정리 프로세스 스레드(45)에 의해 발생된 명령들의 큐를 나타낸다. 2개의 스레드들은 실행하는 동안 프로세서들의 내부 및 외부에 스왑(swap)되어, 각각으로부터 몇몇 명령들이 프로세서가 다른 스레드에 주의를 돌리기 전에, 하나의 스레드에 대해 실행된다. 나머지들의 이전의 실행에 따른 그러한 명령들은 종속하는지에 대한 명령을 링크하는 화살표에 의해 도시된다.
도 3는 5개의 명령 슬롯들(50-58)을 가지고 2개의 프로세스들(프로그램 프로세스 및 불요정보 정리 프로세스)로부터 명령들을 실행하도록 동작하는 VLIW 프로세서를 나타낸다. 도 2의 명령이 실행되는 동안, 명령 슬롯들의 상태는 연속적인 클록 사이클들(시점)(A, B 및 C)에 도시된다.
A에서, 프로그램 프로세스 스레드는 프로세서에 의해 현재 실행되고 있다. 명령들(1, 2 및 3)은 슬롯들(50, 52 및 54)에 각각 들어가므로, 동시에 실행되도록 스케줄된다. 그러나, 명령(4)은 명령(3)의 실행후까지 실행될수 없으므로, 클럭 사이클(A)동안 다른 명령들이 실행되는 것을 방지한다.
B에서, 명령들(4, 5)은 슬롯들(50, 52)로 각각 들어간다. 명령(6)은 실행되고 있는 명령(4)에 의존되므로 실행될 수 없다.
C에서, 프로그램 프로세스 스레드는 중지되고 불요정보 정리 프로세스 스레드는 계속한다. 불요정보 정리 증가(1, 2)는 슬롯(50, 52)에 각각 들어가고, 불요정보 정리 증가(3)는 증가(2)의 실행에 의존한다. 불요정보 정리 증가는 동일한 사이클에서 연속적으로 실행되어야 하는 단일 명령 또는 다수의 명령들을 포함할 수 있다. 그러나, 본 설명에서 각각의 증가는 단일 명령을 포함한다고 가정된다.
도 4는 본 발명의 방법에 따라 스케줄되었던 도 2의 명령의 큐를 나타낸다.
프로그램 프로세스 스레드에 의해 미사용된 예비 프로세서 리소스들을 사용하는 불요정보 정리 프로세스를 실시하기 위해, 프로그램 프로세스 루프는 불요정보 정리 증가들이 프로그램 명령들 사이에 인터리브된 단일 프로세스 루프에 주어진 불요정보 정리 프로세스 루프와 결합되어 진다;
반복
다음 프로그램 프로세스 명령 실행
불요정보 정리의 증가를 실행
프로그램 프로세스가 종료될 때까지
불용 정보 처리 증가들은 프로그램 명령들에 독립할 때, 명령들은 프로그램 스레드에 의해 미사용된 리소스들을 기생적으로 점유한다.
도 4의 명령들의 큐는 동시에 실행될 수 있는 독립 명령들을 결정하도록 처리된다.
도 5는 명령 슬롯(50-58)을 구비한 도 3의 VLIW 프로세서를 도시한다. 명령 슬롯들의 상태는 도 4의 명령들이 실행될 동안, 연속적인 클럭 사이클들(시점)(A, B 및 C)에서 도시된다.
A에서, 명령(1), 불용정보 처리(GC) 증가(1), 증가(2) GC 증가(2) 및 명령(3)은 슬롯들(50-58)에 각각 들어간다. 일단 슬롯들이 모두 채워지면, 명령들 및 증가들은 동시에 실행된다.
B에서, 명령(4), GC 증가(3), 명령(5) 및 GC 증가(4)는 슬롯들(50-56)에 각각 들어간다. 명령(6)은 명령(4)와 동시에 실행될 수 없으므로, 슬롯(58)이 사용되는 것을 방지한다.
C에서, 명령(6), GC 증가(5) 및 명령들(7 내지 9)은 슬롯(50-58)에 들어가며 동시에 실행된다.
프로세서의 성능의 강하는 프로그램 및 불용정보 처리 스레드들로부터 명령들의 인터리브의 결과로써 발생하지 않는 것이 인식될 것이다. 실제로, 상술된 경우에, 본 발명의 방법에 따른 명령들을 스케줄하여, 훨씬 더 많은 명령들이 도 3의 예 보다 도 5의 예에서 실행된다.
불용 정보 처리 알고리즘(algorithm)은, 그들이 수행해야 할 동작의 종류에 의해, 다량의 프로세서들의 리소스들을 요청한다. 통상의 다중스레드된 환경에서, 각각의 GC 증가는 실행될 더 많은 시간 및 프로세서 자원들을 요청할 수 있다. 프로그램 명령들에 GC 증가를 인터리브하도록, 증가당 표준 작업량이 명령들 및 증가들의 결합된 세트의 처리 시간을 억제하지 않을 작업의 충분히 적은 증가로 분해하는 것은 필요하다. 분해될 수 있는 표준 마크-스위프(mark-sweep) 불용 정보 처리 알고리즘 및 증가들의 예가 아래의 테이블에서 도시된다. 처리 테이블은 스위프동안, 빈 메모리 영역을 스캔하는 것을 피하도록 힙내의 모든 오브젝트들에 대한 기준을 포함하여 유지된다;
각각의 증가는 극소의 작동으로 하나의 오브젝트상의 동작을 실행한다. 동작들의 형식에 기인하여, 증가들은 분해되지 말아야 하고, 또한 오브젝트 상의 각각의 동작은 오브젝트 상의 다른 명령들 또는 동작들과 가능한 충돌하는 것을 피하기 위해 단일 클럭 사이클에서 완료되어야 한다. 분명히 오브젝트의 크기는 각각의 불용정보 처리 증가의 지속기간을 결정한다. 그러므로 큰 오브젝트들은 프로그램의 실행에서 중단을 발생시킬 수 있다. 또한 GC 증가의 분해는, 가능한 반면에, 상기의 가장 중요한 손실과 관련된 복잡성을 갖는 오브젝트들상에 극소의 동작의 손실이 발생한다.
본 발명의 양호한 실시예에서, 프로그램 프로세스 명령 루푸는 몇몇 프로그램 프로세스 명령들이 GC 증가들의 인터리브 이전 루프를 각각 반복하여 실행되도록 언롤(unroll)된다.
반복
다음 프로그램 프로세스 명령
다음 프로그램 프로세스 명령
다음 프로그램 프로세스 명령
다음 프로그램 프로세스 명령
프로세스 종료될 때까지
프로그램 프로세스 명령 루프를 언롤함으로써, 프로그램 실행상의 GC 증가동안 큰 오브젝트들에 의해 야기된 중단의 효과가 최소화된다.
불용정보 정리동안 요구되어 실행될 증가의 수 및 형이 힙에서 오브젝트들의 수 및 불용정보가 있는 오브젝트의 수에 의존함에 따라, 증가를 실행하는 명령은 런-타임까지 더 이상 구체적일 수 없다(즉, 이전에 기술된 것처럼 증가형(1-6)). 이것은 GC 증가의 적절한 형(1-6)이 해석기가 프로세스를 실행할 때 사용하는 곳에 인터리브될 수 있는, 해석된 코드에 영향을 미치지 않는 동안, 직접 GC 기능이 호출되거나 인라인 코드가 컴파일된 코드에 사용될 수 없다. 그러므로, 제때에(just-in-time) 컴파일된 코드와 같은 컴파일된 코드에 대해, 변수 또는 레지스터내의 다음 GC 증가에 대한 코드의 주소를 배치하고 컴파일된 코드내의 변수 또는 레지스터에 대한 직접 호출을 인터리브하는 것이 필요하다.
양호한 실시예에서, 프로그램 프로세스에서 명령 의존에 기인하여 클럭 사이클 당 점유되지 않은 명령 발생 슬롯들의 수는 자유로운 슬롯들이 불용 정보 처리 증가로 채워질수 있도록 모니터된다.
본 발명의 또다른 양호한 실시예에서, 프로그램 명령들간의 GC 증가의 인터리브는 GC 증가에 관련된 지연을 최소화하는 반면에, 프로세서 리소스들의 이용을 최대화하도록 적응적으로 실행된다. 프로세서 리소스들의 이용을 최대화하기 위해, GC 증가들이 예비 프로세서 명령 슬롯들에 위치될 수 있도록, 해석기, 컴파일러 또는 하드웨어를 스케줄하는 명령은 프로그램 명령들 및 의존도를 모니터 하는 것이 바람직하다. 동시에, 인터리빙(interleaving)이 프로그램 명령들의 성능에 불리하게 영향을 미칠지를 결정하기 위해 인터리브될 GC 증가의 지속 기간을 측정하는 것은 가능하다.
많은 VLIW 프로세서들은 명령이 실행되는지를 제어하기 위해 가드(guards) 또는 술어(predicates)의 사용을 허용한다. 실제로, 명령과 관련된 레지스터 값이 술어 또는 가드에 의해 한정된 상황에 마주치면, 명령이 실행되도록 스케줄된다. 이러한 설비를 사용하여, 스케줄링 시스템은 프로세서로부터 이용가능한 리소스들이 변화함에 따라 스케줄하는 불용정보 처리를 위한 술어 조건(predicate condition)을 조절하여 스케줄된 불용 정보 처리 증가의 수를 동적으로 조절하기 위해 적용될 수 있다. 술어는 상태를 또한 지시하는데 사용될 수 있고, 그러므로 특정 형태의 명령 또는 증가가 다른 형태의 명령 또는 증가로서 동일한 클럭 사이클에서 스케줄되지 않는다면, 종속 명령과 같은, 연속적으로 동작되어야 하는 불용 정보 처리 동작 또는 기능성 유니트 요구(스위프가 마크 등의 다음에 와야함), 그러한 명령 또는 증가형은 술어에 의해 가드될 수 있다. 이러한 방법으로, 마크 스위프 불용정보 처리기는 마크 증가가 활성화 또는 역일 때, 디스에이블(disable)된 스위프 증가를 가질 것이다.
상기 설명은 동일한 클럭 사이클동안 실행되도록 스케줄된 명령을 이룰 때, 명령들의 스케줄링이 정지된다는 가정하에 기술되었다. 그러나, 종속 명령은 모든 다른 명령들을 반드시 막는 것은 아니고, 그러므로 스케줄링 시스템은 클럭 사이클을 실행될 다른 비-종속 명령들을 찾도록 구성될 수 있다. 또한, 상호명령 종속에 부가하여, 프로세서의 기능 유니트를 사용하는 명령(예를 들어, 부동 포인트 기능 유니트)은 다른 명령들이 기능 유니트 클럭 사이클을 사용하는 것을 방지할 수 있다.
소프트웨어 실시의 용어로 주로 정의되지만, 숙련자들은 상술된 기능적인 특징들이 하드웨어내에서 또는 소프트웨어와 하드웨어의 조합으로 동일하게 실시될 수 있는 것을 알게 될 것이다.
본 설명서를 읽음으로써, 다른 변경들은 상기 기술의 당업자들에게 명확해질 것이다. 그러한 변경들은 디자인, 제조 및 데이터 처리의 이용 및 저장 기구 및 장치 그것의 구성하고 있는 부품으로 이미 공지된 다른 특징들과 여기에 이미 기술된 특징 대신에 또는 첨가하여 사용될 수 있는 다른 특징들을 수반할 수도 있다.

Claims (9)

  1. 소정수의 명령들을 동시에 실행할 수 있는 프로세서에 의해 현재 실행될 명령들을 스케줄하는 방법으로서,
    상기 방법은,
    제 3 프로세스에 주어진 소정의 규칙에 따라 제 1 및 제 2 프로세스로부터 명령들을 인터리브하는 단계와,
    상기 프로세서에 의해 제 1 시점에서 실행을 위해 상기 제 3 프로세스로부터 명령들을 스케줄하는 단계를 포함하고,
    상기 제 1 프로세스의 명령들은 메모리 힙에서 식별 포인터에 의해 링크된 데이터 오브젝트들을 포함하는 데이터 구조들을 발생시키고, 상기 제 2 프로세스는 상기 제 1 프로세스에 의해 미사용된 데이터 구조들에 할당된 메모리를 보정하고 상기 메모리 힙을 통하여 불요정보 정리 프로세스를 포함하는 단계를 포함하는, 스케줄링 방법.
  2. 제 1항에 있어서,
    소정의 규칙은 상기 제 1 프로세스로부터 명령들을 스케줄하고, 제 1 시점에서 동시 실행하도록 스케줄된 상기 소정수의 명령들보다 적은지를 결정하고, 만일 그렇다면, 제 1 시점에서 실행하기위해 제 2 프로세스로부터 명령들을 스케줄링하는 것을 포함하는, 스케줄링 방법.
  3. 제 1 항에 있어서,
    상기 소정의 규칙은 제 1 및 제 2 프로세스들로부터 명령들의 대체 세트들의 선택을 포함하는, 스케줄링 방법.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 소정의 규칙은 상기 제 2 프로세스로부터 명령들을 스케줄하는 효과를 결정하는 단계와, 만일 해롭다면, 스케줄된 제 2 프로세스 명령들의 수를 감소시키는 단계를 포함하는, 스케줄링 방법.
  5. 식별 포인터에 의해 링크된 데이터 오브젝트들을 포함하는 데이터 구조를 포함하는 랜덤 액세스 메모리와 동시에 연결된 소정수의 명령들을 실행할 수 있는 프로세서를 구비하는 데이터 처리 장치로서,
    상기 저장된 다수의 데이터 오브젝트들에 동작에 관해 다음의 것,
    제 3 프로세스에 주어진 소정의 규칙에 따라 제 1 프로세스 및 제 2 프로세스로부터 명령들을 인터리브하는 제 1 수단들과,
    상기 프로세서에 의해 제 1 시점에서 실행하기 위해 제 3 프로세스로부터 명령들을 스케줄하는 제 2 수단들을 제공하도록 구성되는 상기 장치를 포함하고,
    제 1 프로세스의 명령들은 메모리 힙에서 상기 데이터 구조들을 발생시키고, 제 2 프로세스는 제 1 프로세스에 의해 미사용된 데이터 구조들에 할당된 메모리를 보정하고 메모리 힙을 트래버스하는 불요정보 정리 프로세스를 포함하는, 데이터 처리 장치.
  6. 제 5항에 있어서,
    상기 제 1 및 제 2 수단들은 상기 프로세서상에 명령들을 실행하는 프로그램 해석기를 포함하는, 데이터 처리 장치.
  7. 제 5항에 있어서,
    상기 제 1 및 제 2 수단들은 상기 프로세서상에 명령들을 실행하기 위한 프로그램 컴파일러를 포함하는, 데이터 처리 장치.
  8. 제 5항에 있어서,
    상기 제 1 및 제 2 수단들은 상기 프로세서에 현재 실행될 명령들을 어셈블하고 패스하는 명령 처리 수단들을 포함하는, 데이터 처리 장치.
  9. 제 1 항 내지 4항 중 어느 한 항의 상기 방법의 단계들을 실행하는 명령들의 하나 이상의 프로그램을 인코딩 및 기계에 의해 판독가능한, 프로그램 저장 장치.
KR1020007013525A 1999-03-31 2000-03-09 폐영역 회수를 스케줄하는 방법 KR100722710B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9907280.3 1999-03-31
GBGB9907280.3A GB9907280D0 (en) 1999-03-31 1999-03-31 A method of scheduling garbage collection

Publications (2)

Publication Number Publication Date
KR20010025111A true KR20010025111A (ko) 2001-03-26
KR100722710B1 KR100722710B1 (ko) 2007-06-04

Family

ID=10850622

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007013525A KR100722710B1 (ko) 1999-03-31 2000-03-09 폐영역 회수를 스케줄하는 방법

Country Status (8)

Country Link
US (1) US6526421B1 (ko)
EP (1) EP1082662A1 (ko)
JP (1) JP2002541551A (ko)
KR (1) KR100722710B1 (ko)
CN (1) CN1185582C (ko)
GB (1) GB9907280D0 (ko)
TW (1) TW473663B (ko)
WO (1) WO2000060469A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434575B1 (en) * 1998-11-12 2002-08-13 International Business Machines Corporation Method of instrumenting garbage collection generating a trace file making a single pass analysis of object heap
US6883166B1 (en) * 2000-11-21 2005-04-19 Hewlett-Packard Development Company, L.P. Method and apparatus for performing correctness checks opportunistically
US6880153B1 (en) * 2000-11-21 2005-04-12 Hewlett-Packard Development Company, L.P. Method and apparatus for varying the level of correctness checks executed when performing correctness checks opportunistically using spare instruction slots
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US7401207B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7197521B2 (en) * 2003-11-21 2007-03-27 Intel Corporation Method and system performing concurrently mark-sweep garbage collection invoking garbage collection thread to track and mark live objects in heap block using bit vector
US7624137B2 (en) * 2004-01-05 2009-11-24 International Business Machines Corporation Method and apparatus for scheduling and performing garbage collection in a real-time system with guaranteed space bounds
US7287049B1 (en) * 2004-06-29 2007-10-23 Sun Microsystems, Inc. Tracking minimum mutator utilization (MMU) constraints in a garbage-collection system
KR100631782B1 (ko) 2004-07-27 2006-10-11 삼성전자주식회사 객체지향 어플리케이션에서의 효율적인 메모리 관리 방법및 장치
US7400585B2 (en) * 2004-09-23 2008-07-15 International Business Machines Corporation Optimal interconnect utilization in a data processing network
US20060173877A1 (en) * 2005-01-10 2006-08-03 Piotr Findeisen Automated alerts for resource retention problems
US7984084B2 (en) 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
EP1910928A2 (en) * 2005-08-03 2008-04-16 SanDisk Corporation Non-volatile memory with scheduled reclaim operations
US20070033240A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Scheduling garbage collection
US7765528B2 (en) * 2005-09-21 2010-07-27 Hewlett-Packard Development Company, L.P. Identifying sources of memory retention
US7756911B2 (en) * 2006-06-09 2010-07-13 International Business Machines Corporation Method and system for executing a task and medium storing a program therefor
US20080098191A1 (en) * 2006-10-20 2008-04-24 International Business Machines Corporation Determining code efficiency by monitoring memory reallocation
US7769976B2 (en) * 2006-12-12 2010-08-03 International Business Machines Corporation Identifying code that wastes virtual memory
US8037477B2 (en) * 2007-01-23 2011-10-11 Hewlett-Packard Development Company, L.P. Efficient detection of sources of increasing memory consumption
EP2335149A1 (en) 2008-09-08 2011-06-22 Bridgeco, Inc. Very long instruction word processor with multiple data queues
US8612493B2 (en) * 2008-10-30 2013-12-17 International Business Machines Corporation Allocation cache premarking for snap-shot-at-the-beginning concurrent mark-and-sweep collector
US8200718B2 (en) * 2009-07-02 2012-06-12 Roberts Michael L Parallelized, incremental garbage collector
WO2013101560A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Programmable predication logic in command streamer instruction execution
JP2015022504A (ja) * 2013-07-18 2015-02-02 富士通株式会社 情報処理装置、方法、及びプログラム
KR20150092644A (ko) * 2014-02-05 2015-08-13 삼성전자주식회사 가비지 컬렉션을 수행하기 위한 전자 장치 및 방법
US9520046B2 (en) * 2014-09-09 2016-12-13 Vivint, Inc. Refuse removal reminders
US9923576B2 (en) * 2014-09-16 2018-03-20 Cisco Technology, Inc. Decoding techniques using a programmable priority encoder
US10572181B2 (en) 2017-02-01 2020-02-25 Microsoft Technology Licensing, Llc Multiple stage garbage collector
US10628306B2 (en) 2017-02-01 2020-04-21 Microsoft Technology Licensing, Llc Garbage collector
CN117632379B (zh) * 2024-01-25 2024-03-26 大连高德瑞信科技有限公司 一种java内存堆栈数据分析方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210872A (en) * 1991-06-28 1993-05-11 Texas Instruments Inc. Critical task scheduling for real-time systems
US6052699A (en) * 1996-12-11 2000-04-18 Lucent Technologies Inc. Garbage collection without fine-grain synchronization
US5873104A (en) * 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with source and target instances of a partially relocated object

Also Published As

Publication number Publication date
JP2002541551A (ja) 2002-12-03
TW473663B (en) 2002-01-21
GB9907280D0 (en) 1999-05-26
EP1082662A1 (en) 2001-03-14
CN1306644A (zh) 2001-08-01
US6526421B1 (en) 2003-02-25
WO2000060469A1 (en) 2000-10-12
CN1185582C (zh) 2005-01-19
KR100722710B1 (ko) 2007-06-04

Similar Documents

Publication Publication Date Title
KR100722710B1 (ko) 폐영역 회수를 스케줄하는 방법
EP1668500B1 (en) Methods and apparatuses for thread management of multi-threading
US8612949B2 (en) Methods and apparatuses for compiler-creating helper threads for multi-threading
Oplinger et al. In search of speculative thread-level parallelism
Lea A java fork/join framework
US7194732B2 (en) System and method for facilitating profiling an application
JP2777496B2 (ja) コンピュータシステムにおいてマルチプロセスをプロファイリングする際の使用方法
US6854108B1 (en) Method and apparatus for deterministic replay of java multithreaded programs on multiprocessors
WO2007055889A1 (en) Facilitating communication and synchronization between main and scout threads
JP2006092532A (ja) 最近アクセスしたリソースのデータ局所性の増加
US7089403B2 (en) System and method for using hardware performance monitors to evaluate and modify the behavior of an application during execution of the application
Tian et al. Enhanced speculative parallelization via incremental recovery
Taura et al. Fine-grain multithreading with minimal compiler support—a cost effective approach to implementing efficient multithreading languages
Hu et al. The role of return value prediction in exploiting speculative method-level parallelism
Wisniewski et al. Performance and environment monitoring for whole-system characterization and optimization
Horowitz et al. Informing loads: Enabling software to observe and react to memory behavior
Schoeberl et al. Non-blocking object copy for real-time garbage collection
Ogasawara et al. EDO: Exception-directed optimization in Java
Ismail et al. Efficient nursery sizing for managed languages on multi-core processors with shared caches
Baker et al. Accurate garbage collection in uncooperative environments with lazy pointer stacks
Kim et al. Adaptive Compiler Directed Prefetching for EPIC Processors.
Govindarajan et al. SMALL: A Scalable Multithreaded Architecture to Exploit Large Localiy.
Kistler et al. The case for dynamic optimization: Improving memory-hierarchy performance by continuously adapting the internal storage layout of heap objects at run-time
Zhao et al. Optimizing chip multiprocessor work distribution using dynamic compilation
Li et al. Improving memory performance of embedded Java applications by dynamic layout modifications

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
LAPS Lapse due to unpaid annual fee