1 |
1
[n,∞] 모델 형태의 이종 레지스터 아키텍처를 갖는 프로세서에서 소스 코드를 입력받아 목적 코드를 생성하는 방법에 있어서,
(a) 추상적 구조 트리에서 노드의 계산 결과를 명령어의 용도에 따라 논리적으로 분류되는 레지스터 클래스에 저장하기 위해 필요한 비용을 나타내는 복수 개의 필드들을 포함하는 비용 리스트를 노드 전체에 대해 산출하는 단계; 및
(b) 상기 산출된 비용 리스트에 나타난 필드 비용을 바탕으로 상기 추상적 구조 트리를 구성하는 각각의 노드에 대응하는 명령어의 오퍼랜드가 저장될 레지스터 클래스를 상기 노드 전체에 대해 결정하는 단계를 포함하며,
상기 (a) 단계와 (b) 단계는, 명령어 선택 과정, 레지스터 할당 과정, 및 코드 스케줄링 과정을 포함하는 코드 생성 과정 중에서 명령어 선택 과정 동안에 수행되는 것을 특징으로 하는 이종 레지스터 아키텍처를 위한 코드 생성 방법
|
2 |
2
제1항에 있어서, 상기 레지스터 클래스는,
프로세서 P가 주어졌을 때, 상기 프로세서 P에서 정의된 모든 명령어들의 집합을 I={i1,i2,…,in}, 상기 프로세서의 모든 레지스터들의 집합을 R={r1,r2,…,rn}, ij∈I에 대한 모든 오퍼랜드들의 집합을 op(ij)={Oj1,Oj2,…,Oj2}라 한 경우, 오퍼랜드 Ojl(1≤l≤k)의 위치에 올 수 있는 모든 레지스터들의 집합인 Φl(ij)를 나타내는 것을 특징으로 하는 이종 레지스터 아키텍처를 위한 코드 생성 방법
|
3 |
3
제2항에 있어서, 상기 필드의 비용은,
(여기서, Cv(l)은 노드 v의 계산 결과를 l번째 레지스터 클래스에 저장하기 위한 최소 비용, cv(i)는 노드 v에서 명령어 i를 계산하기 위한 최소 비용, φd(i)는 명령어 i의 목적 오퍼랜드로 사용되는 레지스터 클래스, t(φd(i),l)은 목적 오퍼랜드의 데이터를 다른 명령어의 소스 오퍼랜드에 전달하기 위한 비용)와 같은 형태의 함수를 통해 산출되는 것을 특징으로 하는 이종 레지스터 아키텍처를 위한 코드 생성 방법
|
4 |
4
제3항에 있어서, 상기 함수 cV(i)는,
(여기서, e(i)는 명령어 i의 실제 실행 시간, cv(i)는 노드 v에서 명령어 i를 계산하기 위한 최소 비용, vj는 노드 v가 포함하는 하위 노드, φsj(i)는 명령어 i의 j번째 소스 오퍼랜드로 사용되는 레지스터 클래스, t(l,φsj(i))는 l번째 하위 노드 vj의 데이터를 명령어 i를 실행하는 노드 v의 j번째 소스 오퍼랜드에 전달하기 위한 비용)와 같은 형태의 함수를 통해 산출되는 것은 특징으로 하는 이종 레지스터 아키텍처를 위한 코드 생성 방법
|
5 |
5
제3항 또는 제4항에 있어서, 상기 함수 t()는,
(여기서, φs(i)가 명령어 i의 소스 오퍼랜드에 대한 레지스터 클래스, φd(j)가 명령어 j의 목적 오퍼랜드에 대한 레지스터 클래스, 레지스터 클래스 φd(j)에 저장된 데이터가 레지스터 클래스 φs(i)에 전달된다고 가정)와 같은 형태의 함수를 통해 산출되는 것을 특징으로 하는 이종 레지스터 아키텍처를 위한 코드 생성 방법
|