KR101085763B1 - 멀티-프로세서 시스템에서의 메모리 할당 - Google Patents

멀티-프로세서 시스템에서의 메모리 할당 Download PDF

Info

Publication number
KR101085763B1
KR101085763B1 KR1020040045405A KR20040045405A KR101085763B1 KR 101085763 B1 KR101085763 B1 KR 101085763B1 KR 1020040045405 A KR1020040045405 A KR 1020040045405A KR 20040045405 A KR20040045405 A KR 20040045405A KR 101085763 B1 KR101085763 B1 KR 101085763B1
Authority
KR
South Korea
Prior art keywords
memory
processor
allocated
allocation request
allocation
Prior art date
Application number
KR1020040045405A
Other languages
English (en)
Other versions
KR20040111148A (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 KR20040111148A publication Critical patent/KR20040111148A/ko
Application granted granted Critical
Publication of KR101085763B1 publication Critical patent/KR101085763B1/ko

Links

Images

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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
    • 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

프로세스 및 관련 시스템이, 제어 입력에 기초하여 제1 프로세서에서 메모리의 일부를 사전 할당(pre-allocating)하고, 제2 프로세서에서 사전 할당된 메모리의 일부가 메모리 할당 요구를 만족시킬 수 있는지 여부를 판정하는 것을 포함한다. 또한, 사전 할당된 메모리의 일부가 메모리 할당 요구를 만족시킬 수 있으면, 메모리의 사전 할당된 부분을 할당 요구에 할당한다. 그러나, 사전 할당된 메모리의 일부가 메모리 할당 요구를 만족시킬 수 없으면, 제1 프로세서에서 메모리의 일부를 할당 요구에 할당한다.
제1 프로세서, 제2 프로세서, 사전 할당, 멀티-프로세서 시스템에서의 메모리 할당

Description

멀티-프로세서 시스템에서의 메모리 할당{MEMORY ALLOCATION IN A MULTI-PROCESSOR SYSTEM}
도 1은 본 발명의 양호한 실시예에 따른 시스템도를 도시하며, "JSM(Java Stack Machine)" 및 "MPU(Main Processor Unit)"을 포함한다.
도 2는 본 발명의 양호한 실시예에 따른 오브젝트 할당 프로시저를 나타내는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
102, 104 : 프로세서
106 : 메모리
108 : JVM(Java Virtual Machine)
110 : 컴파일러
114 : 디스플레이
본 발명은 통상 프로세서에 관한 것으로, 특히 프로세서와 관련된 메모리 관리에 관한 것이다.
많은 종류의 전자 기기들이 배터리로 구동되므로, 가능한 한 전력이 적게 소모되는 것이 바람직하다. 그 예로 셀룰러 폰이 있다. 또한, 셀 폰 등의 전자 기기에서 각종 멀티미디어 기능을 실현하는 것이 요구된다. 멀티미디어 기능의 예로서, 이에 제한되는 바는 아니지만, 게임, 오디오 디코더, 디지털 카메라 등이 있다. 따라서, 전자 기기에서 이러한 기능들이, 모두 동등한 조건이라면, 빠르고, 가능한 한 소비 전력이 적으며, 가능한 한 메모리를 덜 필요로 하는 방식으로 구현하는 것이 요구된다. 이러한 부분에 있어서의 향상이 요구된다.
몇몇 실시예에서는, 방법이 제어 입력에 기초하여 제1 프로세서에서 메모리의 일부를 사전 할당하고, 사전 할당된 메모리의 일부가 메모리 할당 요구를 만족시킬 수 있는 지 여부를 제2 프로세서에서 판정하는 것을 포함한다. 또한, 사전 할당된 메모리의 일부가 메모리 할당 요구를 만족시킬 수 있으면, 방법은 메모리의 사전 할당된 부분을 할당 요구에 할당하는 것을 포함한다. 그러나, 사전 할당된 메모리의 일부가 메모리 할당 요구를 만족시킬 수 없다면, 방법은 제1 프로세서에서 메모리의 일부를 할당 요구에 할당하는 것을 포함한다.
다른 실시예에서는, 시스템이 제1 프로세서, 제2 프로세서, 제1 및 제2 프로세서에 결합된 메모리 및 제1 프로세서에서 메모리의 일부를 사전 할당하고 초기화하는 제어 로직을 포함한다. 메모리의 사전 할당된 부분이 제2 프로세서에서 메모리 할당 요구를 만족시키는 것으로 존재하면, 제어 로직은 바람직하게는 메모리의 사전 할당된 부분을 메모리 할당 요구에 할당한다. 그러나, 메모리의 사전 할당된 부분이 메모리 할당 요구를 만족시키지 않는 것으로 존재하면, 제어 로직은 바람직하게는 제1 프로세서에서 메모리 할당 요구를 위한 메모리의 부분을 할당하고 초기화한다.
다음의 상세한 설명 및 특허 청구범위 전체를 통해 특정한 시스템 구성 요소를 지칭하는 특정한 용어가 사용된다. 당업자가 이해하는 바와 같이, 반도체 회사가 구성 요소를 서로 다른 명칭으로 언급하는 경우가 있을 수 있다. 본 명세서는 명칭은 서로 다르나 기능은 다르지 않은 구성 요소들을 구별하고자 하는 것은 아니다. 다음의 설명 및 특허 청구범위에서, "포함(including)" 및 "포함(comprising)"이라는 용어는 개방적인 의미로 사용되며, 따라서 "포함하나, 이에 제한되는 것은 아닌..."을 의미하는 것으로 해석되어야 한다. 또한, "결합(couple)" 또는 "결합들(couples)"이라는 용어도 간접 또는 직접 접속 중 하나를 의미하는 것으로 의도된다. 따라서, 제1 장치가 제2 장치에 접속되면, 그 접속은 직접적인 접속 또는 다른 장치 및 접속을 경유한 간접 접속일 수 있다.
지금부터, 본 발명의 양호한 실시예에 대한 보다 상세한 설명을 다음의 첨부된 도면을 참조하여 설명한다.
다음은, 본 발명의 다양한 실시예에 관한 설명이다. 하나 이상의 본 실시예들이 양호하지만, 여기에 개시된 실시예들은, 특정하지 않는 한, 특허 청구범위를 포함하여, 상세한 설명의 범주를 제한하는 것으로 해석되거나 이용되어서는 안된다. 또한, 당업자라면, 다음의 설명은 광범위한 응용 분야를 포함하며, 어떠한 실시예에 대한 설명도 그 실시예의 예시일 뿐이지, 청구범위를 포함하여 상세의 범주를 제한하고자 하는 것으로 의도되어서는 않된다.
여기에 개시된 서브젝트 매러는 스택-기반 랭귀지(예컨대, Java)와 관련된 프로그램이 저장될 수 있는 메모리를 구비한 프로세서 등의 프로그램가능 전자 기기에 관한 것이다. 프로그램은 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있는 "버추얼" 머신을 통해 실행될 수 있다. 버추얼 머신은 프로그램을 머신 코드(예컨대, Java bytecodes)로 변환할 수 있다.
스택 외에, 메모리의 일부가 자바 오브젝트의 저장을 위해 확보될 수 있다. 메모리의 이 일부는 클래스로 설명되는 필드값과 런타임에 의해 요구되는 메타-데이터를 포함한다 (예컨대, 자바 버추얼 머신). 메모리의 이 부분을 "힙(heap)"이라고 부를 수 있다. 자바 오브젝트가 생성되면, 오브젝트는 메모리의 힙에 할당된 다음 초기화될 수 있다. 자바 오브젝트가 초기화되면, 필드값이 그들 각각의 디폴트값으로 초기화되고, 메타 데이터가 런타임에 따라 초기화된다. 힙에 할당되는 메모리의 크기는 생성된 자바 오브젝트의 클래스와, 관련된 메타 데이터의 크기에 따라 달라질 수 있다. 본 명세서에서는, 자바 오브젝트의 초기화가 후속하는 메모리 할당 프로세스를 "오브젝트 할당"이라고 부른다.
전술한 오브젝트 할당 프로세스는 통상, 메모리의 일부가 동적 할당을 위해 확보되는 임의의 컴퓨터 프로그램에 적용될 수 있다. 메모리의 이 부분을 "힙"이라고 부를 수 있다. 메모리에 동적 할당이 요구되면, 힙 부분을 할당하여 가능하다면 초기화한다. 힙에 할당된 부분의 크기는 메모리를 요구하는 애플리케이션에 의해 결정된다. 본 명세서에서는, 이 메모리의 초기화가 후속하는 메모리 할당 프로세스를 "메모리 할당"이라고 한다.
다음으로, 오브젝트 할당 프로세스의 동작에 대해 설명한다. 프로세스는 "오브젝트"를 "메모리의 일부"로, "오브젝트의 클래스"를 "메모리의 일부와 관련된 크기"로 치환함에 의해 메모리 할당으로 쉽게 연장된다.
다음으로, 2개의 프로세서가 이용되는 시스템의 양호한 실시예의 동작에 대해 설명한다. 일반적으로, 제1 프로세서는 제2 프로세서에 의해 할당된 오브젝트와 함께 애플리케이션의 실행을 담당한다. 제2 프로세서는, 적어도 2개의 메커니즘 중 하나를 통해 제1 프로세서에 대해 오브젝트를 할당할 수 있다. 제1 메커니즘은 할당 요구에 앞서 오브젝트를 비동기적으로 할당한다. 이 메커니즘을 "사전 할당"이라고 한다. 제2 메커니즘은, 제1 프로세서로부터 요구가 들어왔을 때, 요구가 있는대로, 오브젝트를 동기적으로 할당한다. 이 메커니즘을 "동기 할당"이라고 한다. 동기 할당에 따라, 제1 프로세서로부터 제2 프로세서로의 요구에 의해 제2 프로세서에 인터럽트가 생기고, 이에 의해 제1 프로세서에서 지연이 발생한다. 따라서, 사전 할당이 동기 할당보다 보다 효율적일 수 있다. 그러나, 사전 할당 메커니즘에 따라 이전에 할당된 오브젝트는 특정한 클래스와 관련되어 있다. 제1 프로세서로부터의 오브젝트 할당 요구가, 오브젝트가 사전 할당된 특정 클래스와 관련이 있을 경우에만, 요구가 사전 할당 메커니즘을 사용할 수 있다. 사전 할당되지 않은 다른 클래스의 오브젝트와 관련된 요구는 사전 할당 메커니즘을 이용하지 않을 수 있다.
도 1을 참조하면, 본 발명의 양호한 실시예에 따른 시스템(100)이 도시되어 있다. 도시된 바와 같이, 시스템은 적어도 2개의 프로세서(102, 104)를 포함한다. 프로세서(102)는 설명을 위해 "JSM(Java Stack Machine)"을 말하며, 프로세서(104)는 "MPU(Main Processor Unit)"을 말한다. 시스템(100)은 또한 JSM(102) 및 MPU(104) 양쪽 모두에 접속된 메모리(106)를 포함하여, 두 프로세서 모두에 의해 액세스가 가능하다. 메모리(106)의 적어도 일부가, 2개의 프로세서 모두에 의해 공유되며, 이는 2개의 프로세서 모두가 동일한 공유 메모리 위치에 액세스할 수 있다는 것을 의미한다. 또한, 원한다면, 메모리(106)의 일부는 한 프로세서 또는 다른 프로세서에 개별적으로 지정될 수 있다. 시스템(100)은 또한 "JVM(Java Virtual Machine)"(108), 컴파일러(110) 및 디스플레이(114)를 포함할 수 있다. JSM(102)은 사용자가 시스템(100)의 각종 양상을 제어할 수 있게 하기 위해 키패드 등의 하나 이상의 입/출력("I/O") 장치에 대한 인터페이스를 포함하는 것이 바람직하다. 또한, I/O 스페이스로부터 데이터 스트림이 JSM(102)으로 수신되어, JSM(102)에 의해 처리될 수 있다. 필요에 따라 다른 구성 요소(구체적으로 도시되지 않음)가 포함될 수 있다.
여전히 도 1을 참조하면, 일반적으로 공지된 바와 같이, 자바 코드가 복수의 "바이트코드"(112)를 포함한다. 바이트코드(112)는 JVM(108)에 제공되어, 컴파일러(110)에 의해 컴파일링된 다음 JSM(102) 및/또는 MPU(104)에 실행을 위해 제공될 수 있다. 본 발명의 양호한 실시예에 따르면, JSM(102)은 적어도 몇몇, 일반적으로는 대부분의 자바 바이트코드를 실행할 수 있다. 그러나, 적당할 때, JSM(102) 이 MPU(104)에, JSM(102)에 의해 실행되지 않거나 실행 가능한 하나 이상의 자바 바이트코드를 실행할 것을 요구하는 경우가 있다. 자바 바이트코드의 실행 외에도, MPU(104)는 비-자바 명령(non-Java instructions)을 실행할 수 있다. MPU(104)는 또한 시스템 메모리 관리, JVM(108) 및 시스템에서 실행되는 대부분의 또는 모든 다른 원시적인 테스크를 스케쥴링하는 시스템 테스크 관리, 디스플레이(114)의 관리, 입력 장치로부터의 입력 수신 등의 각종 기능을 수행하는 오퍼레이팅 시스템("O/S")을 호스트한다. 제한적이지 않게, 자바 코드는 시스템(100) 내의 멀티미디어, 게임 또는 웹 기반 애플리케이션을 포함하여 각종 애플리케이션 중 임의의 하나를 수행하는데 이용되며, O/S 및 다른 원시적인 애플리케이션을 포함할 수 있는 비-자바가 코드가 MPU(104) 상의 시스템 상에서 여전히 실행될 수 있다.
JVM(108)은 통상 소프트웨어와 하드웨어의 조합을 포함한다. 소프트웨어는 컴파일러(110)를 포함하며, 하드웨어는 JSM(102)을 포함할 수 있다. JVM은 클래스 로더, 바이트코드 검증기, 가비지 수집기 및 JSM 프로세서(102)에 의해 실행되지 않은 바이트코드를 해석하기 위한 바이트코드 해석기 루프를 포함할 수 있다.
본 발명의 양호한 실시예에 따르면, JSM(102) 및 MPU(104) 내에 사전 할당 및 동기 오브젝트 할당을 수행하기 위한 각종 기능 엔티티를 포함하는 제어 로직이 존재한다. 이러한 각각의 엔티티는 요구 형태의 입력을 수신해서, 2개의 오브젝트 할당 메커니즘 중 하나와 관련된 기능을 수행하는 실행가능 루틴의 형태를 취한다. 루틴은 소프트웨어, 하드웨어 또는 이들의 조합으로 구현될 수 있다. 동기 오브젝 트 할당 메커니즘과 관련된 엔티티들에 대한 설명은 이하의 사전 할당 오브젝트 할당 메커니즘과 관련된 엔티티들에 대한 설명에 후속한다.
도 2를 참조하면, 3개의 엔티티가 사전 할당 오브젝트 할당 메커니즘과 관련된다. 제1 엔티티는 오브젝트 할당을 담당한다. 이 엔티티를 "사전 할당 오브젝트 생성기"(208)라고 부르며, 할당한 오브젝트를 "사전 할당 오브젝트"(206)라고 부른다.
사전 할당 메커니즘 동안에, 특정한 클래스와 관련된 오브젝트 할당 요구가 사전 할당 오브젝트 소비자(204)에 의해 수신될 수 있다. 사전 할당 오브젝트(206)는 요구된 클래스와 동일한 클래스의 오브젝트가 존재하는지 여부를 판정하기 위해 검사된다. 사전 할당 오브젝트(206) 내에 동일한 클래스의 오브젝트가 존재하면, 이 사전 할당 오브젝트가 요구에 할당된다.
사전 할당 오브젝트 생성기(208)는 "HotClass 모니터링"(218)이라고 불리는 오브젝트 할당에 대한 정보를 모니터하는 제2 엔티티로부터의 입력에 따라 특정한 클래스의 사전 할당 오브젝트를 생성한다. HotClass 모니터링(218)은 양호하게는 "휴리스틱(heuristic)"이라고 불리는 규칙을 이용하여, 사전 할당 오브젝트 생성기(208)에 의해 어떤 오브젝트가 생성되어야 하는지를 결정한다. (예컨대, 가장 빈번하게 할당된) 휴리스틱은 사전 할당 오브젝트 생성기(208)가 실례를 들어야 하는 특정 클래스를 결정하고, HotClass 모니터링(218)은 대응하는 신호("생성")를 사전 할당 오브젝트 생성기(208)에 송출한다. HotClass 모니터링(218)의 목적은 시스템 내에서 가장 설명되기 쉬운 클래스를 결정하는 것이다. HotClass 모니터링(218)의 휴리스틱은, 과거의 오브젝트 할당에 대한 정보를 이용한 후에, 사전 할당 오브젝트 생성기(208)에 생성 신호를 보내는 것이다.
휴리스틱에 의해 이용되는 오브젝트 할당에 대한 정보는 "프로파일링 데이터"(224)라고 불리는 공유 메모리에 저장된다. 프로파일링 데이터(224)는 메모리(106) 내에 저장된다 (도 1). HotClass 모니터링(218)은 프로파일링 데이터(224)에 액세스하여, 과거의 오브젝트 할당에 대한 정보를 검색하고, 이 정보를 휴리스틱에 패스한다. HotClass 모니터링(218)의 휴리스틱은 특정한 "가능성 있는" 클래스를 식별하는데 도움을 줄 수 있다. 이 클래스들의 아이덴티티는 사전 할당 오브젝트 생성기(208)에 의해 제공되며, 이에 따라 이들 클래스의 오브젝트들이 사전 할당된다.
본 발명의 다른 실시예에서는, 휴리스틱이 공유 프로파일링 데이터(224)를 이용하지 않을 수 있다. 그 대신에, 각종 엔티티로부터 HotClass 모니터링(218)으로 통지가 직접 송출된다. 통지는 시스템 내의 과거 오브젝트 할당에 관한 정보를 포함한다. 그 다음, HotClass 모니터링(218)의 휴리스틱은 이러한 통지의 빈도를 이용하여, 사적인 프로파일링 데이터를 구성하고, 사전 할당 오브젝트 생성기(208)가 어떤 오브젝트를 생성해야할 지를 결정할 수 있다.
사전 할당 오브젝트 생성기(208)에 의해 일단 오브젝트가 생성되면, 제3 엔티티는 사전 할당된 오브젝트(206)의 오브젝트를, 오브젝트 할당을 위한 요구에 할당하는 것을 담당한다. 이 엔티티를 "사전 할당 오브젝트 소비자"(204)라고 부른다. 사전 할당 오브젝트 소비자(204)는 자바 "새로운" 명령(202)을 수신할 수 있 다. "새로운" 명령(202)은 특정한 클래스에 대한 오브젝트 할당을 요구한다. 사전 할당 오브젝트 소비자(204)는 "새로운" 명령이 요구하고 있는 동일한 클래스의 오브젝트가 사전 할당된 오브젝트(206) 내에 존재하는지 여부를 판정한다. 적합한 오브젝트가 발견되면, 오브젝트는 사전 할당 오브젝트 소비자(204)에 의한 요구에 할당된다. 사전 할당 오브젝트 생성기(208)와 사전 할당 오브젝트 소비자(204) 간의 오브젝트의 교환은 사전 할당 오브젝트 메커니즘에 대한 기초로서 역할을 한다.
여전히 도 2를 참조하면, 사전 할당된 오브젝트(206)가 양호하게는 공유 메모리의 오브젝트 레퍼런스의 셋트 형태를 취하기 때문에, 코히어런시가 유지될 필요가 있을 수 있다.
오브젝트의 사전 할당을 담당하는 엔티티들 간에 동기화가 존재할 수 있다. 2개 타입의 동기화가 존재한다. 제1 타입은 사전 할당 오브젝트 생성기(208)와 사전 할당 오브젝트 소비자(204) 사이에서 사전 할당된 오브젝트(206)를 효율적으로 관리하는 동기화이다. 이 동기화는 2개의 별개의 잠재적인 행동들을 방지하는데 이용될 수 있다. 제1 행동은, 사전 할당 오브젝트 소비자(204)가 사전 할당된 오브젝트(206) 내의 몇몇 사전 할당된 오브젝트를 보지 않을 때이다. 제2 행동은, 사전 할당된 오브젝트(206) 내의 몇몇 사전 할당된 오브젝트의 손실이다. "강한" 동기화 기술이 사전 할당된 오브젝트(206) 내의 오브젝트 셋트를 극소적으로(atomically) 록(lock)하여, 사전 할당 오브젝트 생성기(208) 및 사전 할당 오브젝트 소비자(204) 모두 사전 할당된 오브젝트를 동시에 생성하거나 소비하지 않아, 둘 다 원치 않은 행동을 회피할 수 있다. "약한" 동기화 기술은 성능 을 향상시키기 위해 극소적으로 상기 셋트를 록하지 않을 수 있다. 가비지 콜렉션(garbage collection) 프로세스가 있다면, 약한 동기화가 이용될 수 있다. 제2 행동으로서 설명한 잠재적인 손실의 사전 할당된 오브젝트가 식별되어 관리된다. 약한 동기화 또는 강한 동기화 기술 중 하나가 이용될 수 있다.
다시 도 2를 참조하면, 동일한 사전 할당된 오브젝트를 별개의 요구에 할당하려고 시도하는 2개의 소비자로부터의 보호를 위해 제2 타입의 동기화가 사전 할당 오브젝트 소비자(204)에서 채용된다. 예를 들면, 2개의 동일한 "새로운" 명령이 JSM(102)에 제공될 수 있다. 사전 할당 오브젝트 소비자(204)는 사전 할당된 오브젝트(206)의 특정한 오브젝트에 제1 명령을 할당할 수 있다. 동일한 오브젝트에 제2 동일한 "새로운" 명령이 할당되어서는 않된다. 이러한 원치 않는 행동을 회피하기 위해 다양한 타입의 동기화 기술을 채용하는 것이 바람직하다.
본 발명의 양호한 실시예에 따르면, 2개의 부가 엔티티를 통해 동기화 오브젝트 할당이 달성된다. 다시 도 2를 참조하면, "오브젝트 할당 클라이언트"(210)라고 부르는 제1 오브젝트를 할당할 것을 동기식으로 요구한다. 오브젝트 할당 클라이언트(210)는 JSM(102)에서 구현되는 것이 바람직하다. "동기 오브젝트 할당기"(212)라고 부르는 제2 엔티티는 오브젝트 할당 클라이언트(210)에 의해 요구되는 오브젝트를 할당한다. 동기 오브젝트 할당기(212)는 양호하게는 요구된 오브젝트를 할당하기 위해, MPU(104)에 대한 인터럽트와 함께 오브젝트 할당 클라이언트(210)로부터 오브젝트 할당 요구를 수신한다.
본 발명의 양호한 실시예에 따르면, JSM(102)이 자바 "새로운" 명령을 포함 하는 바이트코드와 함께 제공되었을 때, 오브젝트 할당 요구가 사전 할당 오브젝트 소비자(204)에 송출된다. 사전 할당 오브젝트 소비자(204)는 사전 할당된 오브젝트(206)를 검사하여, "새로운" 명령에 의해 특정된 클리스의 오브젝트가 이미 사전 할당된 오브젝트(206)에 존재하는지 여부를 판정한다. 사전 할당된 오브젝트(206)를 검사한 후에, 후술하는 바와 같이 2개의 경우가 있을 수 있다.
첫 번째 경우는, 사전 할당된 오브젝트(206)에 "새로운" 명령에 의해 특정된 클래스의 오브젝트가 존재하지 않을 때이다. 이 경우에는, 사전 할당 오브젝트 메커니즘을 사용할 수 없다. 이 첫 번째 경우에는, 오브젝트 할당의 동기 메커니즘이 채용된다.
사전 할당 오브젝트 소비자(204)가, 사전 할당 오브젝트 소비자(204)로부터 "이용 가능한 오브젝트가 없다는 메시지"와 같이, 할당 요구에 대하여 사전 할당 오브젝트(206)에 이용 가능한 오브젝트가 없다고 판정하면, 오브젝트 할당 클라이언트(210)가 동기 오브젝트 할당기(212)에 동기 오브젝트 할당을 위한 AskObject 요구를 송출할 수 있다. 동기 오브젝트 할당기(212)는 양호하게는 GiveObject 응답(216)에 의해 AskObject 요구에 응답한다. 응답(216)은 양호하게는 요구에 대해 동기식으로 할당된 오브젝트의 레퍼런스를 포함한다.
동기 오브젝트 할당기(212)가 AskObject 요구(214)를 수신하면, 프로파일링 데이터(224)가, 사전 할당된 오브젝트(206) 내의 적당한 오브젝트의 부재를 반영하도록 조정되는 것이 바람직하다. HotClass 모니터링(218)은 채용된 휴리스틱 내에 조정된 프로파일링 데이터(224)를 통합하는 것이 바람직하다. 다른 실시예에서는, 동기 오브젝트 할당기(212)가 휴리스틱 내에 통지(228)를 통합할 수 있는 HotClass 모니터링(218)에 직접 통지(228)를 송출할 수 있다.
두 번째 경우는, 사전 할당 오브젝트 소비자(204)에서, 사전 할당된 오브젝트(206) 내에 "새로운" 명령에 의해 특정된 클래스의 오브젝트가 존재할 때 발생한다. 이 경우, 사전 할당 오브젝트 메커니즘이 채용된다. 사전 할당 오브젝트 소비자(204)는 사전 할당된 오브젝트(206)로부터 식별된 오브젝트를 제거한다.
사전 할당 오브젝트 소비자(204)에 의해, 사전 할당된 오브젝트(206) 내에 적당한 오브젝트가 존재한다고 판정된 후에, 프로파일링 데이터(224) 내의 데이터가 "오브젝트 소비 통지자"(222)라고 부르는 엔티티에 의해 조정되는 것이 바람직하다. 오브젝트 소비 통지자(222)는 사전 할당된 오브젝트(206) 내의 오브젝트가 소비되었음을 반영하도록 프로파일링 데이터(224)를 업데이트하는 것이 바람직하다. HotClass 모니터링(218)은 조정된 프로파일링 데이터(224)를 채용된 휴리스틱 내에 통합할 수 있다. 다른 실시예에서는, 비동기 통지(226)가 오브젝트 소비 통지자(222)로부터 HotClass 모니터링(218)에 직접 송출될 수 있고, HotClass 모니터링(218)이 통지(226)를 휴리스틱 내에 통합할 수 있다.
HotClass 모니터링(218)은 양호하게는 2개의 엔티티로부터 과거 오브젝트 할당에 관한 정보를 수신할 수 있다. 제1 엔티티, 오브젝트 소비 통지자(222)는 특정 클래스의 사전 할당된 오브젝트가 사용되었다는 것을 HotClass 모니터링(218)에 통지하는 것을 담당한다. 따라서, HotClass 모니터링(218) 내의 휴리스틱은 사전 할당 오브젝트 생성기(208)에 요구를 충족시키기 위해 동일한 클래스의 더 많은 오 브젝트 할당을 통보할 수 있다. 제2 엔티티로부터 수신된 정보, 동기 오브젝트 할당기(212)는, 특정한 클래스와 관련된 오브젝트 할당이 사전 할당된 오브젝트 할당 메커니즘을 이용하지 않았다는 것을 표시한다. HotClass 모니터링(218) 내의 휴리스틱은, 요구를 충족시키기 위해, 사전 할당 오브젝트 생성기(208)에 특정 클래스의 오브젝트를 생성할 것을 통보할 수 있다. HotClass 모니터링(228)의 휴리스틱은 이 정보를 통합하여, 보다 효율적인 사전 할당 메커니즘에 의해, 오브젝트 할당 사용의 수를 증가시키려고 시도한다.
HotClass 모니터링은, 타이머(230)에 따라 미리 규정된 인터벌에서 실행되는 것이 바람직하다. 또한, HotClass 모니터링은 미리 규정된 시간에 프로파일링 데이터(224)를 업데이트하기 위해 타이머(230)를 이용할 수 있다. 또한, HotClass 모니터링(218)의 휴리스틱은, 메모리 사용(232)으로부터의 메모리 이용 정보를 이용하여, 오브젝트 생성기(208)가 언제 또 어느 오브젝트를 생성해야할 지를 보다 효과적으로 결정한다.
상기한 상세를 일단 충분히 이해하면, 당업자에게는 많은 변동 및 수정이 있을 수 있다는 것이 명백할 것이다. 다음의 특허청구 범위는 이러한 모든 변동 및 수정을 포함하는 것으로 해석되어야 한다.
본원 발명에 의하면, HotClass 모니터링(218)의 휴리스틱에 의해 메모리 사용(232)으로부터의 메모리 이용 정보를 이용하여, 오브젝트 생성기(208)가 언제 또 어느 오브젝트를 생성해야할 지를 보다 효과적으로 결정할 수 있다.

Claims (16)

  1. 제어 입력에 기초하여 제1 프로세서에서 메모리의 일부를 사전 할당(pre-allocating)하는 단계; 및
    상기 사전 할당된 메모리의 일부가 메모리 할당 요구를 만족시킬 수 있는지 여부를 제2 프로세서에서 판정하는 단계 - 상기 사전 할당된 메모리의 일부 중 한 부분이 상기 메모리 할당 요구를 만족시킬 수 있으면, 상기 제2 프로세서에서 상기 사전 할당된 메모리의 일부를 상기 메모리 할당 요구에 배정하고, 상기 사전 할당된 메모리의 일부 중 어느 부분도 상기 메모리 할당 요구를 만족시킬 수 없으면, 상기 제1 프로세서에서 사전 할당되지 않은 메모리의 일부를 상기 메모리 할당 요구에 할당함 -;
    상기 제1 프로세서 및 상기 제2 프로세서에 의해 과거의 오브젝트 할당을 핫클래스(HotClass) 모니터링하는 단계; 및
    상기 핫클래스 모니터링에 기초하여 오브젝트 클래스 요건을 충족하도록 후속하는 사전 할당을 제어하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 사전 할당하는 단계 후에, 상기 제1 프로세서에서 상기 사전 할당된 메모리의 일부를 초기화하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 할당하는 단계는 할당된 상기 메모리의 일부를 초기화하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서, 상기 제어 입력은 크기 셋트를 포함하는 방법.
  5. 제4항에 있어서, 상기 제1 프로세서에서 메모리의 일부를 사전 할당하는 단계는, 메모리 할당 정보에 기초하여, 상기 제어 입력과 상기 크기 셋트를 연관시키도록 휴리스틱(heuristic)을 실행하는 단계를 더 포함하는 방법.
  6. 제5항에 있어서, 상기 휴리스틱의 실행은 타이머에 의해 지시되는 시각에 수행되는 방법.
  7. 제5항에 있어서, 상기 휴리스틱은 상기 제어 입력과 상기 크기 셋트를 연관시키기 위해 메모리 사용에 관한 정보를 이용하는 방법.
  8. 제5항에 있어서, 상기 메모리 할당 정보는 상기 제2 프로세서로부터 생성된, 상기 제1 프로세서에 대한 비동기 신호인 방법.
  9. 제5항에 있어서, 상기 메모리 할당 정보는 상기 제1 프로세서 및 상기 제2 프로세서에 의해 액세스 가능한 메모리 내에 저장되는 방법.
  10. 제1 프로세서;
    제2 프로세서; 및
    상기 제1 프로세서 및 제2 프로세서에 결합된 메모리
    를 포함하고,
    상기 제1 프로세서는 상기 메모리의 일부를 사전 할당 및 초기화하고,
    상기 제2 프로세서는, 메모리 할당 요구를 만족시키는 사전 할당된 메모리의 일부가 존재하면, 상기 사전 할당된 메모리의 일부를 상기 메모리 할당 요구에 배정하고,
    상기 메모리 할당 요구를 만족시키는 사전 할당된 메모리의 일부가 존재하지 않으면, 상기 제1 프로세서가 상기 메모리 할당 요구에 대하여, 메모리의 일부분을 할당 및 초기화하고,
    상기 제1 프로세서 및 상기 제2 프로세서에 의해 과거의 오브젝트 할당을 핫클래스(HotClass) 모니터링하고,
    상기 핫클래스 모니터링에 기초하여 오브젝트 클래스 요건을 충족하도록 후속하는 사전 할당을 제어하는
    것을 특징으로 하는 시스템.
  11. 제10항에 있어서, 상기 제1 프로세서 및 제2 프로세서는 약하게 동기화된 다수의 제어 로직 엔티티를 포함하는 시스템.
  12. 제10항에 있어서, 상기 제2 프로세서는 자바 컴플라이언트 하드웨어 또는 소프트웨어에서 구현되는 제어 로직을 포함하는 시스템.
  13. 사전 할당된 메모리의 일부의 소비자;
    사전 할당된 메모리의 일부의 생성기;
    상기 사전 할당된 메모리의 일부의 소비자와, 상기 사전 할당된 메모리의 일부의 생성기에 액세스 가능한 복수의 사전 할당된 메모리의 일부들;
    상기 사전 할당된 메모리의 일부의 소비자에 액세스 가능한 메모리의 일부의 할당 클라이언트; 및
    상기 메모리의 일부의 할당 클라이언트에 결합된 메모리의 일부의 동기 할당기
    를 포함하고,
    상기 할당 요구에 응답하여, 상기 사전 할당된 메모리의 일부의 소비자는, 상기 할당 요구에 응답하는 사전 할당된 메모리의 일부가 존재하는지 여부를 판정하고, 이러한 사전 할당된 메모리의 일부가 존재하면, 그 사전 할당된 메모리의 일부를 상기 할당 요구에 배당하고, 또는 상기 할당 요구에 응답하는 상기 사전 할당된 메모리의 일부가 존재하지 않으면, 상기 메모리의 일부의 할당 클라이언트는 상기 메모리의 일부의 동기 할당기에, 메모리의 일부가 할당되어, 상기 할당 요구에 배정되게 하라는 요구를 제출하고,
    상기 사전 할당된 메모리의 일부의 생성기 및 상기 사전 할당된 메모리의 일부의 소비자에 의해 과거의 오브젝트 할당을 핫클래스(HotClass) 모니터링하고,
    상기 핫클래스 모니터링에 기초하여 오브젝트 클래스 요건을 충족하도록 후속하는 사전 할당을 제어하는
    것을 특징으로 하는 시스템.
  14. 제13항에 있어서, 상기 사전 할당된 메모리의 일부의 생성기와 상기 사전 할당된 메모리의 일부의 소비자는 약하게 동기화되는 시스템.
  15. 제13항에 있어서, 상기 사전 할당된 메모리의 일부의 생성기가 휴리스틱을 포함하는 엔티티에 결합되는 시스템.
  16. 제13항에 있어서, 상기 할당 요구는 비동기 신호인 시스템.
KR1020040045405A 2003-06-19 2004-06-18 멀티-프로세서 시스템에서의 메모리 할당 KR101085763B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03291501.9 2003-06-19
EP03291501A EP1489507A1 (en) 2003-06-19 2003-06-19 Memory preallocation

Publications (2)

Publication Number Publication Date
KR20040111148A KR20040111148A (ko) 2004-12-31
KR101085763B1 true KR101085763B1 (ko) 2011-11-21

Family

ID=33396040

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040045405A KR101085763B1 (ko) 2003-06-19 2004-06-18 멀티-프로세서 시스템에서의 메모리 할당

Country Status (4)

Country Link
US (1) US7434021B2 (ko)
EP (1) EP1489507A1 (ko)
JP (1) JP2005011348A (ko)
KR (1) KR101085763B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392361B2 (en) * 2002-04-16 2008-06-24 Emc Corporation Generic reallocation function for heap reconstitution in a multi-processor shared memory environment
US7908454B2 (en) * 2007-06-26 2011-03-15 Microsoft Corporation Application-specific heap management
US8244954B2 (en) * 2008-10-10 2012-08-14 International Business Machines Corporation On-demand paging-in of pages with read-only file system
US8245013B2 (en) * 2008-10-10 2012-08-14 International Business Machines Corporation Mapped offsets preset ahead of process migration
ITMI20101415A1 (it) * 2010-07-29 2012-01-30 St Microelectronics Srl Circuiti integrati tracciabili e relativo metodo di produzione
US20120036301A1 (en) * 2010-08-03 2012-02-09 Caspole Eric R Processor support for filling memory regions
KR20140137573A (ko) * 2013-05-23 2014-12-03 한국전자통신연구원 데이터 분산 서비스 미들웨어의 쓰레드를 위한 메모리 관리 장치 및 방법
US8949491B1 (en) * 2013-07-11 2015-02-03 Sandisk Technologies Inc. Buffer memory reservation techniques for use with a NAND flash memory
US10725908B2 (en) 2018-08-10 2020-07-28 Microsoft Technology Licensing, Llc. Fast initialization of complex in-memory data structures

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0844564A2 (en) 1996-11-25 1998-05-27 Nortel Networks Corporation Memory manager system
US6453404B1 (en) 1999-05-27 2002-09-17 Microsoft Corporation Distributed data cache with memory allocation model

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367637A (en) * 1992-03-26 1994-11-22 International Business Machines Corporation Self-tuning virtual storage management for dedicated real-time computer system
US5387637A (en) * 1992-08-20 1995-02-07 Lisco, Inc. Golf ball core compositions
US5734865A (en) * 1995-06-07 1998-03-31 Bull Hn Information Systems Inc. Virtual local area network well-known port routing mechanism for mult--emulators in an open system environment
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US5920732A (en) * 1996-07-01 1999-07-06 Apple Computer, Inc. System for preallocating additional larger buffer sizes in accordance with packet sizes of discarded packets that can't be stored in existing preallocated buffer sizes
US6859862B1 (en) * 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US20020032844A1 (en) * 2000-07-26 2002-03-14 West Karlon K. Distributed shared memory management
US6571326B2 (en) * 2001-03-08 2003-05-27 Intel Corporation Space allocation for data in a nonvolatile memory
US7409517B2 (en) * 2001-10-01 2008-08-05 Oracle International Corporation Dynamic and automatic memory management
US6801990B2 (en) * 2001-10-29 2004-10-05 Sun Microsystems, Inc. Demand-based memory-block splitting
US7107596B2 (en) * 2002-03-14 2006-09-12 International Business Machines Corporation Statistically-triggered heuristics
US7376679B2 (en) * 2002-11-01 2008-05-20 Sun Microsystems, Inc. Facilitating delayed block allocation in a distributed file system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0844564A2 (en) 1996-11-25 1998-05-27 Nortel Networks Corporation Memory manager system
US6453404B1 (en) 1999-05-27 2002-09-17 Microsoft Corporation Distributed data cache with memory allocation model

Also Published As

Publication number Publication date
US20040268076A1 (en) 2004-12-30
US7434021B2 (en) 2008-10-07
EP1489507A1 (en) 2004-12-22
JP2005011348A (ja) 2005-01-13
KR20040111148A (ko) 2004-12-31

Similar Documents

Publication Publication Date Title
Golm et al. The JX Operating System.
KR101116615B1 (ko) 자바 가상 머신 상에서 이뤄지는 애플리케이션 및 스레드의자원 관리 시스템 및 방법
US6505286B1 (en) User specifiable allocation of memory for processes in a multiprocessor computer having a non-uniform memory architecture
RU2569805C2 (ru) Виртуальная архитектура неоднородной памяти для виртуальных машин
US7203941B2 (en) Associating a native resource with an application
JP4690437B2 (ja) ネットワークアプリケーションにおける通信方法、通信装置及びそのためのプログラム
JP6138774B2 (ja) コンピュータにより実行される方法及びコンピュータシステム
US20060026183A1 (en) Method and system provide concurrent access to a software object
Gracioli et al. Designing mixed criticality applications on modern heterogeneous mpsoc platforms
JP6370218B2 (ja) メモリ管理方法、コンピュータシステム、コンピュータプログラム及び記憶媒体
US7882505B2 (en) Method and apparatus for switching between per-thread and per-processor resource pools in multi-threaded programs
EP2485146A1 (en) System and method for providing hardware virtualization in a virtual machine environment
JP5980916B2 (ja) コンピュータにより実行される方法及びコンピュータシステム
Taura et al. An efficient implementation scheme of concurrent object-oriented languages on stock multicomputers
JP2022516486A (ja) リソース管理方法と装置、電子デバイス、及び記録媒体
JP2003167737A (ja) スタック使用方法
US6985976B1 (en) System, method, and computer program product for memory management for defining class lists and node lists for allocation and deallocation of memory blocks
KR101085763B1 (ko) 멀티-프로세서 시스템에서의 메모리 할당
JP2021530756A (ja) ポーズレスなガベージ・コレクションのための活性化フレームを表す方法および装置
KR100493893B1 (ko) 자바 프로그램에서 클래스 로딩 과정을 단축시키는 시스템및 방법
KR20040111149A (ko) 내장형 가비지 수집
JP4862770B2 (ja) 仮想計算機システムにおけるメモリ管理方式及びその方法、およびプログラム
CN108885565B (zh) 对游戏模式的操作系统支持
KR101140522B1 (ko) 객체 관리 시스템 및 방법
CN101303666A (zh) 一种嵌入式系统中内存资源的使用方法及装置

Legal Events

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

Payment date: 20141030

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 9