1 |
1
어플리케이션의 실행과 관련된 소스 코드를 중간 표현으로 컴파일하고, 상기 중간 표현에 기초하여 타겟 코드를 생성하고, 상기 어플리케이션과 관련된 하나 이상의 객체들 각각의 컨텍스트 정보를 포함하는 프로파일링 정보에 기초하여 상기 하나 이상의 객체들 각각의 데이터 액세스 패턴과 관련된 힌트 정보를 생성하고, 상기 힌트 정보를 상기 중간 표현에 선택적으로 삽입하여 상기 타겟 코드를 생성하는 컴파일러; 상기 타겟 코드에 기초하여 상기 어플리케이션을 실행시키는 런타임 모듈; 및상기 컴파일러와 연결되고, 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치 및 제2 메모리 장치를 포함하는 메모리 서브 시스템을 포함하고,상기 컴파일러는 상기 힌트 정보에 기초하여 상기 하나 이상의 객체들을 선택적으로 상기 제1 메모리 장치에 위치시켜 상기 하나 이상의 객체들에 대한 상기 제1 메모리 장치 및 상기 제2 메모리 장치 사이에서의 적응적 스와핑을 수행하는 하는 전자 장치
|
2 |
2
제1항에 있어서, 상기 컴파일러는,상기 소스 코드를 초기 중간 표현으로 컴파일하는 프런트엔드 모듈;상기 초기 중간 표현을 수신하고 상기 초기 중간 표현을 최적화하여 최종 중간 표현으로 컴파일하고, 상기 프로파일링 정보에 기초하여 상기 힌트 정보를 선택적으로 삽입하는 최적화 모듈; 상기 최종 중간 표현에 기초하여 상기 타겟 코드를 생성하고, 상기 힌트 정보를 출력하는 백엔드 모듈; 및상기 힌트 정보에 기초하여 상기 적응적 스와핑을 수행하는 스와핑 인터페이스를 포함하는 전자 장치
|
3 |
3
제2항에 있어서,상기 프로파일링 정보는 상기 어플리케이션이 수행될 때 호출되는 함수의 호출 경로 및 루프에 관련된 정보를 포함하는 상기 컨텍스트 정보에 기초한 상기 하나 이상의 객체들 각각이 할당받는 메모리의 사이즈 정보 및 상기 하나 이상의 객체들 각각의 액세스 횟수 정보를 포함하는 전자 장치
|
4 |
4
제3항에 있어서, 상기 최적화 모듈은 상기 사이즈 정보 및 상기 액세스 횟수 정보에 기초하여 상기 하나 이상의 객체들 각각의 우선 순위를 산출하고, 상기 산출된 우선 순위에 기초하여 상기 힌트 정보를 생성하는 전자 장치
|
5 |
5
제4항에 있어서,상기 최적화 모듈은 상기 사이즈 정보 및 상기 액세스 횟수 정보에 기초하여 상기 하나 이상의 객체들 각각이 상기 제1 메모리에 위치되는 경우, 상기 어플리케이션의 성능에 기초하여 상기 힌트 정보를 생성하는 전자 장치
|
6 |
6
제2항에 있어서, 상기 최적화 모듈은상기 초기 중간 표현에 대하여 상기 객체들 각각이 액세스하는 데이터의 액세스 패턴을 분석하여 데이터 액세스 패턴 정보를 포함하는 제1 중간 표현을 출력하는 데이터 액세스 패턴 프로파일러; 상기 제1 중간 표현을 수신하고, 상기 제1 중간 표현에 포함된 상기 데이터 액세스 패턴 정보에 기초하여 상기 액세스되는 데이터의 위치가 상기 제1 메모리 장치임을 나타내는 상기 힌트 정보를 상기 제1 중간 표현에 선택적으로 삽입하여 제2 중간 표현을 출력하는 힌트 삽입기; 및상기 제2 중간 표현에 포함되는 컨텍스트들의 적어도 일부를 상기 컨텍스트들 각각의 특성에 기초하여 병합하여 상기 최종 중간 표현을 제공하는 병합 모듈을 포함하는 전자 장치
|
7 |
7
제6항에 있어서, 상기 데이터 액세스 패턴 프로파일러는상기 제1 중간 표현 내의 루프 코드와 함수 호출 코드를 분석하여 상기 컨텍스트 정보를 포함하는 정적 초기 중간 표현을 출력하는 정적 프로파일러; 및상기 정적 초기 중간 표현을 수신하고, 상기 컨텍스트 정보에 기초하여 상기 객체들 각각의 데이터 액세스 패턴을 추출하여 상기 제1 중간 표현을 제공하는 동적 프로파일러를 포함하는 전자 장치
|
8 |
8
제6항에 있어서,상기 컨텍스트들 각각의 특성은 상기 컨텍스트들 각각의 수행 시간과 상기 컨텍스트들 각각의 데이터 액세스 패턴을 포함하는 전자 장치
|
9 |
9
제8항에 있어서, 상기 병합 모듈은 상기 컨텍스트들 각각의 수행 시간 및 상기 컨텍스트를 각각의 상기 데이터 액세스 패턴의 유사도에 기초하여 상기 컨텍스트들 중 적어도 일부를 병합하는 전자 장치
|
10 |
10
제2항에 있어서, 상기 제1 메모리 장치는 휘발성 메모리 장치이고, 상기 제2 메모리 장치는 비휘발성 메모리 장치 기반의 SSD(solid state drive)인 전자 장치
|
11 |
11
제10항에 있어서,상기 제1 메모리 장치는 DRAM이고 상기 제2 메모리 장치는 복수의 플래시 메모리 장치들을 포함하는 전자 장치
|
12 |
12
제10항에 있어서, 상기 스와핑 인터페이스는 상기 하나 이상의 객체들 중 상기 힌트 정보에 해당하는 객체를 상기 제1 메모리 장치에 위치시키는 전자 장치
|
13 |
13
제10항에 있어서, 상기 스와핑 인터페이스는 상기 제1 메모리 장치를 메인 메모리로 사용하고, 상기 제2 메모리 장치를 스왑 메모리로 사용하는 전자 장치
|
14 |
14
어플리케이션을 실행하는 전자 장치의 컴파일링 방법으로서,상기 어플리케이션의 실행과 관련된 컨텍스트 정보를 인지하는 단계;상기 어플리케이션의 실행과 관련된 소스 코드를 최초 중간 표현으로 컴파일링하는 단계;상기 컨텍스트 정보에 기초하여 상기 어플리케이션과 관련된 하나 이상의 객체들 각각의 데이터 액세스 패턴에 기초하여 상기 하나 이상의 객체들 각각을 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치 및 제2 메모리 장치 중 상기 제1 메모리 장치에 위치시키는 힌트 정보를 생성하고, 상기 힌트 정보를 상기 최초 중간 표현에 삽입하여, 상기 최초 중간 표현을 최종 중간 표현으로 컴파일링하는 단계; 및상기 최종 중간 표현에 기초하여 상기 어플리케이션을 실행할 타겟 코드를 생성하는 단계를 포함하는 전자 장치의 컴파일링 방법
|
15 |
15
전자 장치의 동작 방법으로서,어플리케이션의 실행과 관련된 소스 코드를 중간 표현으로 컴파일하면서, 상기 어플리케이션과 관련된 하나 이상의 객체들 각각의 컨텍스트 정보를 포함하는 프로파일링 정보에 기초하여 상기 하나 이상의 객체들 각각의 데이터 액세스 패턴과 관련된 힌트 정보를 생성하는 단계;상기 힌트 정보에 기초하여 상기 하나 이상의 객체들 을 선택적으로 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치 및 제2 메모리 장치 중 상기 제1 메모리 장치에 위치시키는 단계; 및상기 중간 표현에 기초하여 생성된 타겟 코드에 따라 상기 어플리케이션을 실행시키는 단계를 포함하는 전자 장치의 동작 방법
|
16 |
16
제15항에 있어서, 상기 제1 메모리 장치는 휘발성 메모리 장치이고, 상기 제2 메모리 장치는 비휘발성 메모리 장치 기반의 SSD이고,상기 제1 메모리 장치는 DRAM이고 상기 제2 메모리 장치는 복수의 플래시 메모리들을 포함하는 전자 장치의 동작 방법
|