KR101340459B1 - 다중 루프 탈출을 지원하는 하드웨어 가속장치 - Google Patents

다중 루프 탈출을 지원하는 하드웨어 가속장치 Download PDF

Info

Publication number
KR101340459B1
KR101340459B1 KR1020110109404A KR20110109404A KR101340459B1 KR 101340459 B1 KR101340459 B1 KR 101340459B1 KR 1020110109404 A KR1020110109404 A KR 1020110109404A KR 20110109404 A KR20110109404 A KR 20110109404A KR 101340459 B1 KR101340459 B1 KR 101340459B1
Authority
KR
South Korea
Prior art keywords
loop
escape
condition
update
hardware accelerator
Prior art date
Application number
KR1020110109404A
Other languages
English (en)
Other versions
KR20130044997A (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 아주대학교산학협력단
Priority to KR1020110109404A priority Critical patent/KR101340459B1/ko
Publication of KR20130044997A publication Critical patent/KR20130044997A/ko
Application granted granted Critical
Publication of KR101340459B1 publication Critical patent/KR101340459B1/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/468Specific access rights for resources, e.g. using capability register
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 디지털 신호 처리 시스템에 관한 것으로, 특히 프로그램 가능한 프로세서에서 다중 루프를 구현하는 시스템 및 실행 방법에 관한 것이다. 다중루프를 포함하는 프로세스에서 루프 탈출을 처리하기 위한 하드웨어 가속장치에 있어서, 루프에 대한 탈출 조건을 저장하는 탈출조건 저장부와 루프 탈출 조건의 판단을 위한 탈출여부 판단부, 루프를 구분하기 위한 루프 식별자(Tag) 저장부, 및 탈출 결정된 루프의 정보를 초기화하는 루프 초기화 장치를 포함하는 것을 특징으로 한다. 비교대상 값의 갱신을 확인한 후 레지스터에 저장된 비교대상 값과 탈출 조건 저장부에 저장된 루프탈출조건을 비교하여 탈출 여부를 결정한다. 루프 탈출이 결정되면 루프 조건 초기화 장치를 통해 해당 루프의 조건들을 초기화한 후 다음 실행 명령어로 초기화되는 루프의 종료 주소 이 후 명령어를 수행하게 된다. 본 발명에 따르면 루프 탈출을 추가적인 명령어 및 사이클 소모 없이 하드웨어적으로 처리하여 프로세서의 처리량 향상을 기대할 수 있다.

Description

다중 루프 탈출을 지원하는 하드웨어 가속장치 {An accelerator supporting multiple loop escape}
본 발명은 디지털 신호 처리 시스템에 관한 것으로, 특히 프로그램 가능한 프로세서에서 다중 루프를 구현하는 시스템 및 실행 방법에 관한 것이다.
비디오 코덱 내의 움직임 추정 연산과 같이 실시간 계산 량이 많으면서도 제어가 필요한 응용 분야가 점차 증가하고 있으며 일반적으로 이런 응용 들을 프로세서 상에서 구현 시 다중 루프를 통해 구현되게 된다. 다중 루프의 처리는 하드웨어 두 루프 (Do loop)를 통해 처리하는 방식이 널리 사용된다. 하지만 특정 응용 들은 다중 루프 처리 내에 조건에 따라 루프를 중도에 탈출하는 동작을 필요로 한다. 예를 들어, 움직임 추정 알고리즘의 경우 연산 량 감소를 위해 다양한 조기 중단(early-termination) 기법을 적용한다.
일반적인 방법으로 다중 루프 처리 내에 조건에 따라 루프를 중도에 탈출하는 동작을 구현하려면 부가적인 처리 명령어가 필요하며 특히 다중 루프 내부의 경우 루프 반복 횟수에 비례하여 오버헤드가 증가하기 때문에 이를 효율적으로 처리하는 방법이 필요하다. 특정 동작 구현에 보다 많은 명령어의 수행이 필요하면 처리에 필요한 시간이 늘어 실시간 처리하기 위해 보다 높은 동작 주파수가 필요하다. 또한 프로그램 메모리 접근 및 동작 처리에 필요한 전력 소비가 늘어 휴대용 기기 같이 전력 소비가 제품의 중요한 척도가 되는 기기에서 동작 구현에 부담이 된다. 본 발명은 프로그램 가능한 프로세서에서 다중루프 처리에 적합한 하드웨어 루프 처리 방법으로 특히 루프 탈출 조건에 대한 부가적인 연산을 줄여 프로세서의 처리 성능을 높이고 저전력 구현이 가능하게 하는 것에 목적을 두고 있다.
루프 반복 횟수가 정해져 있는 소위 두 루프 또는 포 루프 (For loop)를 사이클 오버헤드 없이 지원하기 위해 프로세서에서는 일반적으로 하드웨어 두 루프를 지원한다. 하드웨어 두 루프 처리는 사이클 오버헤드를 없애기 위한 루프 시작 주소, 루프 종료 주소, 루프 반복 횟수 등을 하드웨어 스택을 사용해 처리한다. 하지만 루프 탈출 조건에 대한 처리는 부가적인 브랜치 명령어를 통해 수행하게 되며 다중 루프에서 각 루프 조건의 초기화를 위해 추가적인 처리가 필요하다. 이에 반해 본 발명의 경우 루프 탈출 조건에 대해 부가적인 명령어 없이 처리가 가능하며 루프 탈출 조건에 따라 각 다중 루프별 루프 초기 조건을 제어할 수 있어 다중 루프 내 중도 탈출 조건이 필요한 응용 구현 시 프로세서의 처리 성능을 향상시킬 수 있고 저전력 구현이 가능하다.
상기 기술적 과제를 해결하기 위한 본 발명에 따른 하드웨어 가속장치는 하나 이상의 다중루프를 포함하는 프로세스에서 각각의 루프에 대한 탈출 조건을 저장하는 탈출 조건 저장부; 및 상기 루프의 탈출조건과 상기 다중 루프 중 적어도 하나의 루프에 대하여 상기 루프의 탈출과 관련된 변수를 비교하여 루프 탈출 여부를 결정하는 탈출 여부 판단부를 포함한다.
상기 루프탈출과 관련된 변수는 상기 하드웨어 가속장치 내부 또는 외부의 저장부에 저장되며 상기 프로세스 수행에 따른 연산결과 값을 포함한다.
상기 하드웨어 가속장치의 저장부는 상기 하드웨어 가속장치 내부에서 상기 프로세스 수행에 따른 연산결과 값을 저장하는 레지스터인 것이 바람직하다.
상기 탈출 여부 판단부는 상기 하드웨어 가속장치의 상기 프로세스 수행과 독립하여 수행되어 탈출결정을 하는 것이 바람직하다.
상기 탈출 여부 판단부는 상기 루프의 탈출과 관련된 변수의 갱신을 확인하는 갱신 확인부 및 상기 루프의 탈출조건과 상기 다중 루프 중 적어도 하나의 루프에 대하여 상기 루프의 탈출과 관련된 변수를 비교하여 루프 탈출 여부를 결정하는 조건 비교부를 포함한다.
상기 탈출 여부 판단부는, 상기 갱신 확인부에서 상기 루프의 탈출과 관련된 변수의 갱신을 확인하여 갱신이 확인되면, 상기 루프의 탈출조건과 상기 루프와 관련된 변수를 비교하여 루프 탈출 여부를 결정하는 것이 바람직하다.
상기 갱신 확인부의 상기 루프의 탈출과 관련된 변수의 갱신의 확인은, 상기 프로세스 상에서 수행되는 명령어의 파이프라인 단계를 확인하는 것이 바람직하다.
상기 갱신 확인부의 상기 루프의 탈출과 관련된 변수의 갱신의 확인은, 상기 프로세스 상에서 수행되는 명령어 인코딩단계에 구분한 필드 값을 확인하는 것이 바람직하다.
상기 기술적 과제를 해결하기 위한 본 발명에 따른 하드웨어 가속장치는 상기 하나 이상의 다중루프를 포함하는 상기 프로세스에서 상기 각각의 루프에 대한 식별자를 저장하는 루프 식별자(Tag) 저장부; 및 상기 루프의 탈출조건과 상기 다중 루프 중 적어도 하나의 루프에 대하여 상기 루프의 탈출과 관련된 변수를 비교하여 루프 탈출 여부를 결정된 루프의 변수 값 및 탈출정보를 포함하는 데이터를 초기화하는 루프 초기화 장치를 포함한다.
상기 다른 기술적 과제를 해결하기 위한 본 발명에 따른 다중 루프 탈출 처리 방법은 하나 이상의 다중루프를 포함하는 프로세스에서 각각의 루프에 대한 탈출 조건을 저장하는 탈출 조건 저장단계; 및 상기 루프의 탈출조건과 상기 다중 루프 중 적어도 하나의 루프에 대하여 상기 루프의 탈출과 관련된 변수를 비교하여 루프 탈출 여부를 판단하는 탈출 여부 판단 단계를 포함한다.
상기 탈출 조건 저장단계는 상기 루프에 대한 상기 탈출 조건의 범위를 전역(Global) 또는 지역(Local)중 어느 하나로 설정하여 탈출 조건을 저장 가능하다.
상기 탈출 여부 판단 단계에서 상기 루프탈출과 관련된 변수는 상기 하드웨어 가속장치 내부 또는 외부의 저장부에 저장되며 상기 프로세스 수행에 따른 연산결과 값을 포함한다.
상기 탈출 여부 판단 단계는 상기 갱신 확인단계에서 상기 루프의 탈출과 관련된 변수의 갱신을 확인하여 갱신이 확인되면, 상기 루프의 탈출조건과 상기 루프와 관련된 변수를 비교하여 루프 탈출 여부를 판단하는 것이 바람직하다.
상기된 본 발명에 의하면 루프 탈출 조건에 대해 부가적인 명령어 없이 처리가 가능하며 루프 탈출 조건에 따라 각 다중 루프별 루프 초기 조건을 제어할 수 있어 다중 루프 내 중도 탈출 조건이 필요한 응용 구현 시 프로세서의 처리 성능을 향상 시킬 수 있고 저전력 구현이 가능하다.
도 1은 다중루프를 포함한 프로세스의 개념도를 나타낸다.
도 2는 본 발명의 일 실시 예에 따른 하드웨어 가속 장치를 나타내는 블록도이다.
도 3은 도 2의 하드웨어 가속 장치의 탈출 여부 판단부의 세부 블록도이다.
도 4는 본 발명의 일 실시 예에 따른 다중 루프 처리 방법의 흐름도를 나타낸다.
연산 량이 많은 응용의 경우 작업을 반복적인 서브 작업 단위로 분할하여 다중 루프를 통해 연산이 구현된다. 이때, 일반적인 루프 처리 방법을 통해 다중 루프를 구현하게 되면 각 단계별로 탈출 조건이 추가적인 조건부 브랜치 명령어를 통해 구현 되게 되어 탈출 여부를 조사하기 위한 추가적인 명령어 및 브랜치 명령어가 루프 반복 횟수만큼 수행 되게 된다. 본 발명은 이런 부가적인 연산 없이 다중 루프 상에서 루프 탈출 조건에 따른 동작을 구현한다. 그리고 각 루프 탈출 조건에 대한 탈출 여부 조사를 하드웨어적으로 수행하며 루프 탈출이 결정되었을 경우 하드웨어 루프 구현 시 사용되는 루프 조건들을 해당 루프 단계에 맞추어 초기화 시키는 동작을 수행한다.
이하 첨부된 도면을 참조하여 본 발명에 대해 상세히 설명한다.
도 1은 다중루프를 포함한 프로세스의 개념도를 나타낸다.
도 1을 참조하면 3중 다중 루프는 루프1의 반복횟수가 X로 설정되어 있고, 루프1의 내부 루프인 루프2의 반복횟수가 Y로 설정되어 있으며, 이때 내부 루프인 루프 3의 반복횟수가 Z로 설정되어 있는 경우, 탈출 조건을 처리하기 위해 명령어가 추가 되면 다중 루프의 모든 반복 횟수 (X·Y·Z) 만큼 연산을 반복하여 수행되게 된다. 또한, 설정된 조건에 따른 비교를 수행한 후 브랜치 동작을 수행하는 것은 조건부 브랜치 종류의 명령어를 통해 구현되는데, 이런 동작을 수행하는 명령어들은 한 번만 수행되는 것이 아니라 외부 루프 반복 횟수만큼 수행되어야 하므로 이는 프로세서를 통해 특정 응용을 구현할 때 큰 오버헤드를 차지하여 프로세서의 처리량을 감소시킨다.
이하에서는 본 발명의 도면과 실시 예를 참조하여 본 발명의 하드웨어 가속장치를 상세히 설명한다.
도 2는 본 발명의 일 실시예에 따른 하드웨어 가속 장치(1)를 나타내는 블록도이다. 본 실시 예에 따른 하드웨어 가속장치는 하나 이상의 다중루프를 포함하는 프로세스에서 각각의 루프에 대한 탈출 조건을 저장하는 탈출 조건 저장부(10), 상기 루프의 탈출조건과 상기 다중 루프 중 적어도 하나의 루프에 대하여 상기 루프의 탈출과 관련된 변수를 비교하여 루프 탈출 여부를 결정하는 탈출 여부 판단부(20), 상기 각각의 루프에 대한 식별자를 저장하는 루프 식별자(Tag) 저장부(30), 상기 루프의 탈출조건과 상기 다중 루프 중 적어도 하나의 루프에 대하여 상기 루프의 탈출과 관련된 변수를 비교하여 루프 탈출 여부를 결정된 루프의 변수 값 및 탈출정보를 포함하는 데이터를 초기화하는 루프 초기화 장치(40), 상기 루프탈출과 관련된 변수를 저장하는 레지스터(50), 루프 주소(62), 루프 반복 횟수 및 현재 수행 횟수에 대한 정보(64)를 저장하는 스택(60)을 포함한다.
탈출 조건 저장부(10)는 프로세스 구현시 개발자가 설정한 조기 중단(early-termination)조건을 입력받고 저장한다. 다중 루프 내에서 조기 중단(early-termination)조건의 경우 각 루프별로 개별적으로 동작해야 할 경우도 있는 반면 모든 루프 내에서 동일하게 동작해야 하는 경우도 있다. 예를 들어, UMHS 탐색 알고리즘의 경우 전체 탐색 과정 중에 정해진 경계 값을 넘는 경우 탐색이 중지되는 전역(global) 조기 중단(early-termination) 조건과 특정 패턴을 사용한 탐색 과정 중에 경계값을 넘는 경우 탐색이 중지되는 지역(local) 조기 중단(early-termination) 조건이 있다. 이를 구현 시 기존 방법의 경우 비교 명령어를 각 탐색이 수행되는 지점에 이중으로 넣어야 하지만 본 발명의 하드웨어 가속장치는 다중 루프 내 전역(global) 조건과 지역(local) 조건을 루프 식별자(Tag)에 따라 구분하여 동작 유무를 결정할 수 있어 루프 세팅 시점에 한번 루프 탈출조건에 대해 설정해주면 이 후에는 별도의 부가적인 명령어 없이 다중 루프 탈출 조건에 대한 동작이 가능하다. 즉, 탈출 조건 1은 모든 루프 내에서 사용되고 탈출조건 2는 특정루프(loop 2)에서만 사용된다고 하는 경우, 루프 탈출 조건을 지정할 때 특정 식별자(Tag)를 주지 않거나 식별자(Tag)를 1로 지정하면 모든 루프 내에서 사용되고, 식별자(Tag)를 2로 지정하면 특정루프(loop 2)에서만 탈출조건이 적용된다. 실시 예로서 움직임추정(Motion Estimation) 프로세스에서는 다중루프가 필요하나, 많은 중첩 루프(Nested Loop)가 필요한 것은 아니다. 특히 SAD(Sum of Absolute difference) 전용 명령어 등을 사용하는 경우 루프 수를 많이 줄일 수 있어 3중 중첩 루프(Nested Loop) 정도까지 줄인다고 가정하였을때, 식별자(Tag)로 구분되는 루프수가 최대 3개 정도이므로 적용될 루프 식별자(Tag) 저장부에서 2비트(bit) 크기의 공간으로 구현이 가능하다.
탈출여부 판단부(20)는 다중루프의 탈출관련 변수의 갱신을 확인하고, 갱신이 있으면 상기 탈출관련 변수와 대상 탈출조건을 비교하여 탈출 여부를 판단한다. 이하 도 3을 통해 구체적으로 설명한다.
도 3을 참고하면, 도 3은 본 발명의 일 실시 예에 따른 하드웨어 가속 장치의 탈출여부 판단부(20)의 세부 블록도이다. 탈출 여부 판단부는 루프의 탈출과 관련된 변수의 갱신을 확인하는 갱신확인부(20a)와 상기 루프의 탈출 조건과 상기 관련된 변수를 비교하는 비교부(20b)를 포함한다. 종래에는 루프 종료 시점에서 비교하거나 또는 비교가 필요한 시점에 비교 명령어를 부가적으로 수행시켜야 하는 반면 본 실시예에 따른 하드웨어 가속장치는 상기 탈출과 관련된 변수가 갱신되는 시점에 비교를 수행하기 때문에 프로그램 코드 크기를 줄일 수 있다. 갱신확인부(20a)는 다중루프 프로세스의 명령어를 통해 탈출과 관련된 변수의 갱신을 확인한다. 상기 변수의 갱신이 확인되면 비교부(20b)에 신호를 출력한다. 비교부(20b)는 갱신을 확인하고 루프의 탈출 조건과 상기 관련된 변수의 비교를 수행한다. 갱신확인부(20a)의 갱신확인은 프로세스의 명령어 파이프라인 단계를 통한다. 보통 fetch-decode-ex1,ex2,····,exX-wb 단계일 때 목적지(destination)가 레지스터 이면 ex(excute) 마지막 단계, 메모리이면 wb(write back) 단계에서 갱신된다. 만약 하드웨어 가속기와 관련된 명령어인 경우에는 프로세스 개발자가 미리 설정한 제어 신호에 의해 구분 가능하다. 예를 들어 명령어의 인코딩 단계에서 구분하는 방법도 가능하다. 움직임추정(Motion Estimation)의 경우 갱신은 SAD(Sum of Absolute Difference)연산의 수행 후에 갱신된다. 이 때 SAD 연산을 수행하는 전용 명령어들을 인코딩 단계에서 특정 필드 값으로 구분하면 이후 인출(fetch) 된 명령어 레지스터의 특정 필드를 통해 비교 대상 값의 갱신 여부를 판단할 수 있다.
비교부(20b)는 탈출 조건 저장부(10)로부터 탈출 조건을, 레지스터로부터 탈출과 관련된 변수(50)를 입력 받아 탈출 여부의 판단을 하드웨어적으로 수행한다. 상기 비교부(20b)는 탈출이 결정되면 루프초기화 장치(40)에 탈출 결정 신호를 출력한다. 종래 조기 중단(early-termination)은 프로그램 내부에서 비교명령어로 수행되었다. 비교가 필요한 지점에서 조건분기(conditional jump)명령어가 수행되고 명령어 상에 표시된 분기점(jump label) 조건에 따라 프로그램 카운터(PC)값이 교체된다. 이때 사용되는 비교 명령어는 프로세서 내의 범용 레지스터 결과들 끼리 비교하거나 또는 범용 레지스터 결과와 직접 입력된 값을 비교하게 되는데 예를 들어 움직임 추정 전용 프로세서의 경우 빠른 처리를 위해 현재 연산 결과를 전용 레지스터에 저장한다. 특히 하드웨어 가속기를 포함한 움직임 추정 전용 프로세서의 경우 조기 중단(early-termination) 조건에 필요한 연산 결과는 하드웨어 가속기 내에서 처리하기 때문에 일반적인 비교 명령어를 통해 비교하기 위해서는 데이터를 범용 레지스터로 이동시키는 부가적인 동작이 필요하다. 본 실시 예에 따른 레지스터(50)는 하드웨어 가속기 내부의 연산 결과를 직접 받아 들여 저장한다. 따라서 상기 하드웨어 가속기에서 탈출 여부를 판단할 수 있기 때문에 이런 부가적인 연산을 줄 일 수 있다. 비교할 수 있는 데이터의 범위 또한 하드웨어 가속기 상에서 처리하는 어떤 종류의 데이터도 처리 가능하기 때문에 어떤 조기 중단(early-termination) 조건도 지원할 수 있다. 하드웨어적 비교가 이루어지는 경우 기존 프로세스 수행과 독립하여 수행되므로 조건비교가 추가로 이루어진다. 따라서 각 명령어의 동작시간이 증가하나 비교 대상 값의 갱신이 확인되는 경우 비교가 수행되므로, 대부분의 하드웨어 가속기관련 명령어의 동작시간 자체가 큰 것과 비교하여 증가되는 시간에 따른 성능 영향은 크지 않게 된다.
루프 식별자(Tag) 저장부(30)는 다중루프의 각 루프별 식별자를 저장한다. 루프초기화장치(40)는 루프 식별자(Tag) 저장부(30)에 저장된 루프 식별자(Tag)를 참조하여 탈출 여부판단부(20)의 비교기(20b)에서 탈출결정된 루프의 변수 값 및 탈출정보를 포함하는 데이터를 초기화 한다.
도 4는 본 발명의 일 실시예에 따른 다중 루프 처리 방법의 흐름도를 나타낸다. 본 실시예에 따른 다중 루프 처리 방법은 상술한 하드웨어 가속장치에서 처리하는 단계들로 구성된다. 따라서 이하 생략된 내용이라 하더라도 하드웨어 가속장치에 관하여 이상에서 기술된 내용은 본 실시 예에 따른 다중 루프 처리 방법에도 적용된다.
탈출 조건 저장단계(S100)는 프로세스 구현시 개발자가 설정한 조기 중단(early-termination)조건을 입력받고 탈출 조건 저장부(10)에 저장한다.다중 루프 내에서 조기 중단(early-termination)조건의 경우 각 루프별로 개별적으로 동작해야 할 경우도 있는 반면 모든 루프 내에서 동일하게 동작해야 하는 경우도 있다. 예를 들어, UMHS 탐색 알고리즘의 경우 전체 탐색 과정 중에 정해진 경계값을 넘는 경우 탐색이 중지되는 global 조기 중단(early-termination) 조건과 특정 패턴을 사용한 탐색 과정 중에 경계값을 넘는 경우 탐색이 중지되는 local 조기 중단(early-termination) 조건이 있다. 이를 구현 시 기존 방법의 경우 비교 명령어를 각 탐색이 수행되는 지점에 이중으로 넣어야 하지만 본 발명의 하드웨어 가속장치는 다중 루프 내 global 조건과 local 조건을 루프 tag에 따라 구분하여 동작 유무를 설정할 수 있다.
다중루프의 탈출관련 변수의 갱신을 확인하는 단계(S110)는 다중루프의 탈출관련 변수의 갱신을 확인한다. 종래에는 루프 종료 시점에서 비교하거나 또는 비교가 필요한 시점에 비교 명령어를 부가적으로 수행시켜야 하는 반면 본 실시 예에 따른 다중 루프 처리 방법은 상기 탈출과 관련된 변수가 갱신되는 시점에 비교를 수행 하기 때문에 프로그램 코드 크기를 줄 일 수 있다. 변수의 갱신을 확인하는 단계(S110)는 프로세스의 명령어 파이프라인 단계를 통한다. 보통 fetch-decode-ex1,ex2,····,exX-wb 단계일 때 목적지(destination)가 레지스터이면 ex(excute) 마지막 단계, 메모리이면 wb(write back) 단계에서 갱신된다. 만약 하드웨어 가속기와 관련된 명령어인 경우에는 프로세스 개발자가 미리 설정한 제어 신호에 의해 구분가능하다. 예를 들어 명령어의 인코딩 단계에서 구분하는 방법도 가능하다. 움직임추정(Motion Estimation)의 경우 갱신은 SAD(Sum of Absolute Difference)연산의 수행 후에 갱신된다. 이 때 SAD 연산을 수행하는 전용 명령어들을 인코딩 단계에서 특정 필드 값으로 구분하면 이후 인출(fetch) 된 명령어 레지스터의 특정 필드를 통해 비교 대상 값의 갱신 여부를 판단할 수 있다.
탈출여부 판단 단계(S120)는 탈출여부의 판단을 하드웨어적으로 수행한다. 종래 조기 중단(early-termination)은 프로그램 내부에서 비교명령어로 수행되었다. 비교가 필요한 지점에서 조건분기(conditional jump)명령어가 수행되고 명령어 상에 표시된 분기점(jump label) 조건에 따라 프로그램 카운터(PC)값이 교체된다. 이때 사용되는 비교 명령어는 프로세서 내의 범용 레지스터 결과들을 비교하거나 또는 범용 레지스터 결과와 직접 입력된 값을 비교하게 되는데 예를 들어 움직임 추정 전용 프로세서의 경우 빠른 처리를 위해 현재 연산 결과를 전용 레지스터에 저장한다. 특히 하드웨어 가속기를 포함한 움직임 추정 전용 프로세서의 경우 조기 중단(early-termination) 조건에 필요한 연산 결과는 하드웨어 가속기 내에서 처리 하기 때문에 일반적인 비교 명령어를 통해 비교하기 위해서는 데이터를 외부 범용 레지스터로 이동 시키는 부가적인 동작이 필요하다. 본 실시 예에 따른 다중 루프 처리 방법은 하드웨어 가속기 내부의 연산 결과를 직접 받아 들여 저장한다. 따라서 상기 하드웨어 가속기에서 탈출 여부를 판단 할 수 있기 때문에 이런 부가적인 연산을 줄 일 수 있다. 상기 탈출 여부 판단은 본 실시 예에 따른 하드웨어 가속장치의 프로세스와 독립하여 이루어지므로 탈출 불가 결정시 하드웨어 가속장치의 프로세스는 정상적으로 명령을 수행한다.
루프 데이터 초기화 단계(S130)는 탈출 여부 판단 단계(S120)의 탈출결정을 입력받아 탈출결정된 루프의 변수 값 및 탈출정보를 포함하는 데이터를 초기화한다.
종료주소 이후 명령 수행단계(S140)는 탈출 여부 판단 단계(S120)에서 탈출이 결정된 루프의 종료주소 이후의 명령어를 수행한다.
이제까지 본 발명에 대하여 그 바람직한 실시 예들을 중심으로 살펴 보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허 청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석해야 할 것이다.

Claims (13)

  1. 하나 이상의 다중루프를 포함하는 프로세스에서 각각의 루프에 대한 탈출 조건을 저장하는 탈출 조건 저장부; 및
    상기 루프의 탈출조건과 상기 다중 루프 중 적어도 하나의 루프에 대하여 상기 루프의 탈출과 관련된 변수를 비교하여 루프 탈출여부를 결정하는 탈출여부 판단부를 포함하는 하드웨어 가속장치.
  2. 제 1 항에 있어서,
    상기 루프탈출과 관련된 변수는 상기 하드웨어 가속장치 내부 또는 외부의 저장부에 저장되며 상기 프로세스 수행에 따른 연산결과 값을 포함하는 것을 특징으로 하는 하드웨어 가속장치.
  3. 제 2 항에 있어서,
    상기 하드웨어 가속장치의 저장부는 상기 하드웨어 가속장치 내부에서 상기 프로세스 수행에 따른 연산결과 값을 저장하는 레지스터인 것을 특징으로 하는 하드웨어 가속장치.
  4. 제 1 항에 있어서,
    상기 탈출여부 판단부는 상기 하드웨어 가속장치의 상기 프로세스 수행과 독립하여 수행되어 탈출결정을 하는 것을 특징으로 하는 하드웨어 가속장치.
  5. 제 1 항에 있어서,
    상기 탈출여부 판단부는 상기 루프의 탈출과 관련된 변수의 갱신을 확인하는 갱신 확인부 및 상기 루프의 탈출조건과 상기 다중 루프 중 적어도 하나의 루프에 대하여 상기 루프의 탈출과 관련된 변수를 비교하여 루프 탈출여부를 결정하는 조건 비교부를 포함하는 하드웨어 가속장치.
  6. 제 5 항에 있어서,
    상기 탈출여부 판단부는, 상기 갱신 확인부에서 상기 루프의 탈출과 관련된 변수의 갱신을 확인하여 갱신이 확인되면, 상기 루프의 탈출조건과 상기 루프와 관련된 변수를 비교하여 루프 탈출여부를 결정하는 것을 특징으로 하는 하드웨어 가속장치.
  7. 제 5 항에 있어서,
    상기 갱신 확인부의 상기 루프의 탈출과 관련된 변수의 갱신의 확인은, 상기 프로세스 상에서 수행되는 명령어의 파이프라인 단계를 확인하는 것을 특징으로 하는 하드웨어 가속장치.
  8. 제 5 항에 있어서,
    상기 갱신 확인부의 상기 루프의 탈출과 관련된 변수의 갱신의 확인은, 상기 프로세스 상에서 수행되는 명령어 인코딩단계에 구분한 필드 값을 확인하는 것을 특징으로 하는 하드웨어 가속장치.
  9. 제 1 항에 있어서,
    상기 하나 이상의 다중루프를 포함하는 상기 프로세스에서 상기 각각의 루프에 대한 식별자를 저장하는 루프 식별자(Tag) 저장부; 및
    상기 루프의 탈출조건과 상기 다중 루프 중 적어도 하나의 루프에 대하여 상기 루프의 탈출과 관련된 변수를 비교하여 루프 탈출여부를 결정된 루프의 변수 값 및 탈출정보를 포함하는 데이터를 초기화하는 루프 초기화 장치를 포함하는 하드웨어 가속장치.
  10. 하나 이상의 다중루프를 포함하는 프로세스에서 각각의 루프에 대한 탈출 조건을 저장하는 탈출 조건 저장단계;
    상기 루프의 탈출조건과 상기 다중 루프 중 적어도 하나의 루프에 대하여 상기 루프의 탈출과 관련된 변수를 비교하여 루프 탈출여부를 판단하는 탈출여부 판단 단계를 포함하는 다중 루프 탈출 처리 방법.
  11. 제 10 항에 있어서,
    상기 탈출 조건 저장단계는 상기 루프에 대한 상기 탈출 조건의 범위를 전역(Global) 또는 지역(Local)중 어느 하나로 설정하여 탈출 조건을 저장하는 것을 특징으로 하는 다중 루프 탈출 처리방법.
  12. 제 10 항에 있어서,
    상기 탈출 여부 판단 단계에서 상기 루프탈출과 관련된 변수는 하드웨어 가속장치 내부 또는 외부의 저장부에 저장되며 상기 프로세스 수행에 따른 연산결과 값을 포함하는 것을 특징으로 하는 다중 루프 탈출 처리 방법.
  13. 제 10 항에 있어서,
    상기 루프의 탈출과 관련된 변수의 갱신을 확인하는 갱신 확인단계;를 포함하고,
    상기 탈출 여부 판단 단계는 상기 갱신 확인단계에서 상기 루프의 탈출과 관련된 변수의 갱신을 확인하여 갱신이 확인되면, 상기 루프의 탈출조건과 상기 루프와 관련된 변수를 비교하여 루프 탈출 여부를 판단하는 것을 특징으로 하는 다중 루프 탈출 처리 방법.
KR1020110109404A 2011-10-25 2011-10-25 다중 루프 탈출을 지원하는 하드웨어 가속장치 KR101340459B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110109404A KR101340459B1 (ko) 2011-10-25 2011-10-25 다중 루프 탈출을 지원하는 하드웨어 가속장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110109404A KR101340459B1 (ko) 2011-10-25 2011-10-25 다중 루프 탈출을 지원하는 하드웨어 가속장치

Publications (2)

Publication Number Publication Date
KR20130044997A KR20130044997A (ko) 2013-05-03
KR101340459B1 true KR101340459B1 (ko) 2013-12-11

Family

ID=48657285

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110109404A KR101340459B1 (ko) 2011-10-25 2011-10-25 다중 루프 탈출을 지원하는 하드웨어 가속장치

Country Status (1)

Country Link
KR (1) KR101340459B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0844773A (ja) * 1994-07-26 1996-02-16 Mitsubishi Electric Corp 自動高位合成方法
KR19990085741A (ko) * 1998-05-21 1999-12-15 김영환 음성인식 시스템에서의 초기상태 분할방법
KR100640833B1 (ko) 2005-05-31 2006-11-02 엘지전자 주식회사 디지털 오디오의 부호화 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0844773A (ja) * 1994-07-26 1996-02-16 Mitsubishi Electric Corp 自動高位合成方法
KR19990085741A (ko) * 1998-05-21 1999-12-15 김영환 음성인식 시스템에서의 초기상태 분할방법
KR100640833B1 (ko) 2005-05-31 2006-11-02 엘지전자 주식회사 디지털 오디오의 부호화 방법

Also Published As

Publication number Publication date
KR20130044997A (ko) 2013-05-03

Similar Documents

Publication Publication Date Title
KR101827747B1 (ko) 동일한 데이터 조건에 의존하는 인접 명령의 실행 제어
KR102379894B1 (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
US8954946B2 (en) Static branch prediction method and code execution method for pipeline processor, and code compiling method for static branch prediction
US20110099555A1 (en) Reconfigurable processor and method
US11163574B2 (en) Method for maintaining a branch prediction history table
EP3166015A1 (en) Fetch ahead branch target buffer
US20210365265A1 (en) Processor achieving zero-overhead loop
WO2012136975A1 (en) A data processing apparatus and method for performing vector operations
CN112148367A (zh) 用于处理循环指令集合的方法、装置、设备和介质
JP7232331B2 (ja) ループ終了予測器
JP3749233B2 (ja) パイプラインでの命令実行方法及び装置
EP2972789B1 (en) Method to improve speed of executing return branch instructions in a processor
JP3900359B2 (ja) パイプライン化されたプロセッサ及び命令ループ実行方法
IL256403A (en) Array query length instruction
KR101340459B1 (ko) 다중 루프 탈출을 지원하는 하드웨어 가속장치
US10963260B2 (en) Branch predictor
JP2010152843A (ja) 分岐予測の信頼度見積もり回路及びその方法
CN112740175A (zh) 基于加载路径历史的分支预测
US11915004B2 (en) Control flow prediction
KR20240063179A (ko) 제어 플로우 공격 검출 기능을 구비한 코어 프로세서 및 용장 브랜치 프로세서
JP2006502490A (ja) アドレス範囲に依存した命令並行処理を行うデータ処理装置
KR19990084909A (ko) 수퍼스칼라 파이프라인 구조
KR20140011940A (ko) 분기 명령 실행 캐쉬를 이용한 프로세서 및 분기 명령 실행 캐쉬를 이용한 프로세서의 동작 방법
JP2014059665A (ja) マイクロコンピュータ及びマイクロコンピュータにおける命令処理方法

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: 20161004

Year of fee payment: 4