KR20140122564A - 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법 - Google Patents

프로세서에서 레지스터의 물리 주소 산출 장치 및 방법 Download PDF

Info

Publication number
KR20140122564A
KR20140122564A KR20130039406A KR20130039406A KR20140122564A KR 20140122564 A KR20140122564 A KR 20140122564A KR 20130039406 A KR20130039406 A KR 20130039406A KR 20130039406 A KR20130039406 A KR 20130039406A KR 20140122564 A KR20140122564 A KR 20140122564A
Authority
KR
South Korea
Prior art keywords
physical address
register
address
offset
calculated
Prior art date
Application number
KR20130039406A
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 KR20130039406A priority Critical patent/KR20140122564A/ko
Priority to US14/248,731 priority patent/US20140310501A1/en
Publication of KR20140122564A publication Critical patent/KR20140122564A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

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

Abstract

프로세서에서 레지스터의 물리 주소를 산출하는 장치에 관한 것으로, 일 실시예에 따르면, 장치는 현재의 반복 횟수 값과 회전 레지스터 수를 기초로 레지스터의 논리 주소와 물리 주소 간의 오프셋을 산출하는 오프셋산출부와, 레지스터의 논리 주소에 산출된 오프셋을 더하여 레지스터의 물리 주소를 산출하는 주소산출부 및 산출된 물리 주소 및 회전 레지스터의 수를 기초로 레지스터의 최종 물리 주소를 출력하는 주소보정부를 포함할 수 있다.

Description

프로세서에서 레지스터의 물리 주소 산출 장치 및 방법{APPARATUS AND METHOD FOR CALCULATING PHYSICAL ADDRESS OF REGISTER IN PROCESSOR}
프로세서에서 레지스터의 물리 주소를 산출하는 장치 및 방법과 관련된다.
일반적으로 CGRA 기반의 프로세서에서 중앙 레지스터 파일(central register file)은 라이브-인(live-in), 라이브-아웃(live-out) 값들 및 임시(temporal) 값들을 저장하기 위해 각각 회전 레지스터 파트(rotating register part)와 비회전 레지스터 파트(non-rotating register part)로 나누어진다. 비회전 레지스터 파트는 라이브-인 및 라이브-아웃 값들을 저장하는데 이용되며, 회전 레지스터 파트는 임시 값을 저장하는데 사용된다.
일반적으로 회전 레지스터의 크기와 비회전 레지스터의 크기는 하드웨어 설계시 결정되며 이때 회전 레지스터의 크기는 보통 2의 제곱 형태로 결정된다. 이는 CGRA 기반의 프로세서에서 프로그램 루프에 대한 소프트웨어 파이프라이닝 기법을 적용할 때 동일 변수의 생존기간이 서로 다른 반복(iteration)에서 중복될 수 있어 레지스터의 충돌 문제가 발생하고 이를 해결하기 위해 레지스터의 논리 주소는 동일하더라도 실제로는 서로 다른 물리 주소를 할당하게 되는데, 프로세서가 레지스터의 논리 주소를 이용하여 물리 주소를 산출할 때 일반적인 물리 주소 산출 방법에서 사용되는 모듈로 연산을 용이하게 하기 위함이다.
하지만, 비회전 레지스터의 사이즈는 프로그램 루프의 라이브-인/아웃 값에 따라 부족한 경우가 발생할 수 있으며 이는 성능의 감소를 초래하게 된다. 따라서, 런타임시에 동적으로 비회전 레지스터 및 회전 레지스터의 사이즈를 결정할 필요가 있다. 이때, 회전 레지스터의 크기가 2의 제곱 형태가 아니면 물리 주소를 계산하는데 사용되는 일반적인 주소 산출 방법의 모듈로 연산은 매우 어렵게 되어 성능의 감소를 초래할 수 있다.
프로세서에서 회전 레지스터의 크기가 2의 제곱이 아닌 가변적인 경우에 매우 효과적이고 신속하게 회전 레지스터의 실제 물리 주소를 산출할 수 있는 장치 및 방법이 제시된다.
일 양상에 따르면, 레지스터의 물리 주소 산출 장치는 현재의 반복 횟수 값과 회전 레지스터 수를 기초로 레지스터의 논리 주소와 물리 주소 간의 오프셋을 산출하는 오프셋산출부, 레지스터의 논리 주소에 상기 산출된 오프셋을 더하여 상기 레지스터의 물리 주소를 산출하는 주소산출부 및 산출된 물리 주소 및 회전 레지스터의 수를 기초로 레지스터의 최종 물리 주소를 출력하는 주소보정부를 포함할 수 있다.
오프셋산출부는 현재의 반복 횟수 값이 변경될 때마다 이전 오프셋에 소정 값을 더하여 오프셋을 산출할 수 있다.
오프셋산출부는 산출된 오프셋이 상기 회전 레지스터의 수와 같아지면 그 산출된 오프셋을 리셋시킬 수 있다.
주소보정부는 산출된 물리 주소와 회전 레지스터의 수를 비교하여 산출된 물리 주소가 회전 레지스터의 수보다 큰 경우 보정이 필요한 것으로 결정할 수 있다.
주소보정부는 보정이 필요한 것으로 결정된 경우 산출된 물리 주소에서 상기 회전 레지스터의 수를 뺀 값을 최종 물리 주소로 출력할 수 있다.
주소보정부는 보정이 필요하지 않은 것으로 결정된 경우 산출된 물리 주소를 최종 물리 주소로 출력할 수 있다.
회전 레지스터의 수는 프로그램의 컴파일을 수행하는 단계에서 프로그램에 포함된 라이브-인 및 라이브-아웃 값에 기초하여 가변적으로 결정될 수 있다.
회전 레지스터는 프로그램의 컴파일 단계에서 프로세서의 중앙 레지스터 파일 및 로컬 레지스터 파일 중의 하나 이상에 동적으로 결정될 수 있다.
일 양상에 따르면, 레지스터의 물리 주소 산출 방법은 현재의 반복 횟수 값과 회전 레지스터 수를 기초로 레지스터의 논리 주소와 물리 주소 간의 오프셋을 산출하는 단계, 레지스터의 논리 주소에 산출된 오프셋을 더하여 레지스터의 물리 주소를 산출하는 단계 및 산출된 물리 주소 및 회전 레지스터의 수를 기초로 레지스터의 최종 물리 주소를 출력하는 단계를 포함할 수 있다.
오프셋 산출 단계는 현재의 반복 횟수 값이 변경될 때마다 이전 오프셋에 소정 값을 더하여 오프셋을 산출할 수 있다.
오프셋 산출 단계는 산출된 오프셋이 회전 레지스터의 수와 같아지면 그 산출된 오프셋을 리셋시킬 수 있다.
주소 보정 단계는 산출된 물리 주소와 회전 레지스터의 수를 비교하는 단계 및 비교 결과를 기초로 산출된 물리 주소의 보정 여부를 결정하는 단계를 포함할 수 있다.
주소 보정 단계는 결정 결과 보정이 필요하면 산출된 물리 주소에서 회전 레지스터의 수를 뺀 값을 최종 물리 주소로 출력하는 단계를 더 포함할 수 있다.
주소 보정 단계는 결정 결과 보정이 필요하지 않으면 산출된 물리 주소를 최종 물리 주소로 출력하는 단계를 더 포함할 수 있다.
회전 레지스터의 수는 프로그램의 컴파일 단계에서 프로그램에 포함된 라이브-인 및 라이브-아웃 값에 기초하여 가변적으로 결정될 수 있다.
회전 레지스터는 프로그램의 컴파일 단계에서 프로세서의 중앙 레지스터 파일 및 로컬 레지스터 파일 중의 하나 이상에 동적으로 결정될 수 있다.
프로세서에서 회전 레지스터의 크기가 2의 제곱이 아닌 가변적인 경우에도 매우 신속하게 회전 레지스터의 실제 물리 주소를 산출하여 프로세서의 성능을 향상시킬 수 있다.
도 1은 CGRA 기반의 프로세서를 도시한 것이다.
도 2a 및 도 2b는 소프트웨어 파이프라이닝 기법을 지원하는 회전 레지스터 파일을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 레지스터 물리 주소 산출 장치의 블록도이다.
도 4는 일 실시예에 따른 레지스터 물리 주소 산출 장치에서 수행되는 연산을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 레지스터 물리 주소 산출 방법의 흐름도이다.
도 6은 일 실시예에 따른 레지스터 물리 주소 산출 방법의 상세 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 기재된 기술의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법의 실시예들을 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 CGRA(Coarse Grained Reconfigurable Array) 기반의 프로세서를 도시한 것이다.
도 1을 참조하면, 프로세서(10)는 다수의 기능 유닛(FU)들이 배열 형태로 배치되고, 중앙 레지스터 파일(20)과 각 기능 유닛(FU)에 대응되는 로컬 레지스터 파일(LRF)을 포함한다. 재구성 가능 프로세서(10)는 중앙 레지스터 파일(20)을 공유함으로써 VLIW(Very Long Instruction Word)와 CGA(Coarse Grained Array) 모드의 프로세서로 동작할 수 있다.
도 1에 도시된 바와 같이, 중앙 레지스터 파일(20)은 회전 레지스터 파일(RRF)과 비회전 레지스터 파일(NRRF)로 분리될 수 있다. 프로세서(20)가 CGA 모드로 동작할 때, 일반적으로 라이브-인(live-in), 라이브-아웃(live-out) 값들은 비회전 레지스터 파일(NRRF)에 저장되고, 임시(temporal) 값들은 회전 레지스터 파일(RRF)에 저장된다.
일반적으로 회전 레지스터 파일(RRF)과 비회전 레지스터 파일(NRRF)의 사이즈는 프로세서(10)의 아키텍처를 설계하는 단계에서 결정되며 이때 회전 레지스터 파일(RRF)의 사이즈는 레지스터(20)의 물리 주소를 산출하기 위해 사용되는 모듈로 연산을 용이하게 하기 위해 2의 제곱 형태로 결정된다.
하지만, 프로그램의 루프마다 요구하는 회전 레지스터의 수 및 비회전 레지스터의 수가 다르므로 루프에 따라서는 미리 결정된 회전 레지스터 또는 비회전 레지스터가 부족해지는 문제가 발생할 수 있다. 이를 해결하기 위해서는 런타임시에 프로그램 루프에 따라 동적으로 회전 레지스터 및 비회전 레지스터의 사이즈를 결정하는 것이 필요하게 된다.
도 2a 및 도 2b는 소프트웨어 파이프라이닝 기법을 지원하는 회전 레지스터 파일을 설명하기 위한 도면이다.
도 1 내지 도 2b를 참조하면, CGRA 기반의 프로세서(10)는 소정의 반복 횟수를 가지는 루프 프로그램을 효율적으로 처리하기 위해 각 반복을 순차적으로 처리하는 대신 소프트웨어 파이프라이닝(software pipelining) 기법을 적용하여 서로 다른 반복들을 병렬적으로 처리하는 스케줄링 방식을 사용한다.
도 2a에 도시된 바와 같이, 각 반복(1,2,3)들이 병렬적으로 수행되기 때문에 동일 변수(variable)의 생존기간(life time)이 중복되어 레지스터(20)가 충돌되는 문제가 발생할 수 있다. 예컨대, 반복 1의 시작시 정의된 변수가 반복 1의 마지막에서 사용된다고 할 때 레지스터(20)에 의해 서로 통신할 수 있다. 하지만, 레지스터(20)에 저장되는 변수 값의 생존기간이 반복 1, 2 및 3에서 서로 중복되어 반복 1에서 생성된 변수의 값이 반복 2 또는 3에서 변경될 수 있다. 따라서, 반복 1의 마지막에서 그 변수의 값을 사용할 때는 반복 2 또는 3에서 변경된 다른 값을 사용하는 문제가 발생할 수 있다.
이를 해결하기 위해 일반적으로 레지스터(20)에 회전 레지스터 파일(RRF)을 정의하는 방식을 사용한다. 예컨대, 도 2b에 도시된 바와 같이 정의된 논리 레지스터(LR)의 주소에 현재의 반복 횟수(ITR)를 합하여 물리 레지스터(PR)의 주소로 사용하고, 각 반복에서 변수의 값을 사용할 때 물리 레지스터(PR)의 주소에 기록된 변수 값을 사용함으로써 문제를 해결할 수 있다.
도 3은 일 실시예에 따른 레지스터 물리 주소 산출 장치의 블록도이다.
일 실시예에 따른 레지스터 물리 주소 산출 장치(100)는 회전 레지스터 및 비회전 레지스터의 수를 아키텍처 설계 단계에서 결정하는 일반적인 프로세서뿐만 아니라, 런타임시에 동적으로 결정하는 프로세서에서 적용될 수 있다.
도 3을 참조하면, 레지스터 물리 주소 산출 장치(100)는 오프셋산출부(110), 주소산출부(120) 및 주소보정부(130)를 포함한다.
오프셋산출부(110)는 현재의 반복 횟수 값과 회전 레지스터의 수를 기초로 레지스터의 논리 주소와 물리 주소 간의 오프셋을 산출할 수 있다. 이때, 회전 레지스터의 수는 아키텍처 설계 단계에서 미리 결정될 수 있다.
한편, 도 1에 예시된 바와 같은 프로세서(10)의 회전 레지스터와 비회전 레지스터가 컴파일 단계에서 프로그램의 루프마다 동적으로 결정되도록 설계된 경우, 회전 레지스터의 수는 프로그램의 컴파일 단계에서 프로그램 루프마다 동적으로 가변적으로 결정될 수 있다. 이때, 스케줄러는 프로그램의 루프마다 라이브-인 및 라이브-아웃 값을 기초로 비회전 레지스터 및 레지스터의 수를 결정할 수 있다.
추가적인 양상에 따라 도 1에 예시된 프로세서(10)의 회전 레지스터와 비회전 레지스터를 컴파일 단계에서 중앙 레지스터 파일(20)뿐만 아니라 로컬 레지스터 파일(LF)에 할당될 수 있도록 설계된 경우, 회전 레지스터는 중앙 레지스터 파일(20) 및 로컬 레지스터 파일(LF) 중의 하나 이상에 결정될 수 있다.
오프셋산출부(110)는 입력된 현재의 반복 횟수 값이 변경될 때마다 이전 산출된 오프셋에 소정 값을 더하여 오프셋을 산출할 수 있다. 이때, 산출된 오프셋이 회전 레지스터의 수와 같아지면 그 산출된 오프셋을 초기값으로 리셋시킬 수 있다.
주소산출부(120)는 오프셋산출부(110)에서 산출된 오프셋을 더하여 물리 레지스터(Physical Register)의 주소를 산출한다.
주소보정부(140)는 주소산출부(120)에 의해 산출된 물리 주소의 보정이 필요한지를 결정하고, 보정이 필요한 경우 산출된 물리 주소를 보정하여 최종 물리 주소로 출력하고, 보정이 필요하지 않은 경우 산출된 물리 주소를 최종 물리 주소로 출력할 수 있다.
이때, 산출된 물리 주소와 회전 레지스터의 수를 비교하여 보정이 필요한지를 결정할 수 있으며, 예컨대, 산출된 물리 주소가 회전 레지스터의 수보다 크면 보정이 필요한 것으로 결정할 수 있다. 주소보정부(130)는 보정이 필요하면 산출된 물리 주소에서 회전 레지스터의 수를 뺀 값을 보정된 최종 물리 주소로 출력할 수 있다.
도 4는 일 실시예에 따른 레지스터 물리 주소 산출 장치(100)에서 수행되는 연산을 설명하기 위한 도면이다.
도 4는 물리 주소 산출 장치(100)가 아래의 수학식 1에 의해 물리 주소를 산출하는 절차를 도시한 것이다.
Figure pat00001
여기서, PR은 물리 레지스터(Physical Register)의 주소, LR은 논리 레지스터(Logical Register)의 주소, ITR은 현재의 반복 회수, R은 회전 레지스터의 수를 의미하고, %는 나머지를 구하는 모듈로 연산을 의미한다.
오프셋산출부(110)는 물리 레지스터의 주소와 논리 레지스터의 주소 간의 오프셋을 산출하기 위해 현재의 반복 횟수 값(ITR)과 결정된 회전 레지스터의 수(R)을 입력받아 모듈로 연산을 수행한다.
주소산출부(120)는 그 오프셋산출부(110)의 모듈로 연산 결과, 즉 산출된 오프셋과 입력된 논리 레지스터의 주소(LR)를 합하여 물리 주소를 산출한다.
주소보정부(130)는 산출된 물리 주소를 회전 레지스터의 수로 모듈로 연산을 수행하여 최종적인 물리 주소를 출력한다.
예를 들어 설명하면, 오프셋산출부(110)는 오프셋을 나타내는 변수(t)를 정의하여 초기값(예: 0)으로 설정하고, 입력된 현재의 반복 횟수 값이 변경될 때마다 오프셋 변수(t)를 소정 크기(예: 1)씩 증가시킨다. 그 다음, 오프셋 변수(t)가 회전 레지스터의 수와 같은지를 체크하고, 동일하면 오프셋 변수(t)를 초기값(예: 0)으로 리셋시킨다.
주소산출부(120)는 입력된 논리 레지스터의 주소(LR)과 산출된 오프셋 변수(t)를 합하여 물리 주소를 나타내는 변수(a)에 저장한다.
주소보정부(130)는 산출된 물리 주소의 변수(a)의 값과 회전 레지스터의 수(R)을 비교하여 보정이 필요한지를 판단한다. 이때, 산출된 물리 주소 변수(a)의 값이 회전 레지스터의 수보다 크면 보정이 필요한 것으로 결정하고, 산출된 물리 주소 변수(a)의 값에서 회전 레지스터의 수(R)을 뺀 값을 물리 주소 변수(a)에 저장하여 최종 물리 주소로 출력하고, 보정이 필요하지 않으면 산출된 물리 주소 변수(a)의 값을 최종 물리 주소로 출력한다.
이와 같이, 개시된 실시예에 따르면 회전 레지스터 및 비회전 레지스터의 수가 컴파일 단계에서 동적으로 결정되어 회전 레지스터의 수가 2의 제곱 형태가 아닌 경우에도 물리 주소를 신속하게 산출할 수 있어 프로세서의 성능을 향상시킬 수 있다.
도 5는 일 실시예에 따른 레지스터 물리 주소 산출 방법의 흐름도이다.
도 5를 참조하여, 도 3의 실시예에 따른 레지스터 물리 주소 산출 장치(100)를 이용하여 레지스터의 물리 주소를 산출하는 방법을 설명한다.
먼저, 현재의 반복 횟수 값과 회전 레지스터의 수를 기초로 레지스터의 논리 주소와 물리 주소 간의 오프셋을 산출할 수 있다(단계 310). 이때, 회전 레지스터의 수는 아키텍처 설계 단계에서 미리 결정되거나 전술한 바와 같이 컴파일 단계에서 프로그램의 루프마다 동적으로 결정될 수 있다. 이때, 회전 레지스터는 경우에 따라 중앙 레지스터 파일뿐만 아니라 로컬 레지스터 파일에 결정될 수 있다.
그 다음, 산출된 오프셋을 논리 레지스터의 주소(Logical Register)에 더하여 물리 레지스터(Physical Register)의 주소를 산출할 수 있다(단계 320).
그 다음, 산출된 물리 주소 및 회전 레지스터의 수를 기초로 최종 물리 주소를 출력할 수 있다(단계 330). 예컨대, 물리 주소 산출 장치(100)는 산출된 물리 주소와 회전 레지스터의 수를 비교하여 그 결과를 기초로 물리 주소의 보정이 필요한지를 결정할 수 있다. 이때, 보정이 필요하면 산출된 물리 주소를 소정 기준에 의해 보정하여 보정된 물리 주소를 최종 물리 주소로 출력하고, 보정이 필요하지 않으면 산출된 물리 주소를 최종 물리 주소로 출력할 수 있다.
도 6은 일 실시예에 따른 레지스터 물리 주소 산출 방법의 상세 흐름도이다.
도 6을 참조하여 일 실시예에 따른 레지스터 물리 주소 산출 방법을 좀 더 상세히 설명한다.
물리 주소 산출 장치(100)는 오프셋을 초기값(예: 0)으로 설정한다(단계 411). 그 다음, 입력되는 현재의 반복 회수가 변경되는지를 체크하고(단계 412), 현재의 반복 회수가 변경되었으면 오프셋을 소정 크기(예: 1)만큼 증가시키고(단계 413), 현재의 반복 회수가 변경되지 않았으면 오프셋이 이전 산출된 오프셋과 동일하므로 물리 주소 산출 단계(416)로 이동한다.
그 다음, 산출된 오프셋이 회전 레지스터의 수와 같은지를 체크하여(단계 414), 산출된 오프셋이 회전 레지스터의 수와 같으면 오프셋을 초기화시킨다(단계 415).
그 다음, 논리 레지스터의 주소에 산출된 오프셋을 더하여 물리 레지스터의 주소를 산출한다(단계 416).
그 다음, 산출된 물리 주소와 회전 레지스터의 수를 비교하여 그 물리 주소의 보정이 필요한지를 판단한다(단계 417). 즉, 산출된 물리 주소가 회전 레지스터보다 크면 보정이 필요한 것으로 판단하고, 그렇지 않으면 보정이 필요하지 않은 것으로 판단한다.
만약, 보정 여부 판단 단계(417)에서 보정이 필요한 것으로 판단하면 산출된 물리 주소에서 회전 레지스터의 수를 뺀 값을 최종 물리 주소로 출력하고(단계 418), 보정이 필요하지 않은 것으로 판단하면 물리 주소 산출 단계(416)에서 산출된 물리 주소를 최종 주소로 출력한다(단계 419).
그 다음, 현재의 반복이 마지막 반복인지를 판단하여(단계 420), 프로그램 루프의 모든 반복이 완료되면 종료하고, 그렇지 않으면 다시 단계 412 이하를 반복 수행한다.
한편, 본 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 개시가 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 레지스터 물리 주소 산출 장치 110: 오프셋 산출부
120: 주소산출부 130: 주소보정부

Claims (16)

  1. 현재의 반복 횟수 값과 회전 레지스터 수를 기초로 레지스터의 논리 주소와 물리 주소 간의 오프셋을 산출하는 오프셋산출부;
    레지스터의 논리 주소에 상기 산출된 오프셋을 더하여 상기 레지스터의 물리 주소를 산출하는 주소산출부; 및
    상기 산출된 물리 주소 및 회전 레지스터의 수를 기초로 상기 레지스터의 최종 물리 주소를 출력하는 주소보정부;를 포함하는 레지스터의 물리 주소 산출 장치.
  2. 제1항에 있어서, 상기 오프셋산출부는
    상기 현재의 반복 횟수 값이 변경될 때마다 이전 오프셋에 소정 값을 더하여 오프셋을 산출하는 레지스터의 물리 주소 산출 장치.
  3. 제2항에 있어서, 상기 오프셋산출부는
    상기 산출된 오프셋이 상기 회전 레지스터의 수와 같아지면 그 산출된 오프셋을 리셋시키는 레지스터의 물리 주소 산출 장치.
  4. 제1항에 있어서, 상기 주소보정부는
    상기 산출된 물리 주소와 회전 레지스터의 수를 비교하여 산출된 물리 주소가 회전 레지스터의 수보다 큰 경우 보정이 필요한 것으로 결정하는 레지스터의 물리 주소 산출 장치.
  5. 제4항에 있어서, 상기 주소보정부는
    상기 보정이 필요한 것으로 결정된 경우 상기 산출된 물리 주소에서 상기 회전 레지스터의 수를 뺀 값을 최종 물리 주소로 출력하는 레지스터의 물리 주소 산출 장치.
  6. 제4항에 있어서, 상기 주소보정부는
    상기 보정이 필요하지 않은 것으로 결정된 경우 상기 산출된 물리 주소를 최종 물리 주소로 출력하는 레지스터의 물리 주소 산출 장치.
  7. 제1항에 있어서, 상기 회전 레지스터의 수는
    프로그램의 컴파일을 수행하는 단계에서 상기 프로그램의 루프마다 가변적으로 결정되는 레지스터의 물리 주소 산출 장치.
  8. 제1항에 있어서, 상기 회전 레지스터는
    프로그램의 컴파일 단계에서 프로세서의 중앙 레지스터 파일 및 로컬 레지스터 파일 중의 하나 이상에 동적으로 결정되는 레지스터의 물리 주소 산출 장치.
  9. 현재의 반복 횟수 값과 회전 레지스터 수를 기초로 레지스터의 논리 주소와 물리 주소 간의 오프셋을 산출하는 단계;
    레지스터의 논리 주소에 상기 산출된 오프셋을 더하여 상기 레지스터의 물리 주소를 산출하는 단계; 및
    상기 산출된 물리 주소 및 회전 레지스터의 수를 기초로 상기 레지스터의 최종 물리 주소를 출력하는 단계;를 포함하는 레지스터의 물리 주소 산출 방법.
  10. 제9항에 있어서, 상기 오프셋 산출 단계는
    상기 현재의 반복 횟수 값이 변경될 때마다 이전 오프셋에 소정 값을 더하여 오프셋을 산출하는 레지스터의 물리 주소 산출 방법.
  11. 제10항에 있어서, 상기 오프셋 산출 단계는
    상기 산출된 오프셋이 상기 회전 레지스터의 수와 같아지면 그 산출된 오프셋을 리셋시키는 레지스터의 물리 주소 산출 방법.
  12. 제9항에 있어서, 상기 주소 보정 단계는
    상기 산출된 물리 주소와 회전 레지스터의 수를 비교하는 단계; 및
    상기 비교 결과를 기초로 산출된 물리 주소의 보정 여부를 결정하는 단계;를 포함하는 레지스터의 물리 주소 산출 방법.
  13. 제12항에 있어서, 상기 주소 보정 단계는
    상기 결정 결과 보정이 필요하면 상기 산출된 물리 주소에서 상기 회전 레지스터의 수를 뺀 값을 최종 물리 주소로 출력하는 단계;를 더 포함하는 레지스터의 물리 주소 산출 방법.
  14. 제12항에 있어서, 상기 주소 보정 단계는
    상기 결정 결과 보정이 필요하지 않으면 상기 산출된 물리 주소를 최종 물리 주소로 출력하는 단계;를 더 포함하는 레지스터의 물리 주소 산출 방법.
  15. 제9항에 있어서, 상기 회전 레지스터의 수는
    프로그램의 컴파일 단계에서 상기 프로그램의 루프마다 가변적으로 결정되는 레지스터의 물리 주소 산출 방법.
  16. 제9항에 있어서, 상기 회전 레지스터는
    프로그램의 컴파일 단계에서 프로세서의 중앙 레지스터 파일 및 로컬 레지스터 파일 중의 하나 이상에 동적으로 결정되는 레지스터의 물리 주소 산출 방법.
KR20130039406A 2013-04-10 2013-04-10 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법 KR20140122564A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR20130039406A KR20140122564A (ko) 2013-04-10 2013-04-10 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법
US14/248,731 US20140310501A1 (en) 2013-04-10 2014-04-09 Apparatus and method for calculating physical address of a processor register

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20130039406A KR20140122564A (ko) 2013-04-10 2013-04-10 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20140122564A true KR20140122564A (ko) 2014-10-20

Family

ID=51687618

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20130039406A KR20140122564A (ko) 2013-04-10 2013-04-10 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법

Country Status (2)

Country Link
US (1) US20140310501A1 (ko)
KR (1) KR20140122564A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101965074B1 (ko) * 2017-11-16 2019-04-02 연세대학교 산학협력단 그래픽 처리 프로세서를 위한 레지스터 제어 장치 및 방법과 이에 관한 기록매체

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104991869B (zh) * 2015-07-31 2017-11-10 成都腾悦科技有限公司 一种微处理器存储管理方法
CN114827091B (zh) * 2022-04-25 2023-06-20 珠海格力电器股份有限公司 一种物理地址冲突的处理方法、装置及通信设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2359641B (en) * 2000-02-25 2002-02-13 Siroyan Ltd Mapping circuitry and method
US6832370B1 (en) * 2000-05-09 2004-12-14 Hewlett-Packard Development, L.P. Data speculation within modulo scheduled loops
GB2363480B (en) * 2000-06-13 2002-05-08 Siroyan Ltd Predicated execution of instructions in processors
TW525091B (en) * 2000-10-05 2003-03-21 Koninkl Philips Electronics Nv Retargetable compiling system and method
KR100662846B1 (ko) * 2005-11-09 2007-01-02 삼성전자주식회사 데이터 처리 시스템 및 데이터 처리방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101965074B1 (ko) * 2017-11-16 2019-04-02 연세대학교 산학협력단 그래픽 처리 프로세서를 위한 레지스터 제어 장치 및 방법과 이에 관한 기록매체

Also Published As

Publication number Publication date
US20140310501A1 (en) 2014-10-16

Similar Documents

Publication Publication Date Title
US8881124B2 (en) Compiler device, compiler program, and loop parallelization method
US8266610B2 (en) Extension of swing modulo scheduling to evenly distribute uniform strongly connected components
US9483244B2 (en) Compiling method and compiling device
WO2015143641A1 (en) Compilation of application into multiple instruction sets for a heterogeneous processor
US9372678B2 (en) Compiler optimization for complex exponential calculations
US9395986B2 (en) Compiling method and compiling apparatus
US20190012176A1 (en) Vector processing using loops of dynamic vector length
US11625619B1 (en) Processor compiler
JP6375102B2 (ja) 動的データ構成のための方法及び装置
KR20140046897A (ko) 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법
KR20110105615A (ko) 단말 적합성 애플리케이션 최적화장치 및 방법
KR20140122564A (ko) 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법
KR102062208B1 (ko) 멀티스레드 프로그램 코드의 변환 장치 및 방법
US10089088B2 (en) Computer that performs compiling, compiler program, and link program
KR20120036208A (ko) 재구성 기반 컴퓨팅 장치 및 이의 메모리 의존성 보정방법
Shao et al. Map-reduce inspired loop parallelization on CGRA
WO2018150588A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US20220374236A1 (en) Method and system for optimizing address calculations
CN116302114B (zh) 一种针对支持指令宏融合cpu的编译器指令调度优化方法
CN102662678B (zh) 数据处理装置及其内存数据处理方法
JP2009076002A (ja) 制御タイミング調整方法、コンパイルプログラム、コンパイル装置、及び情報処理装置
US20220027151A1 (en) Compile device, compile method, and non-transitory computer readable medium
US20150212837A1 (en) Parallelization method and system
US10503477B2 (en) Galois field pipelined multiplier with polynomial and beta input passing scheme
KR20150063745A (ko) 레지스터 페어링을 이용한 simd 연산 방법 및 장치

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid