KR20010025111A - 불요정보 정리를 스케줄하는 방법 - Google Patents
불요정보 정리를 스케줄하는 방법 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 93
- 230000008569 process Effects 0.000 claims abstract description 93
- 230000015654 memory Effects 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims description 19
- 230000000694 effects Effects 0.000 claims description 7
- 230000010365 information processing Effects 0.000 description 7
- 238000012937 correction Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000010408 sweeping Methods 0.000 description 2
- 241000218645 Cedrus Species 0.000 description 1
- 241000286819 Malo Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
- Y10S707/99957—Garbage 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
이용할 수 있는 컴퓨터 프로세서 구조의 현재 세대는 명령 레벨 병렬계산에 대한 능력을 제공하고, 즉, 단일 클럭 사이클에서 다중의 동시발생하는 명령들의 실행을 제공한다. 그러한 프로세서에 대한 명령 발생(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)
- 소정수의 명령들을 동시에 실행할 수 있는 프로세서에 의해 현재 실행될 명령들을 스케줄하는 방법으로서,상기 방법은,제 3 프로세스에 주어진 소정의 규칙에 따라 제 1 및 제 2 프로세스로부터 명령들을 인터리브하는 단계와,상기 프로세서에 의해 제 1 시점에서 실행을 위해 상기 제 3 프로세스로부터 명령들을 스케줄하는 단계를 포함하고,상기 제 1 프로세스의 명령들은 메모리 힙에서 식별 포인터에 의해 링크된 데이터 오브젝트들을 포함하는 데이터 구조들을 발생시키고, 상기 제 2 프로세스는 상기 제 1 프로세스에 의해 미사용된 데이터 구조들에 할당된 메모리를 보정하고 상기 메모리 힙을 통하여 불요정보 정리 프로세스를 포함하는 단계를 포함하는, 스케줄링 방법.
- 제 1항에 있어서,소정의 규칙은 상기 제 1 프로세스로부터 명령들을 스케줄하고, 제 1 시점에서 동시 실행하도록 스케줄된 상기 소정수의 명령들보다 적은지를 결정하고, 만일 그렇다면, 제 1 시점에서 실행하기위해 제 2 프로세스로부터 명령들을 스케줄링하는 것을 포함하는, 스케줄링 방법.
- 제 1 항에 있어서,상기 소정의 규칙은 제 1 및 제 2 프로세스들로부터 명령들의 대체 세트들의 선택을 포함하는, 스케줄링 방법.
- 제 1항 내지 제 3항 중 어느 한 항에 있어서,상기 소정의 규칙은 상기 제 2 프로세스로부터 명령들을 스케줄하는 효과를 결정하는 단계와, 만일 해롭다면, 스케줄된 제 2 프로세스 명령들의 수를 감소시키는 단계를 포함하는, 스케줄링 방법.
- 식별 포인터에 의해 링크된 데이터 오브젝트들을 포함하는 데이터 구조를 포함하는 랜덤 액세스 메모리와 동시에 연결된 소정수의 명령들을 실행할 수 있는 프로세서를 구비하는 데이터 처리 장치로서,상기 저장된 다수의 데이터 오브젝트들에 동작에 관해 다음의 것,제 3 프로세스에 주어진 소정의 규칙에 따라 제 1 프로세스 및 제 2 프로세스로부터 명령들을 인터리브하는 제 1 수단들과,상기 프로세서에 의해 제 1 시점에서 실행하기 위해 제 3 프로세스로부터 명령들을 스케줄하는 제 2 수단들을 제공하도록 구성되는 상기 장치를 포함하고,제 1 프로세스의 명령들은 메모리 힙에서 상기 데이터 구조들을 발생시키고, 제 2 프로세스는 제 1 프로세스에 의해 미사용된 데이터 구조들에 할당된 메모리를 보정하고 메모리 힙을 트래버스하는 불요정보 정리 프로세스를 포함하는, 데이터 처리 장치.
- 제 5항에 있어서,상기 제 1 및 제 2 수단들은 상기 프로세서상에 명령들을 실행하는 프로그램 해석기를 포함하는, 데이터 처리 장치.
- 제 5항에 있어서,상기 제 1 및 제 2 수단들은 상기 프로세서상에 명령들을 실행하기 위한 프로그램 컴파일러를 포함하는, 데이터 처리 장치.
- 제 5항에 있어서,상기 제 1 및 제 2 수단들은 상기 프로세서에 현재 실행될 명령들을 어셈블하고 패스하는 명령 처리 수단들을 포함하는, 데이터 처리 장치.
- 제 1 항 내지 4항 중 어느 한 항의 상기 방법의 단계들을 실행하는 명령들의 하나 이상의 프로그램을 인코딩 및 기계에 의해 판독가능한, 프로그램 저장 장치.
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)
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)
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 |
-
1999
- 1999-03-31 GB GBGB9907280.3A patent/GB9907280D0/en not_active Ceased
-
2000
- 2000-03-09 WO PCT/EP2000/002077 patent/WO2000060469A1/en not_active Application Discontinuation
- 2000-03-09 JP JP2000609892A patent/JP2002541551A/ja not_active Withdrawn
- 2000-03-09 KR KR1020007013525A patent/KR100722710B1/ko not_active IP Right Cessation
- 2000-03-09 EP EP00912579A patent/EP1082662A1/en not_active Withdrawn
- 2000-03-09 CN CNB00800918XA patent/CN1185582C/zh not_active Expired - Fee Related
- 2000-03-15 TW TW089104709A patent/TW473663B/zh not_active IP Right Cessation
- 2000-03-29 US US09/537,822 patent/US6526421B1/en not_active Expired - Lifetime
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 |