KR100662846B1 - 데이터 처리 시스템 및 데이터 처리방법 - Google Patents

데이터 처리 시스템 및 데이터 처리방법 Download PDF

Info

Publication number
KR100662846B1
KR100662846B1 KR1020050107084A KR20050107084A KR100662846B1 KR 100662846 B1 KR100662846 B1 KR 100662846B1 KR 1020050107084 A KR1020050107084 A KR 1020050107084A KR 20050107084 A KR20050107084 A KR 20050107084A KR 100662846 B1 KR100662846 B1 KR 100662846B1
Authority
KR
South Korea
Prior art keywords
register
registers
program
static
value
Prior art date
Application number
KR1020050107084A
Other languages
English (en)
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 삼성전자주식회사
Priority to KR1020050107084A priority Critical patent/KR100662846B1/ko
Priority to US11/506,887 priority patent/US7660970B2/en
Priority to EP06122609A priority patent/EP1785857A3/en
Application granted granted Critical
Publication of KR100662846B1 publication Critical patent/KR100662846B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • 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
    • G06F8/4452Software pipelining
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Landscapes

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

Abstract

본 발명은 데이터 처리 시스템 및 데이터 처리방법에 관한 것이다. 본 데이터 처리방법에 의하면, 소정 프로그램에 포함된 변수들에 대한 레지스터 할당에서 필요한 정적 레지스터의 수 및 회전 레지스터의 수를 결정하고, 결정된 정적 레지스터의 수 및 회전 레지스터의 수에 기초하여 변수들에 레지스터를 할당하여 프로그램을 컴파일한다. 그리고, 컴파일 단계에서 결정된 회전 레지스터의 수에 대응하는 값을 특별 레지스터에 저장하고, 이를 기초로 레지스터의 논리 주소로부터 물리 주소를 구한다. 이에 의해, 소프트웨어 파이프라이닝된 루프를 위한 회전 레지스터의 수 및 정적 레지스터의 수를 동적으로 조절함으로써 레지스터 파일을 보다 효율적으로 사용할 수 있게 되고, 또한, 프로그램 수행 중 불필요한 스필/채움 코드 발생을 최소한으로 감소시킬 수 있다.
소프트웨어 파이프라이닝, 레지스터 파일, 회전 레지스터, 정적 레지스터

Description

데이터 처리 시스템 및 데이터 처리방법{Data processing system and method}
도 1(a) 및 도 1(b)는 소프트웨어 파이프라이닝 기법을 지원하기 위한 회전 레지스터 파일을 설명하기 위해 제공되는 도면,
도 2는 종래의 루프 가속기의 일예를 나타내는 도면,
도 3은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 블록도
도 4는 도 3의 주소번역부 및 레지스터 파일을 보다 상세히 나타낸 도면, 그리고,
도 5는 본 발명의 일 실시예예 따른 데이터 처리방법의 흐름도이다.
본 발명은 데이터 처리 시스템 및 데이터 처리방법에 관한 것으로서, 보다 상세하게는, 소프트웨어 파이프라이닝된 루프를 위한 회전 레지스터 파일의 수를 동적으로 조절할 수 있는 데이터 처리 시스템 및 데이터 처리방법에 관한 것이다.
일반적으로, 소정의 반복(iteration)횟수를 가지는 루프 프로그램(loop program)을 하나의 반복이 완료된 후 다음 반복을 순차적으로 수행하는 것보다는 소프트웨어 파이프라이닝을 적용하여 서로 다른 반복들을 병렬적으로 수행하는 것이 보다 적은 사이클에 루프 프로그램을 완료할 수 있게 된다.
그러나, 소프트웨어 파이프라이닝 기법을 적용할 경우 동일 변수(variable)의 생존 시간(life time)이 서로 다른 반복에서 중복될 수 있으며, 이 경우 서로 사용하는 레지스터가 충돌 되는 문제점이 있다. 예컨대, 도 1(a)에 도시한 바와 같이 OP1에서 생성된 값이 OP2에서 사용될 경우 레지스터(r13)에 의해 서로 통신될 수 있다. 그러나 레지스터 r13에 저장되는 값의 생존 시간이 루프의 n번째 반(iteration n)과 루프의 n+1번째 반복(iteration n+1)에서 중복되게 된다. 따라서, n번째 반복의 OP1에 의해서 생성된 값을 n번째 반복의 OP2가 사용하기 전에 n+1번째 반복의 OP1에서 생성된 값이 레지스터 r13에 새롭게 저장됨으로써 n번째 반복의 OP2는 틀린 값을 사용하게 되는 문제점이 있다.
이러한 문제를 해결하기 위해서 레지스터 재명명(renaming)이 필요하게 된다. 레지스터 재명명 방법은 소프트웨어적으로 레지스터 리네이밍을 지원하는 'Modulo Variable Expansion(MVE)'방법과 회전 레지스터 파일(Rotating Register File)을 사용하여 하드웨어적으로 지원하는 방법이 있다.
도 1(b)는 회전 레지스터 파일을 사용한 경우를 나타내는 도면이다. 도 1(b)를 참조하면, 명령어에서 정의된 논리 레지스터 번호와 베이스 레지스터에 저장된 현재의 반복횟수에 해당하는 값(RRB:Rotation Register Base)의 합을 새로운 레지스터 번호로 사용한다. 여기서, Wrap around 방식에 의해 RRB 값은 매 반복마다 1씩 증가 혹은 감소한다.
예컨대, 도 1(b)에서 n번째 반복에서 RRB가 7이라고 n+1번째 반복에서 RRB는 8이 된다. 따라서, n번째 반복에서 논리 레지스터 r13는 물리 레지스터 r20이 되고, n+1번째 반복에서 논리 레지스터 r13는 물리 레지스터 r21이 된다. 이에 의해, n번째 반복의 OP1에 의해서 생성된 값과 n+1번째 반복의 OP1에 의해서 생성된 값은 각각 다른 물리 레지스터 r20, r21에 쓰여지게 됨으로써 상기한 문제를 해결할 수 있다.
한편, 종래에는 레지스터 파일을 구성하는 정적 레지스터 수와 회전 레지스터 수가 하드웨어 설계시 고정되어 변경되지 않았다. 그러나, 프로그램 루프마다 요구되는 회전 레지스터의 수 및 정적 레지스터의 수가 다르기 때문에 루프 수행 시 필요한 레지스터가 부족한 경우가 발생할 수 있다. 이 경우, 레지스터에 저장되어 있는 값들을 임시로 메모리로 옮겼다가 다시 레지스터로 읽어오는 스필/채움(spill/fill)코드가 생성되어 시스템의 성능이 저하된다.
특히, 도 2에 나타낸 코스 그레인 루프 가속기(coarse-grain loop accelerator:40)는 메모리(45)로부터 데이터를 로드하거나 메모리(45)에 데이터를 저장하는 로드/저장 유닛을 모든 데이터 처리셀들이 포함하고 있지 않다. 따라서, 로드/저장 유닛을 포함하지 않은 데이터 처리셀(41)의 분산 레지스터 파일(RF)에서 스필/채움(spill/fill)코드가 생성된 경우, 데이터 처리셀(41)은 로드/저장 유닛을 구비하는 데이터 처리셀(42)를 통해서 데이터를 메모리(45)로부터 로드하거나 저장해야 하므로 가속기(40)의 성능 저하가 심각해지는 문제점이 있다.
따라서, 본 발명의 목적은 소프트웨어 파이프라이닝된 루프를 위한 회전 레지스터의 수 및 정적 레지스터의 수를 동적으로 조절함으로써 레지스터 파일을 보다 효율적으로 사용할 수 있는 데이터 처리 시스템 및 데이터 처리방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 데이터 처리방법은, 소정 프로그램에 포함된 변수들에 대한 레지스터 할당에서 필요한 정적 레지스터의 수 및 회전 레지스터의 수를 결정하고, 상기 결정된 정적 레지스터의 수 및 회전 레지스터의 수에 기초하여 상기 변수들에 레지스터를 할당하여 상기 프로그램을 컴파일하는 단계 및, 상기 컴파일링된 프로그램을 수행하는 단계를 포함한다.
여기서, 상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는, 상기 프로그램 수행 중에 발생하는 스필/필(spill/fill)코드 생성을 최소화할 수 있도록 결정되는 것이 바람직하다.
또한, 상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는 상기 프로그램에 포함된 루프마다 결정되는 것이 바람직하다.
또한, 상기 컴파일 단계는, 상기 프로그램에 포함된 변수들에 대한 레지스터 할당에서 필요한 정적 레지스터의 수 및 회전 레지스터의 수를 결정하는 단계와, 상기 결정된 정적 레지스터의 수와 회전 레지스터의 수에 기초하여 상기 변수들에 레지스터를 할당하는 단계 및, 상기 결정된 회전 레지스터의 수에 대응하는 값을 소정의 특별 레지스터에 저장하도록 하는 명령어를 상기 프로그램에 추가하는 단계 를 포함할 수 있다.
또한, 상기 프로그램 수행 단계는, 상기 회전 레지스터의 수에 대응하는 값을 상기 특별 레지스터에 저장하도록 하는 명령어를 실행하는 단계 및, 상기 특별 레지스터에 저장된 값을 기초로 레지스터의 논리 주소로부터 물리 주소를 구하는 단계를 포함할 수 있다.
또한, 상기 구해진 물리 주소에 대응하는 레지스터에 액세스하는 단계를 더 포함할 수 있다.
여기서, 상기 물리주소를 구하는 단계는, 상기 논리 주소와 상기 특별 레지스터에 저장된 값의 크기를 비교하는 단계 및, 상기 비교 결과, 상기 논리 주소가 상기 특별 레지스터에 저장된 값 미만인 경우 상기 논리 주소를 상기 물리 주소로 결정하는 단계를 포함한다.
또한, 상기 비교 결과, 상기 논리주소가 상기 특별 레지스터에 저장된 값 이상인 경우, 아래 수식에 의해 상기 물리주소를 결정하는 것이 바람직하다.
PR={(LR+RRB)%R}, PR은 상기 레지스터의 물리주소, LR은 상기 레지스터의 논리주소, RRB는 상기 베이스 레지스터에 저장된 현재의 반복 횟수에 해당하는 값, R은 상기 특별 레지스터에 저장된 값이며, %는 나머지 연산자이다.
상기 목적을 달성하기 위한 본 발명에 따른 데이터 처리 시스템은, 소정 프로그램에 포함된 변수들에 대한 레지스터 할당에서 필요한 정적 레지스터의 수 및 회전 레지스터의 수를 결정하고, 상기 결정된 정적 레지스터의 수 및 회전 레지스터의 수에 기초하여 상기 변수들에 레지스터를 할당하여 상기 프로그램을 컴파일하 는 컴파일러 및, 상기 정적 레지스터와 상기 회전 레지스터로 이루어진 레지스터 파일을 포함하고, 상기 컴파일링된 프로그램을 수행하는 프로세서를 포함한다.
여기서, 상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는, 상기 프로그램 수행 중에 발생하는 스필/필(spill/fill)코드 생성을 최소화할 수 있도록 결정되는 것이 바람직하다.
또한, 상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는 상기 프로그램에 포함된 루프마다 결정되는 것이 바람직하다.
또한, 상기 컴파일러는, 상기 결정된 회전 레지스터의 수에 대응하는 값을 소정의 특별 레지스터에 저장하도록 하는 명령어를 상기 프로그램에 추가하여 컴파일하는 것이 바람직하다.
여기서, 상기 프로세서는, 상기 회전 레지스터의 수에 대응하는 값을 저장하는 특별 레지스터와, 상기 회전 레지스터의 수에 대응하는 값을 상기 특별 레지스터에 저장하도록 하는 명령어를 실행하는 실행부 및, 상기 특별 레지스터에 저장된 값을 기초로 레지스터의 논리 주소로부터 물리 주소를 구하는 주소 번역부를 포함한다.
또한, 상기 주소 번역부는, 상기 베이스 레지스터에 저장된 현재의 반복횟수에 해당하는 값(RRB), 상기 레지스터의 논리주소(LR), 상기 특별 레지스터에 저장된 값(R)을 입력받아 아래 수학식에 의해 산출된 값(PR)을 출력하는 연산부; 상기 레지스터의 논리주소 및 상기 특별 레지스터에 저장된 값을 비교하는 비교부; 및, 상기 연산부에서 출력된 값과 상기 레지스터의 논리주소 중 하나를 상기 비교부의 비교 결과에 따라 선택적으로 출력하는 선택부;를 포함하는 것을 특징으로 하는 데이터 처리 시스템: PR={(LR+RRB)%R} 여기서, %는 나머지 연산자이다.
이하 첨부된 도면들을 참조하여 본 발명의 실시예를 보다 상세하게 설명한다. 다만, 본 발명을 설명함에 있어서, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략한다.
도 3은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 블록도이다.
도 3을 참조하면, 본 발명에 따른 데이터 처리 시스템은 프로세서(100), 버스(200) 및 메모리(300)를 포함한다. 메모리(300)는 운영체제(OS:310), 응용프로그램(320) 및 컴파일러(330)를 저장하며, 기타 데이터 처리 시스템에서 필요로 하는 데이터와 소프트웨어 등을 저장할 수 있으며, 버스(200)는 프로세서(100)와 메모리(300) 사이의 데이터 교환을 인터페이스하는 역할을 담당한다.
컴파일러(330)는 프로세서(100)에서 수행되어야 할 프로그램에 대한 컴파일을 수행한다. 즉, 컴파일러(330)는 C나 Java와 같은 고급 언어로 작성된 프로그램을 프로세서(100)에서 이해할 수 있는 기계어 명령으로 번역하는 역할을 담당하며, 소프트웨어 파이프라이닝을 적용하여 프로그램을 수행할 수 있도록 컴파일할 수 있다.
특히, 본 발명에 따른 컴파일러(330)는 프로그램에 포함된 변수들에 대한 레지스터 할당에서 필요한 정적 레지스터(static register:RFS)의 수 및 회전 레지스 터(rotating register:RFR)의 수를 소정 기준에 따라 결정하고, 이에 따라 레지스터를 각 변수에 할당하여 프로그램을 컴파일한다.
여기서, 컴파일러(330)는 정적 레지스터의 수(S) 및 회전 레지스터의 수(R)를 프로그램 수행 시 스필/채움 코드 생성이 최소화될 수 있도록 결정하는 것이 바람직하다. 또한, 컴파일러(300)는 정적 레지스터의 수(S) 및 회전 레지스터의 수(R)를 프로그램에 포함된 루프마다 스필/채움 코드가 최소로 발생하도록 각각 결정할 수 있다.
프로세서(100)는 컴파일러(330)에 의해 컴파일된 프로그램들을 수행하는 역할을 담당한다.
본 발명에 따른 프로세서(100)는 프로세서 코어(110), 주소 번역부(120), 일반 레지스터 파일(130) 및 특별 레지스터(140)를 포함한다.
프로세서 코어(110)는 메모리에 저장된 프로그램에 포함된 명령어를 패치하여 디코딩한 후 디코딩된 명령어를 실행하는 역할을 담당한다. 특히, 본 발명에 따른 프로세서 코어(110)는 프로그램 수행 중 회전 레지스터의 수(R)에 대응하는 값'R'을 특별 레지스터(140)에 저장한다. 본 실시예에서는 특별 레지스터를 하나만 도시하였으나 데이터 처리 시스템에 따라 다양한 용도로 사용되는 특별 레지스터를 더 포함할 수 있다.
또한, 프로세서 코어(110)는 주소번역부(120)에서 구해진 물리주소에 대응하는 레지스터에 액세스하여 해당 물리 레지스터에 연산 결과를 저장하거나 해당 물리 레지스터에 저장된 데이터를 이용하여 연산을 수행한다.
일반 레지스터 파일(130)은 연산 결과의 임시 저장, 산술 및 논리 연산, 주소 색인 등의 여러 가지 목적으로 사용될 수 있으며, 본 발명에서 일반 레지스터 파일(130)은 정적 레지스터 파일과 회전 레지스터 파일로 구분할 수 있다.
정적 레지스터 파일은 프로그램 루프 수행 시 각 반복(iteration)에서 생존 시간이 중복되지 않는 변수들을 저장하는데 할당될 수 있으며, 회전 레지스터 파일은 생존 시간이 중복되는 변수들에 할당될 수 있다. 여기서, 일반 레지스터 파일(130)의 총 수가 N개이고 회전 레지스터의 수가 R개이면, 정적 레지스터의 수는 N-R개이다.
주소번역부(120)는 명령어에 포함된 레지스터의 논리주소를 물리주소로 번역하는 역할을 담당한다. 도 4를 참조하여 본 발명에 따른 주소번역부(120)와 일반 레지스터 파일(130)에 대해서 보다 자세하게 설명한다.
먼저, 일반 레지스터 파일(130)은 상기한 바와 같이 회전 레지스터 파일(131)과 정적 레지스터 파일(133)로 나눌 수 있다. 회전 레지스터 파일(131)은 레지스터 r0 ~ rR-1이며, 정적 레지스터 파일(133)은 레지스터 rR-1 ~ rN-1이다. 즉, 특별 레지스터(140)에 저장된 R값에 따라 정적 레지스터로 사용되는 레지스터의 수와 회전 레지스터로 사용되는 레지스터의 수는 변동될 수 있다. 이와 같이, 정적 레지스터의 수와 회전 레지스터의 수가 변동될 때 해당 레지스터의 물리주소를 구하기 위해서는 아래와 같은 주소번역부(120)가 필요하게 된다.
주소번역부(120)는 연산부(121), 비교부(123) 및 선택부(125)를 포함한다.
연산부(121)는 일반 레지스터 파일(130)의 회전 레지스터 수(R), 베이스 레지스터에 저장된 현재의 반복에 해당하는 값(RRB), 레지스터의 논리주소(LR), 특별 레지스터에 저장된 값(R)을 입력받아 아래 수학식에 의해 산출된 값(PR)을 출력한다.
PR={(LR+RRB)%R}
여기서, %는 나머지 연산자이다.
비교부(123)는 레지스터의 논리주소(LR)와 특별 레지스터에 저장된 값(R)을 입력받아 비교한다. 레지스터의 논리주소(LR)이 R값 미만일 경우, 비교부(123)는 선택부(125)에 연산부(121)에서 출력된 값을 레지스터의 물리주소(PR)로 출력하도록 하는 제어신호를 보낸다. 반대로 레지스터의 논리주소(LR)이 R값 이상일 경우, 비교부(123)는 레지스터의 논리주소(LR)를 바로 출력하도록 하는 제어신호를 선택부(125)에 보낸다.
선택부(125)는 멀티플렉서로 구현할 수 있으며, 연산부(121)에서 출력된 값과 레지스터의 논리주소 중 하나를 비교부(123)의 비교 결과에 따라 선택적으로 출력한다.
상기와 같은 구성에 의해, 본 발명에 따른 데이터 처리 시스템은 일반 레지스터 파일에서 정적 레지스터의 수와 회전 레지스터의 수를 프로그램 루프마다 최적화하여 변동시키면서 사용할 수 있다.
전술한 바와 같이, 도 4에서는 일반 레지스터 파일(130)에서 회전 레지스터 파일(131) 및 정적 레지스터 파일(133)이 회전 레지스터 파일(131), 정적 레지스터 파일(133)의 순서로 배치되는 것을 예시하였으나, 이는 반드시 여기에 한정되는 것은 아니다.
예를 들어, 일반 레지스터 파일(130)에서 정적 레지스터 파일(133), 회전 레지스터 파일(131)의 순서로 배치될 경우, 정적 레지스터 파일(133)은 레지스터 r 0 ~ r s-1 이고, 회전 레지스터 파일(131)은 레지스터 r s ~ r N-1 이 된다. 또한, 프로세서 코어(110)는 프로그램 수행 중 정적 레지스터의 수(S)에 대응하는 값'S'를 특별 레지스터(140)에 저장한다. 이와 같은 경우, 수학식 1의 레지스터의 물리주소(PR)은 수학식 2와 같이 변형될 수 있다.
PR={( LR + RRB -S)%(N-S)}+S
여기서, %는 나머지 연산자이다.
도 5는 본 발명의 일 실시예에 따른 데이터 처리 시스템의 데이터 처리방법의 일 예를 나타내는 흐름도이다.
도 5를 참조하면, 먼저, 컴파일러(330)는 실행 대상 프로그램을 소프트웨어 파이프라이닝을 사용하여 수행할 수 있도록 컴파일 할 때 필요한 정적 레지스터의 수와 회전 레지스터의 수를 결정해서 프로그램을 컴파일한다(S400).
보다 자세하게는, 컴파일러(330)는 프로그램에 포함된 변수들에 대한 레지스 터 할당에서 필요한 정적 레지스터의 수 및 회전 레지스터의 수(R)를 프로그램 수행 중에 스필/필(spill/fill)코드 생성이 최소화될 수 있도록 결정한다(S410). 여기서, 정적 레지스터의 수 및 회전 레지스터의 수는 프로그램에 포함된 루프마다 각각 결정하는 것이 바람직하다.
다음으로, 컴파일러(330)는 결정된 정적 레지스터의 수와 회전 레지스터의 수에 기초하여 변수들에 레지스터를 할당한다(S420). 이후, 컴파일러(330)는 S410 단계에서 결정된 회전 레지스터의 수(R)에 대응하는 값을 특별 레지스터(140)에 저장하도록 하는 명령어를 프로그램에 추가하고 컴파일을 완료한다(S430).
다음으로, 프로세서(100)는 컴파일러(330)에 의해 S400 단계에서 컴파일된 프로그램을 수행한다(S500).
보다 자세하게는, 먼저, 프로세서(100)는 메모리(300)에 저장된 명령어를 패치하여 디코딩한다(S510). 디코딩된 명령어가 R값을 특별 레지스터(140)에 저장하도록 하는 명령어인 경우(S520-Y), 프로세서(100)는 R값을 특별 레지스터에 저장한다(S530).
한편, 주소번역부(120)는 레지스터의 논리주소(LR)와 특별 레지스터(140)에 저장된 값의 크기를 비교한다(S540).
비교 결과 논리주소(LR)가 특별 레지스터에 저장된 값(R)이상인 경우 정적 레지스터인 것을 의미하므로(S540-N), 주소번역부(120)는 논리주소(LR)를 그대로 물리주소(PR)로 결정한다(S560). 즉, 본 단계에서 구해진 물리주소에 의해서는 일반 레지스터 파일(130)의 정적 레지스터에 액세스할 수 있다.
반대로, 논리주소(LR)가 상기 특별 레지스터에 저장된 값(R) 미만인 경우 회전 레지스터인 것을 의미하므로(S540-Y), 주소번역부(120)는 상기한 수학식 1에 의해 물리주소를 결정한다(S550). 본 단계에서는 회전 레지스터의 물리주소가 구해진다. 즉, 본 단계에서 구해진 물리주소에 의해서는 일반 레지스터 파일(130)의 회전 레지스터에 액세스할 수 있다.
다음으로, 프로세서 코어(110)는 주소번역부(140)에서 번역된 물리주소에 해당하는 정적 레지스터 또는 회전 레지스터에 액세스하여 데이터를 저장하거나 해당 레지스터에 저장되어 있는 데이터를 이용하여 명령어를 실행한다(S570).
마지막으로, 프로세서(100)는 프로그램 실행이 완료될 때까지(S580), S510 단계 내지 S570 단계를 반복하여 수행한다.
이상에서 설명한 바와 같이, 본 발명에 의하면, 소프트웨어 파이프라이닝된 루프를 위한 회전 레지스터의 수 및 정적 레지스터의 수를 동적으로 조절함으로써 레지스터 파일을 보다 효율적으로 사용할 수 있게 되는 장점이 있다.
또한, 프로그램 수행 중 불필요한 스필/채움 코드 발생을 최소한으로 감소시킬 수 있는 효과가 있다.
이상에서는 본 발명의 바람직한 실시예에 대해서 도시하고 설명하였으나, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청 구범위 기재의 범위 내에 있게 된다.

Claims (14)

  1. 소정 프로그램에 포함된 변수들에 대한 레지스터 할당에서 필요한 정적 레지스터의 수 및 회전 레지스터의 수를 결정하고, 상기 결정된 정적 레지스터의 수 및 회전 레지스터의 수에 기초하여 상기 변수들에 레지스터를 할당하여 상기 프로그램을 컴파일하는 단계; 및,
    상기 컴파일링된 프로그램을 수행하는 단계; 를 포함하는 것을 특징으로 하는 데이터 처리방법.
  2. 제 1 항에 있어서,
    상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는,
    상기 프로그램 수행 중에 발생하는 스필/필(spill/fill)코드 생성을 최소화할 수 있도록 결정되는 것을 특징으로 하는 데이터 처리방법.
  3. 제 2 항에 있어서,
    상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는 상기 프로그램에 포함된 루프마다 결정되는 것을 특징으로 하는 데이터 처리방법.
  4. 제 2 항에 있어서, 상기 컴파일 단계는,
    상기 프로그램에 포함된 변수들에 대한 레지스터 할당에서 필요한 정적 레지스터의 수 및 회전 레지스터의 수를 결정하는 단계;
    상기 결정된 정적 레지스터의 수와 회전 레지스터의 수에 기초하여 상기 변수들에 레지스터를 할당하는 단계; 및,
    상기 결정된 회전 레지스터의 수에 대응하는 값을 소정의 특별 레지스터에 저장하도록 하는 명령어를 상기 프로그램에 추가하는 단계; 를 포함하는 것을 특징으로 하는 데이터 처리방법.
  5. 제 4 항에 있어서, 상기 프로그램 수행 단계는,
    상기 회전 레지스터의 수에 대응하는 값을 상기 특별 레지스터에 저장하도록 하는 명령어를 실행하는 단계; 및,
    상기 특별 레지스터에 저장된 값을 기초로 레지스터의 논리 주소로부터 물리 주소를 구하는 단계; 를 포함하는 것을 특징으로 하는 데이터 처리방법.
  6. 제 5 항에 있어서,
    상기 구해진 물리 주소에 대응하는 레지스터에 액세스하는 단계; 를 더 포함하는 것을 특징으로 하는 데이터 처리방법.
  7. 제 6 항에 있어서, 상기 물리주소를 구하는 단계는,
    상기 논리 주소와 상기 특별 레지스터에 저장된 값의 크기를 비교하는 단계; 및,
    상기 비교 결과, 상기 논리 주소가 상기 특별 레지스터에 저장된 값 이상인 경우 상기 논리 주소를 상기 물리 주소로 결정하는 단계; 를 포함하는 것을 특징으로 하는 데이터 처리방법.
  8. 제 7 항에 있어서,
    상기 비교 결과, 상기 논리주소가 상기 특별 레지스터에 저장된 값 이상인 경우, 아래 수식에 의해 상기 물리주소를 결정하는 것을 특징으로 하는 데이터 처리방법:
    PR={(LR+RRB)%R}
    여기서, PR은 상기 레지스터의 물리주소, LR은 상기 레지스터의 논리주소, RRB는 상기 베이스 레지스터에 저장된 현재의 반복 횟수에 해당하는 값, R은 상기 특별 레지스터에 저장된 값이며, %는 나머지 연산자이다.
  9. 소정 프로그램에 포함된 변수들에 대한 레지스터 할당에서 필요한 정적 레지스터의 수 및 회전 레지스터의 수를 결정하고, 상기 결정된 정적 레지스터의 수 및 회전 레지스터의 수에 기초하여 상기 변수들에 레지스터를 할당하여 상기 프로그램을 컴파일하는 컴파일러; 및,
    상기 정적 레지스터와 상기 회전 레지스터로 이루어진 레지스터 파일을 포함하고, 상기 컴파일링된 프로그램을 수행하는 프로세서; 를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  10. 제 9 항에 있어서,
    상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는,
    상기 프로그램 수행 중에 발생하는 스필/필(spill/fill)코드 생성을 최소화할 수 있도록 결정되는 것을 특징으로 하는 데이터 처리 시스템.
  11. 제 9 항에 있어서,
    상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는 상기 프로그램에 포함된 루프마다 결정되는 것을 특징으로 하는 데이터 처리 시스템.
  12. 제 9 항에 있어서, 상기 컴파일러는,
    상기 결정된 회전 레지스터의 수에 대응하는 값을 소정의 특별 레지스터에 저장하도록 하는 명령어를 상기 프로그램에 추가하여 컴파일하는 것을 특징으로 하는 데이터 처리 시스템.
  13. 제 12 항에 있어서, 상기 프로세서는,
    상기 회전 레지스터의 수에 대응하는 값을 저장하는 특별 레지스터;
    상기 회전 레지스터의 수에 대응하는 값을 상기 특별 레지스터에 저장하도록 하는 명령어를 실행하는 실행부; 및,
    상기 특별 레지스터에 저장된 값을 기초로 레지스터의 논리 주소로부터 물리 주소를 구하는 주소 번역부; 를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  14. 제 13 항에 있어서, 상기 주소 번역부는,
    상기 베이스 레지스터에 저장된 현재의 반복횟수에 해당하는 값(RRB), 상기 레지스터의 논리주소(LR), 상기 특별 레지스터에 저장된 값(R)을 입력받아 아래 수학식에 의해 산출된 값(PR)을 출력하는 연산부;
    상기 레지스터의 논리주소 및 상기 특별 레지스터에 저장된 값을 비교하는 비교부; 및,
    상기 연산부에서 출력된 값과 상기 레지스터의 논리주소 중 하나를 상기 비교부의 비교 결과에 따라 선택적으로 출력하는 선택부; 를 포함하는 것을 특징으로 하는 데이터 처리 시스템:
    PR={(LR+RRB)%R}
    여기서, %는 나머지 연산자이다.
KR1020050107084A 2005-11-09 2005-11-09 데이터 처리 시스템 및 데이터 처리방법 KR100662846B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020050107084A KR100662846B1 (ko) 2005-11-09 2005-11-09 데이터 처리 시스템 및 데이터 처리방법
US11/506,887 US7660970B2 (en) 2005-11-09 2006-08-21 Register allocation method and system for program compiling
EP06122609A EP1785857A3 (en) 2005-11-09 2006-10-19 Data processing system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050107084A KR100662846B1 (ko) 2005-11-09 2005-11-09 데이터 처리 시스템 및 데이터 처리방법

Publications (1)

Publication Number Publication Date
KR100662846B1 true KR100662846B1 (ko) 2007-01-02

Family

ID=37546783

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050107084A KR100662846B1 (ko) 2005-11-09 2005-11-09 데이터 처리 시스템 및 데이터 처리방법

Country Status (3)

Country Link
US (1) US7660970B2 (ko)
EP (1) EP1785857A3 (ko)
KR (1) KR100662846B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140126192A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8191324B2 (en) * 2007-07-23 2012-06-05 Arne Wallin Modular pre-cast composite flooring panel and floor system
US9009692B2 (en) * 2009-12-26 2015-04-14 Oracle America, Inc. Minimizing register spills by using register moves
KR20140122564A (ko) * 2013-04-10 2014-10-20 삼성전자주식회사 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법
KR102545176B1 (ko) 2015-11-16 2023-06-19 삼성전자주식회사 레지스터 관리 방법 및 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040081379A (ko) * 2003-03-13 2004-09-21 노스랍 그루만 코포레이션 극한 파이프라인 및 최적화된 재배열 기술

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0676691A3 (en) * 1994-04-06 1996-12-11 Hewlett Packard Co Device for saving and restoring registers in a digital computer.
US6230317B1 (en) * 1997-07-11 2001-05-08 Intel Corporation Method and apparatus for software pipelining of nested loops
US6321330B1 (en) * 1999-05-28 2001-11-20 Intel Corporation Each iteration array selective loop data prefetch in multiple data width prefetch system using rotating register and parameterization to avoid redundant prefetch
US6507947B1 (en) * 1999-08-20 2003-01-14 Hewlett-Packard Company Programmatic synthesis of processor element arrays
GB0002848D0 (en) 2000-02-08 2000-03-29 Siroyan Limited Communicating instruction results in processors and compiling methods for processors
US6651247B1 (en) * 2000-05-09 2003-11-18 Hewlett-Packard Development Company, L.P. Method, apparatus, and product for optimizing compiler with rotating register assignment to modulo scheduled code in SSA form
TW525091B (en) * 2000-10-05 2003-03-21 Koninkl Philips Electronics Nv Retargetable compiling system and method
US20020144092A1 (en) * 2001-01-31 2002-10-03 Siroyan Limited. Handling of loops in processors
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US6986131B2 (en) * 2002-06-18 2006-01-10 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient code generation for modulo scheduled uncounted loops
US20030237080A1 (en) * 2002-06-19 2003-12-25 Carol Thompson System and method for improved register allocation in an optimizing compiler
US7316012B2 (en) * 2003-09-29 2008-01-01 Intel Corporation System, method, and apparatus for spilling and filling rotating registers in software-pipelined loops
US7617496B2 (en) * 2004-04-23 2009-11-10 Apple Inc. Macroscalar processor architecture
US7395419B1 (en) * 2004-04-23 2008-07-01 Apple Inc. Macroscalar processor architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040081379A (ko) * 2003-03-13 2004-09-21 노스랍 그루만 코포레이션 극한 파이프라인 및 최적화된 재배열 기술

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140126192A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법
KR101998278B1 (ko) * 2013-04-22 2019-10-01 삼성전자주식회사 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법

Also Published As

Publication number Publication date
US7660970B2 (en) 2010-02-09
EP1785857A3 (en) 2009-01-28
EP1785857A2 (en) 2007-05-16
US20070169032A1 (en) 2007-07-19

Similar Documents

Publication Publication Date Title
US5689712A (en) Profile-based optimizing postprocessors for data references
US7603546B2 (en) System, method and apparatus for dependency chain processing
US5303357A (en) Loop optimization system
US7103881B2 (en) Virtual machine to provide compiled code to processing elements embodied on a processor device
JP3180075B2 (ja) 異なる命令コード相互間の動的変換装置及び方法
US5721927A (en) Method for verifying contiquity of a binary translated block of instructions by attaching a compare and/or branch instruction to predecessor block of instructions
JP3601341B2 (ja) 並列プログラム生成方法
US7007271B2 (en) Method and apparatus for integrated instruction scheduling and register allocation in a postoptimizer
US8893104B2 (en) Method and apparatus for register spill minimization
KR100662846B1 (ko) 데이터 처리 시스템 및 데이터 처리방법
JPH11288376A (ja) キャッシュにおけるコ―ド変換方法
CN111399990A (zh) 解释执行智能合约指令的方法及装置
GB2308470A (en) Bit-width reduction of processor instructions
Gerzhoy et al. Nested mimd-simd parallelization for heterogeneous microprocessors
US6954927B2 (en) Hardware supported software pipelined loop prologue optimization
US8549466B2 (en) Tiered register allocation
KR101670916B1 (ko) 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치
Bordawekar et al. E cient compilation of out-of-core data parallel programs
KR100478463B1 (ko) 응용 프로그램의 동적링크 방법
Huynh et al. Evaluation of offset assignment heuristics
US11947963B2 (en) Computing resource management with fast sorting using vector instructions
Bernstein et al. Usable assembly language for GPUs: a success story
KR20090059337A (ko) 내장형 소프트웨어의 성능 향상을 위한 컴파일러의레지스터 할당 방법
Adriaansen Code generation for a Coarse-Grained Reconfigurable Architecture
Chen et al. ORC2DSP: Compiler Infrastructure Supports for VLIW DSP Processors

Legal Events

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

Payment date: 20121115

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131122

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141119

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20161121

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20171121

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20181119

Year of fee payment: 13