KR100781358B1 - 데이터 처리 시스템 및 그의 데이터 처리방법 - Google Patents

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

Info

Publication number
KR100781358B1
KR100781358B1 KR1020050099901A KR20050099901A KR100781358B1 KR 100781358 B1 KR100781358 B1 KR 100781358B1 KR 1020050099901 A KR1020050099901 A KR 1020050099901A KR 20050099901 A KR20050099901 A KR 20050099901A KR 100781358 B1 KR100781358 B1 KR 100781358B1
Authority
KR
South Korea
Prior art keywords
loop
data
register file
data processing
accelerator
Prior art date
Application number
KR1020050099901A
Other languages
English (en)
Other versions
KR20070043536A (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 KR1020050099901A priority Critical patent/KR100781358B1/ko
Priority to US11/542,118 priority patent/US8019982B2/en
Publication of KR20070043536A publication Critical patent/KR20070043536A/ko
Application granted granted Critical
Publication of KR100781358B1 publication Critical patent/KR100781358B1/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/22Microcontrol or microprogram arrangements
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

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

Abstract

본 발명은 데이터 처리 시스템 및 데이터 처리방법에 관한 것이다. 본 발명에 따른 데이터 처리 시스템은, 프로그램을 수행하는 프로세서 코어와, 복수개의 데이터 처리셀로 구성된 어레이부를 포함하고, 소정의 구성 비트 집합(set of configuration bits)에 따라 어레이부를 구성하여 프로그램에 포함된 소정 루프를 수행하는 루프 가속기 및, 프로그램 수행 중에 사용되는 데이터를 프로세서 코어와 루프 가속기 사이에서 공유시키는 중앙 레지스터 파일을 포함하며, 루프 가속기는 루프의 수행 중 중앙 레지스터 파일과의 데이터 교환 여부에 따라 어레이부의 구성을 적어도 3개의 단계로 나누어 재구성한다. 이에 의해, 루프 수행 중에 루프 가속기와 중앙 레지스터 파일 사이의 데이터 교환을 위해 사용되는 라우팅 리소스의 불필요한 점유를 줄일 수 있다.
중앙 레지스터 파일, 프로세서 코어, 루프, 프로그램, 가속기

Description

데이터 처리 시스템 및 그의 데이터 처리방법{System and method for data process}
도 1은 종래의 데이터 처리 시스템의 일 예를 나타내는 도면,
도 2(a) 내지 도 2(c)는 본 발명에 따른 데이터 처리 시스템에서 루프 수행 중 데이터 전달을 기준으로 루프 가속기의 구성을 적어도 3개의 단계로 나누어 구성할 수 있음을 설명하기 위해 제공되는 도면,
도 3은 본 발명의 일 실시예에 따른 데이터 처리 시스템을 일 예를 나타내는 블록도, 그리고,
도 4는 본 발명에 따른 데이터 처리 시스템의 데이터 처리방법을 나타낸 흐름도이다.
* 도면의 주요 부분에 대한 간단한 설명 *
100: 프로세서 코어 200: 중앙 레지스터 파일
300: 루프 가속기 310: 어레이부
311: 데이터 처리셀 311a: 기능 유닛
311b: 분산 레지스터 파일 320: 구성 메모리
본 발명은 데이터 처리 시스템 및 데이터 처리 방법에 관한 것으로서, 보다 상세하게는, 루프 가속기와 중앙 레지스터 파일 사이에 데이터 교환이 이루어지는지 여부에 따라 프로그램에 포함된 루프를 적어도 3개의 단계로 나누고, 루프의 각 단계마다 루프 가속기의 어레이부의 구성을 달리하여 루프를 수행하도록 하는 데이터 처리 시스템 및 데이터 처리 방법에 관한 것이다.
도 1은 종래의 데이터 처리 시스템의 일 예를 나타내는 도면이다.
종래의 데이터 처리 시스템(10)은 프로세서 코어(11), 중앙 레지스터 파일(12) 및 루프 가속기(13)를 포함한다. 일반적으로, 종래의 데이터 처리 시스템(10)은 프로그램 중에서 루프 부분은 루프 가속기(13)에 의해 신속하게 수행되도록 하고 프로그램의 나머지 부분은 프로세서 코어(11)에 의해 수행되도록 하고 있다. 이 경우, 루프 가속기(13)와 프로세서 코어(11)는 중앙 레지스터 파일(12)을 공유하여 데이터를 상호 전달하도록 구성될 수 있다.
한편, 종래의 루프 가속기(13)는 구성 메모리(13b)에 저장되어 있는 구성 비트 집합(set of configuration bits)중에서 현재 수행되는 루프에 대응하는 구성 비트 집합에 따라 복수의 데이터 처리셀(C11, C12, …, C33, C34)로 이루어진 어레이부(13a)의 구성(configuration)을 달리하여 데이터를 처리하며, 어레이부(13a)의 구성은 하나의 루프를 수행하는 동안에 변경하지 않는 방식을 주로 채용하였다. 또한, 하나의 루프 수행 중에 어레이부(13a)의 구성을 변경하더라도 중앙 레지스터 파일(12)과 루프 가속기(13)사이의 데이터 교환 여부에 따라 어레이부(13a)의 구성 을 달리하는 것에 대한 고려는 전혀 이루어지지 않았다.
이와 같은 종래 방식에서, 루프 가속기(13)는 중앙 레지스터 파일(12)에 액세스하여 레지스터(R3, R4)로부터 읽어온 라이브-인(live-in)값 또는 루프 불변값(loop invariant)들을 해당 값들이 요구되는 데이터 처리셀들(C22, C14)로 라우팅하기 위해서는 도 1에 도시된 바와 같이 데이터 처리셀들(C13, C23)을 라이브-인 값 또는 루프 불변값의 라우팅 리소스(routing resource)로써 루프 수행 중에 계속 점유하여 사용한다. 마찬가지로, 라이브-아웃(live-out)값을 데이터 처리셀(C32)로부터 중앙 레지스터 파일(12)의 레지스터(R1)에 전달하기 위해 데이터 처리셀들(C11, C12)을 라우팅 리소스로써 루프 수행 중에 계속 점유하여 사용한다.
따라서, 종래 방식의 경우 중앙 레지스터 파일(12)과 루프 가속기(13) 사이에 라이브-인/아웃 값의 전달이 필요하지 않은 단계에서도 라우팅 리소스의 점유가 불필요하게 이루어지기 때문에 정체 현상(congestion)이 발생하게 되고, 그로 인해 루프 가속기(13)에 적용할 수 있는 애플리케이션(application)들이 제한되는 등 데이터 처리 시스템의 성능이 저하될 수 있는 문제점이 있었다.
따라서, 본 발명의 목적은 프로그램에 포함된 루프를 루프 가속기와 중앙 레지스터 파일 사이에 데이터 교환이 이루어지는지 여부에 따라 적어도 3개의 단계로 나누고, 루프의 각 단계마다 루프 가속기의 어레이부의 구성을 달리하여 루프를 수행하도록 함으로써 루프 가속기와 중앙 레지스터 파일 사이의 데이터 교환을 위해 사용되는 라우팅 리소스의 불필요한 점유를 줄일 수 있는 데이터 처리 시스템 및 데이터 처리 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 데이터 처리 시스템은, 프로그램을 수행하는 프로세서 코어와, 복수개의 데이터 처리셀로 구성된 어레이부를 포함하고, 소정의 구성 비트 집합(set of configuration bits)에 따라 상기 어레이부를 구성하여 상기 프로그램에 포함된 소정 루프를 수행하는 루프 가속기 및, 상기 프로그램 수행 중에 사용되는 데이터를 상기 프로세서 코어와 상기 루프 가속기 사이에서 공유시키는 중앙 레지스터 파일을 포함하며, 상기 루프 가속기는 상기 루프의 수행 중 상기 중앙 레지스터 파일과 데이터 교환 여부에 따라 상기 어레이부의 구성을 적어도 3개의 단계로 나누어 재구성한다.
여기서, 상기 적어도 3개의 단계는, 상기 루프 가속기가, 상기 중앙 레지스터 파일에서 상기 루프 수행을 위한 데이터를 읽어오는 제1 단계, 상기 데이터를 이용하여 상기 루프를 수행하는 제2 단계 및 상기 루프 수행 결과 얻어진 데이터를 상기 중앙 레지스터 파일에 쓰는 제3 단계를 포함하는 것이 바람직하다.
또한, 상기 루프 가속기는, 상기 제2 단계 수행 시 상기 중앙 레지스터 파일을 상기 프로세서 코어에 해제(release)하는 것이 바람직하다.
또한, 상기 루프 가속기는, 상기 적어도 3개의 단계에 따라 상기 어레이부를 각각 구성하기 위한 적어도 3개의 구성 비트 집합을 저장하는 구성 메모리를 더 포함하는 것이 바람직하다.
상기 적어도 3개의 구성 비트 집합은, 상기 어레이부를 상기 제1 단계를 수 행할 수 있도록 구성하기 위한 제1 구성 비트 집합, 상기 어레이부를 상기 제2 단계를 수행할 수 있도록 구성하기 위한 제2 구성 비트 집합 및 상기 어레이부를 상기 제3 단계를 수행할 수 있도록 구성하기 위한 제3 구성 비트 집합인 것이 바람직하다.
또한, 상기 복수개의 데이터 처리셀은, 상기 루프 수행 중에 사용되는 데이터를 저장하는 분산 레지스터 파일 및, 상기 루프 수행 중에 요구되는 데이터 처리를 위한 소정의 연산을 수행하는 기능 유닛을 각각 포함하는 것이 바람직하다.
또한, 상기 구성 비트 집합은, 상기 복수개의 데이터 처리셀에서 수행되는 연산의 종류 및 상기 복수개의 데이터 처리셀에서 처리된 데이터의 전달 경로를 각각 설정해주는 복수개의 구성 비트로 이루어진 것이 바람직하다.
한편, 상기 목적을 달성하기 위한 본 발명에 따른 데이터 처리방법은, 프로그램을 수행하는 프로세서 코어 및 복수개의 데이터 처리셀로 구성된 어레이부를 소정의 구성 비트 집합에 따라 구성하여 상기 프로그램에 포함된 소정 루프를 수행하는 루프 가속기가 상기 프로그램 수행 중에 사용되는 데이터를 중앙 레지스터 파일을 통해 공유하는 데이터 처리 시스템에서, (a) 상기 중앙 레지스터 파일에서 상기 루프 수행을 위한 데이터를 읽어올 수 있도록 상기 어레이부를 구성하고 상기 데이터를 읽어오는 단계와, (b) 상기 읽어온 데이터를 이용하여 상기 루프를 수행할 수 있도록 상기 어레이부를 구성하고 상기 루프를 수행하는 단계 및, (c) 상기 루프 수행 결과 얻어진 데이터를 상기 중앙 레지스터 파일에 쓸 수 있도록 상기 어레이부를 구성하고 상기 데이터를 상기 중앙 레지스터 파일에 쓰는 단계를 포함한 다.
또한, 상기 (b) 단계에서, 상기 어레이부의 구성은 상기 중앙 레지스터 파일과 상기 루프 가속기 사이의 데이터 교환이 이루어지지 않도록 구성되는 것이 바람직하다.
또한, 상기 루프 가속기는, 상기 (b) 단계 수행 시 상기 중앙 레지스터 파일을 상기 프로세서 코어에 해제(release)하는 것이 바람직하다.
또한, 상기 (a) 단계는, 상기 루프 수행을 위한 데이터가 상기 중앙 레지스터 파일에서 상기 데이터를 필요로 하는 데이터 처리셀의 분산 레지스터 파일로 전달되어 저장되는 단계를 포함하는 것이 바람직하다.
또한, 상기 (c) 단계는, 상기 루프 수행 결과 상기 데이터 처리셀의 분산 레지스터 파일에 저장되어 있는 데이터 중 상기 프로세서 코어에서 필요로 하는 데이터를 상기 중앙 레지스터 파일로 전달하여 저장하는 단계를 포함하는 것이 바람직하다.
이하 첨부된 도면들을 참조하여 본 발명의 실시예를 보다 상세하게 설명한다. 다만, 본 발명을 설명함에 있어서, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략한다.
먼저, 본 발명에 따른 데이터 처리 시스템의 동작 원리에 대해 도 2(a) 내지 도 2(c)를 참조하여 간단히 설명하기로 한다. 도 2(a) 내지 도 2(c)는 본 발명에 따른 데이터 처리 시스템에서 루프 수행 중 데이터 전달을 기준으로 루프 가속기의 구성을 적어도 3개의 단계로 나누어 구성할 수 있음을 설명하기 위해 제공되는 도면이다.
루프 가속기(300)에서 수행되는 루프는 아래와 같이 적어도 3개의 단계로 나눌 수 있다. 첫 번째 단계는, 도 2(a)에 도시한 바와 같이, 루프 수행에 필요한 데이터, 예컨대, 라이브-인 값(live-in value) 및 루프 불변값(loop invariant value)이 중앙 레지스터 파일(200)의 레지스터(R3, R4)로부터 루프 가속기(300)의 해당 데이터를 필요로 하는 데이터 처리셀(C22, C14)로 전달되는 초기 단계(initialization phase)이다.
두 번째 단계는, 도 2(b)에 도시한 바와 같이, 중앙 레지스터 파일(200)과 루프 가속기(300)사이의 데이터 교환 없이 루프 가속기(300)에서 루프를 수행하는 커널 단계(kernel phase)이며, 루프의 대부분을 차지한다.
세 번째 단계는, 도 2(c)에 도시한 바와 같이, 루프 가속기(300)에서 루프 수행 결과 얻어진 데이터, 라이브-아웃 값(live-out value)이 데이터 처리셀(C32)로부터 중앙 레지스터 파일(200)의 레지스터(R1)로 전달되는 최종 단계(finalization phase)이다.
루프 수행의 초기 단계에서는 루프 가속기(300)에서 중앙 레지스터 파일(200)로 데이터를 전달하기 위한 데이터 처리셀들(C11, C12)을 라우팅 리소스로써 점유하지 않아도 되며, 커널 단계에서는 루프 가속기(300) 및 중앙 레지스터 파일(200)사이의 데이터 교환을 위해 사용되는 데이터 처리셀(C11, C12, C13, C14, C22, C23, C32) 모두를 다른 작업을 위해 사용할 수 있다.
마찬가지로, 최종 단계에서는 중앙 레지스터 파일(200)로부터 루프 가속기(300)로 데이터를 전달받기 위한 라우팅 리소스로써 데이터 처리셀(C13, C14, C22, C23)을 다른 작업을 위해 사용할 수 있게 된다. 따라서, 루프 수행의 초기, 커널, 최종 단계에 따라 루프 가속기(300)의 구성을 달리할 경우 데이터 처리셀들을 루프 수행 중에 보다 효율적으로 사용할 수 있다. 특히, 루프의 대부분을 차지하는 커널 단계에서 루프 가속기(300)는 라우팅 리소스를 불필요하게 점유하지 않게 된다.
이하, 도 3을 참조하여 도 2에서 설명한 본 발명의 동작원리에 따라 동작하는 데이터 처리 시스템의 일 실시예에 대해서 설명하기로 한다.
도 3을 참조하면, 본 발명에 따른 데이터 처리 시스템은 프로세서 코어(100), 중앙 레지스터 파일(200) 및 루프 가속기(300)를 포함한다. 루프 가속기(300)는 복수개의 데이터 처리셀(311)로 이루어진 어레이부(310) 및 구성 메모리(320)를 포함한다. 데이터 처리셀(311)은 기능유닛(311a) 및 분산 레지스터 파일(311b)을 각각 포함한다.
프로세서 코어(100)는 메모리(미도시)에 저장되어 있는 소정 프로그램의 명령어 및 데이터를 캐시(미도시)를 통해 읽어 와서 해당 프로그램을 수행하는 역할을 담당하며, 주로 프로그램 중에서 루프 부분 이외의 나머지 부분을 주로 수행한다.
또한, 프로세서 코어(100)는 프로그램 수행 중 루프 부분을 만난 경우에 루프 수행을 위해 필요로 하는 데이터, 예컨대, 라이브-인 값(live-in value)또는 루프 불변값(loop invariant value)을 중앙 레지스터 파일(200)에 로딩하도록 하는 명령어를 수행하여, 루프 수행에 필요한 값들이 루프 가속기(300)의 데이터 처리셀(311)로 전달되도록 할 수 있다.
또한, 프로세서 코어(100)는 루프 수행에 필요한 값들을 중앙 레지스터 파일(200)에 로딩한 후 루프 가속기(300)가 루프 수행을 개시하도록 하는 명령어를 실행하여 루프 가속기(300)의 루프 수행을 개시하도록 한다. 여기서, 루프 수행을 개시하도록 하는 명령어는 루프 가속기(300)가 중앙 레지스터 파일(200)로부터 라이브-인 값 또는 루프 불변값을 필요로 하는 데이터 처리셀(311)의 분산 레지스터 파일(311b)로 읽어올 수 있도록 어레이부(310)를 구성시키는 구성 비트 집합이 구성 메모리(320)에서 선택되어 어레이부(310)에 적용되도록 한다.
또한, 프로세서 코어(100)는 루프 가속기(300)에서 루프 수행 후 구해진 라이브-아웃 값을 중앙 레지스터 파일(200)을 통해 전달 받아 프로그램의 다음 부분을 계속하여 수행할 수 있으며, 또한, 루프 수행 중 중앙 레지스터 파일(200)을 루프 가속기(300)로부터 해제(release)받아 다른 작업을 동시에 처리할 수도 있다.
루프 가속기(300)는 구성 메모리(320)에 저장된 구성 비트 집합에 따라 어레이부(320)를 구성하여 프로세서 코어(100)에서 수행 중인 프로그램에 포함된 소정 루프를 수행한다.
특히, 본 발명에 있어서, 루프 가속기(300)는 루프의 수행 중 중앙 레지스터 파일(200)과 데이터 교환이 이루어지는지 여부에 따라 어레이부(310)의 구성을 적어도 3개의 단계로 달리할 수 있다. 상술한 바와 같이, 적어도 3개의 단계는 루프 가속기(300)가 중앙 레지스터 파일(200)에서 루프 수행을 위한 데이터를 읽어오는 초기 단계, 중앙 레지스터 파일(200)과 데이터 교환 없이 루프를 수행하는 커널 단계 및 루프 수행 결과 얻어진 데이터를 중앙 레지스터 파일(200)에 쓰는 최종 단계로 나눌 수 있다.
여기서, 구성 비트 집합은 각각의 데이터 처리셀(311)에 포함된 기능 유닛(311a)이 수행해야 할 연산의 종류 및 각각의 데이터 처리셀(311)에서 처리된 데이터들의 전달 경로를 설정하기 위한 정보를 가지는 복수개의 구성 비트(configuration bits)들의 집합을 의미하며, 이러한, 구성 비트 집합은 설계자에 의해 구성 메모리(320)에 미리 저장되거나, 프로그램 수행 중에 메모리(미도시)로부터 독출되어 저장될 수 있다.
구성 메모리(320)는 루프의 초기 단계를 수행할 수 있도록 어레이부(310)를 구성시키는 제1 구성 비트 집합, 루프의 커널 단계를 수행할 수 있도록 어레이부(310)를 구성시키는 제2 구성 비트 집합과 루프의 최종 단계를 수행할 수 있도록 어레이부(310)를 구성시키는 제3 구성 비트 집합을 저장할 수 있다.
어레이부(310)는 복수의 데이터 처리셀(311)들로 이루어지며 구성 메모리(320)에 저장되어 있는 구성 비트 집합 중에서 선택된 구성 비트 집합에 따라 데이터 처리셀들(311)을 구성하여 루프를 수행한다.
데이터 처리셀(311)은 각각 기능 유닛(311a)과 분산 레지스터 파일(311b)을 포함할 수 있다. 기능 유닛(311a)은 구성 비트 집합에 의해 설정된 데이터 처리 기능을 수행하며, 이를 위한 산술 논리 연산 유닛(미도시)을 포함할 수 있다. 분산 레지스터 파일(311b)은 기능 유닛(311a)이 필요로 하거나 기능 유닛(311a)에서 처 리된 데이터를 임시저장한다.
한편, 루프 가속기(300)는 어레이부(310)를 루프의 커널 단계를 수행할 수 있도록 구성하고 루프를 수행하는 중에 루프 완료 조건(loop termination condition)이 만족되면 구성 메모리(320)에 저장된 제3 구성 비트 집합을 적용하여 어레이부(310)의 구성을 루프의 최종 단계를 수행할 수 있도록 재구성함으로써, 루프 수행 결과 구해진 라이브-아웃 값이 데이터 처리셀(311)로부터 중앙 레지스터 파일(200)로 전달되도록 한다.
또한, 루프 가속기(300)는 커널 단계 수행 시 중앙 레지스터 파일(200)과 데이터 교환을 수행하지 않으므로 중앙 레지스터 파일(200)을 해제(release)하여 프로세서 코어(100)에서 사용할 수 있도록 하는 것이 바람직하다.
도 4는 본 발명에 따른 데이터 처리 시스템의 데이터 처리방법을 나타낸 흐름도이다.
도 4를 참조하면, 먼저, 프로그램 수행 중 루프 부분에 도달하면(S405-Y), 프로세서 코어(100)는 구성 메모리(320)에 저장되어 있는 구성 비트 집합 중 루프 초기 단계 수행에 대응하는 구성 비트 집합이 선택되어 루프 가속기(300)의 어레이부(310)에 적용되도록 한다(S410).
다음으로, 루프 가속기(300)는 S410 단계에서 선택된 구성 비트 집합에 따라 어레이부(310)를 루프 초기 단계 수행을 할 수 있도록 구성한다(S415).
이후, 루프 가속기(300)는 중앙 레지스터 파일(200)로부터 루프 수행을 위해 필요한 데이터인 라이브-인 값 또는 루프 불변값을 읽어 와서 데이터 처리셀(311) 의 분산 레지스터 파일(311b)에 저장되도록 한다(S420).
다음으로, 루프 초기 단계의 수행이 완료되면(S425-Y), 루프 가속기(300)는 구성 메모리(320)에 저장된 구성 비트 집합 중에서 루프 커널 단계 수행에 대응하는 구성 비트 집합을 적용하여 어레이부(310)를 재구성한다(S430).
이후, 루프 가속기(300)는 S420 단계에서 읽어온 데이터를 이용하여 루프를 완료 조건이 만족될 때까지 수행한다(S435). 본 단계에서는 루프 가속기(300)와 중앙 레지스터 파일(200) 사이에 데이터 교환 없이 루프가 수행되도록 어레이부(310)가 구성되어 있기 때문에 상기한 바와 같이 데이터 처리셀들(311)은 라우팅 리소스로써 점유됨 없이 순수하게 루프 수행만을 위해 사용될 수 있다. 한편, 본 단계에서 루프 가속기(300)는 프로세서 코어(100)에 중앙 레지스터 파일(200)을 해제(release)하여 프로세서 코어(100)에서 중앙 레지스터 파일(200)을 이용하여 프로그램의 다른 작업을 병렬로 처리할 수 있도록 구현하는 것이 바람직하다.
다음으로, 루프 완료 조건이 만족되면(S440-Y), 루프 가속기(300)는 구성 메모리(320)에 저장된 구성 비트 집합 중에서 루프 최종 단계 수행에 대응하는 구성 비트 집합을 적용하여 어레이부(310)를 재구성한다(S445).
이후, 루프 가속기(300)는 루프 수행 결과 구해진 라이브-아웃 값을 데이터 처리셀(311)의 분산 레지스터 파일(311b)에서 중앙 레지스터 파일(200)로 전달하여 저장되도록 하고, 프로세서 코어에 루프 수행이 완료되었음을 통지한다(S450).
다음으로, 프로세서 코어(100)는 라이브-아웃 값을 이용하여 프로그램의 다음 부분을 수행한다(S455).
이상에서 설명한 바와 같이, 본 발명에 의하면, 루프 수행 중에 루프 가속기와 중앙 레지스터 파일 사이의 데이터 교환을 위해 사용되는 라우팅 리소스의 불필요한 점유를 줄일 수 있는 장점이 있다.
또한, 루프 가속기의 데이터 처리셀을 보다 효율적으로 사용할 수 있게 되며, 이에 의해 보다 다양한 애플리케이션을 루프 가속기에서 처리할 수 있는 장점이 있다.
이상에서는 본 발명의 바람직한 실시예에 대해서 도시하고 설명하였으나, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.

Claims (12)

  1. 프로그램을 수행하는 프로세서 코어;
    복수개의 데이터 처리셀로 구성된 어레이부를 포함하고, 소정의 구성 비트 집합(set of configuration bits)에 따라 상기 어레이부를 구성하여 상기 프로그램에 포함된 소정 루프를 수행하는 루프 가속기; 및,
    상기 프로그램 수행 중에 사용되는 데이터를 상기 프로세서 코어와 상기 루프 가속기 사이에서 공유시키는 중앙 레지스터 파일; 을 포함하며,
    상기 루프 가속기는 상기 루프의 수행 중 상기 중앙 레지스터 파일과 데이터 교환 여부에 따라 상기 어레이부의 구성을 적어도 3개의 단계로 나누어 재구성하는 것을 특징으로 하는 데이터 처리 시스템.
  2. 제 1 항에 있어서, 상기 적어도 3개의 단계는,
    상기 루프 가속기가, 상기 중앙 레지스터 파일에서 상기 루프 수행을 위한 데이터를 읽어 오는 제1 단계, 상기 데이터를 이용하여 상기 루프를 수행하는 제2 단계 및 상기 루프 수행 결과 얻어진 데이터를 상기 중앙 레지스터 파일에 쓰는 제3 단계를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  3. 제 2 항에 있어서, 상기 루프 가속기는,
    상기 제2 단계 수행 시 상기 중앙 레지스터 파일을 상기 프로세서 코어에 해제(release)하는 것을 특징으로 하는 데이터 처리 시스템.
  4. 제 3 항에 있어서, 상기 루프 가속기는,
    상기 적어도 3개의 단계에 따라 상기 어레이부를 각각 구성하기 위한 적어도 3개의 구성 비트 집합을 저장하는 구성 메모리; 를 더 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  5. 제 4 항에 있어서, 상기 적어도 3개의 구성 비트 집합은,
    상기 어레이부를 상기 제1 단계를 수행할 수 있도록 구성하기 위한 제1 구성 비트 집합, 상기 어레이부를 상기 제2 단계를 수행할 수 있도록 구성하기 위한 제2 구성 비트 집합 및 상기 어레이부를 상기 제3 단계를 수행할 수 있도록 구성하기 위한 제3 구성 비트 집합인 것을 특징으로 하는 데이터 처리 시스템.
  6. 제 1 항에 있어서, 상기 복수개의 데이터 처리셀은,
    상기 루프 수행 중에 사용되는 데이터를 저장하는 분산 레지스터 파일 및, 상기 루프 수행 중에 요구되는 데이터 처리를 위한 소정의 연산을 수행하는 기능 유닛을 각각 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  7. 제 6 항에 있어서, 상기 구성 비트 집합은,
    상기 복수개의 데이터 처리셀에서 수행되는 연산의 종류 및 상기 복수개의 데이터 처리셀에서 처리된 데이터의 전달 경로를 각각 설정해주는 복수개의 구성 비트로 이루어진 것을 특징으로 하는 데이터 처리 시스템.
  8. 프로그램을 수행하는 프로세서 코어 및 복수개의 데이터 처리셀로 구성된 어레이부를 소정의 구성 비트 집합에 따라 구성하여 상기 프로그램에 포함된 소정 루프를 수행하는 루프 가속기가 상기 프로그램 수행 중에 사용되는 데이터를 중앙 레지스터 파일을 통해 공유하는 데이터 처리 시스템의 데이터 처리방법에 있어서,
    (a) 상기 중앙 레지스터 파일에서 상기 루프 수행을 위한 데이터를 읽어올 수 있도록 상기 어레이부를 구성하고 상기 데이터를 읽어오는 단계;
    (b) 상기 읽어온 데이터를 이용하여 상기 루프를 수행할 수 있도록 상기 어레이부를 구성하고 상기 루프를 수행하는 단계; 및,
    (c) 상기 루프 수행 결과 얻어진 데이터를 상기 중앙 레지스터 파일에 쓸 수 있도록 상기 어레이부를 구성하고 상기 데이터를 상기 중앙 레지스터 파일에 쓰는 단계; 를 포함하는 것을 특징으로 하는 데이터 처리방법.
  9. 제 8 항에 있어서, 상기 (b) 단계에서,
    상기 어레이부의 구성은 상기 중앙 레지스터 파일과 상기 루프 가속기 사이의 데이터 교환이 이루어지지 않도록 구성되는 것을 특징으로 하는 데이터 처리방법.
  10. 제 8 항에 있어서, 상기 루프 가속기는,
    상기 (b) 단계 수행 시 상기 중앙 레지스터 파일을 상기 프로세서 코어에 해제(release)하는 것을 특징으로 하는 데이터 처리방법.
  11. 제 10 항에 있어서, 상기 (a) 단계는,
    상기 루프 수행을 위한 데이터가 상기 중앙 레지스터 파일에서 상기 데이터를 필요로 하는 데이터 처리셀의 분산 레지스터 파일로 전달되어 저장되는 단계; 를 포함하는 것을 특징으로 하는 데이터 처리방법.
  12. 제 10 항에 있어서, 상기 (c) 단계는,
    상기 루프 수행 결과 상기 데이터 처리셀의 분산 레지스터 파일에 저장되어 있는 데이터 중 상기 프로세서 코어에서 필요로 하는 데이터를 상기 중앙 레지스터 파일로 전달하여 저장하는 단계; 를 포함하는 것을 특징으로 하는 데이터 처리방법.
KR1020050099901A 2005-10-21 2005-10-21 데이터 처리 시스템 및 그의 데이터 처리방법 KR100781358B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020050099901A KR100781358B1 (ko) 2005-10-21 2005-10-21 데이터 처리 시스템 및 그의 데이터 처리방법
US11/542,118 US8019982B2 (en) 2005-10-21 2006-10-04 Loop data processing system and method for dividing a loop into phases

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050099901A KR100781358B1 (ko) 2005-10-21 2005-10-21 데이터 처리 시스템 및 그의 데이터 처리방법

Publications (2)

Publication Number Publication Date
KR20070043536A KR20070043536A (ko) 2007-04-25
KR100781358B1 true KR100781358B1 (ko) 2007-11-30

Family

ID=38007939

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050099901A KR100781358B1 (ko) 2005-10-21 2005-10-21 데이터 처리 시스템 및 그의 데이터 처리방법

Country Status (2)

Country Link
US (1) US8019982B2 (ko)
KR (1) KR100781358B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101335001B1 (ko) * 2007-11-07 2013-12-02 삼성전자주식회사 프로세서 및 인스트럭션 스케줄링 방법
US9063735B2 (en) * 2010-10-19 2015-06-23 Samsung Electronics Co., Ltd. Reconfigurable processor and method for processing loop having memory dependency
KR101722695B1 (ko) * 2010-10-19 2017-04-04 삼성전자주식회사 메모리 의존성 있는 루프를 처리하기 위한 재구성 가능 프로세서 및 방법
KR101731929B1 (ko) 2011-02-08 2017-05-02 삼성전자주식회사 재구성 가능 프로세서 및 구동 제어 방법
US11061539B2 (en) * 2013-03-15 2021-07-13 The Mathworks, Inc. Reference nodes in a computational graph
KR102607421B1 (ko) * 2020-04-27 2023-11-29 한국전자통신연구원 광 회선을 통해 상호 연결된 컴퓨팅 자원 분할 협업 시스템, 자원 분할 협업 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004021425A (ja) 2002-06-13 2004-01-22 Hitachi Ltd コンパイラにおけるメモリ配置方式
KR20040069335A (ko) * 2001-12-21 2004-08-05 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 레지스터 파일, 멀티프로세서 시스템, 디지털 신호 처리최적화 방법 및 디지털 필터링 방법
KR20060090512A (ko) * 2005-02-07 2006-08-11 재단법인서울대학교산학협력재단 리소스 공유 및 파이프 라이닝 구성을 갖는 재구성가능배열구조

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121502A (en) * 1989-12-20 1992-06-09 Hewlett-Packard Company System for selectively communicating instructions from memory locations simultaneously or from the same memory locations sequentially to plurality of processing
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US6438747B1 (en) * 1999-08-20 2002-08-20 Hewlett-Packard Company Programmatic iteration scheduling for parallel processors
US6507947B1 (en) * 1999-08-20 2003-01-14 Hewlett-Packard Company Programmatic synthesis of processor element arrays
US6374403B1 (en) * 1999-08-20 2002-04-16 Hewlett-Packard Company Programmatic method for reducing cost of control in parallel processes
US6892380B2 (en) * 1999-12-30 2005-05-10 Texas Instruments Incorporated Method for software pipelining of irregular conditional control loops
US6567895B2 (en) * 2000-05-31 2003-05-20 Texas Instruments Incorporated Loop cache memory and cache controller for pipelined microprocessors
US6772355B2 (en) * 2000-12-29 2004-08-03 Stmicroelectronics, Inc. System and method for reducing power consumption in a data processor having a clustered architecture
US6766445B2 (en) * 2001-03-23 2004-07-20 Hewlett-Packard Development Company, L.P. Storage system for use in custom loop accelerators and the like
WO2003032154A1 (en) * 2001-10-08 2003-04-17 Telefonaktiebolaget Lm Ericsson Hidden job start preparation in an instruction-parallel processor system
GB2380825B (en) * 2001-10-12 2004-07-14 Siroyan Ltd Processors and compiling methods for processors
JP4272371B2 (ja) * 2001-11-05 2009-06-03 パナソニック株式会社 デバッグ支援装置、コンパイラ装置、デバッグ支援プログラム、コンパイラプログラム、及びコンピュータ読取可能な記録媒体。
US20030154469A1 (en) * 2001-12-20 2003-08-14 Timothy Anderson Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor
US20030120900A1 (en) * 2001-12-20 2003-06-26 Stotzer Eric J. Apparatus and method for a software pipeline loop procedure in a digital signal processor
US20030182511A1 (en) * 2001-12-20 2003-09-25 Asal Michael D. Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor
US20030120899A1 (en) * 2001-12-20 2003-06-26 Stotzer Eric J. Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor
US20030120905A1 (en) * 2001-12-20 2003-06-26 Stotzer Eric J. Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor
US20030120882A1 (en) * 2001-12-20 2003-06-26 Granston Elana D. Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
US7086038B2 (en) * 2002-10-07 2006-08-01 Hewlett-Packard Development Company, L.P. System and method for creating systolic solvers
US8667252B2 (en) * 2002-11-21 2014-03-04 Stmicroelectronics, Inc. Method and apparatus to adapt the clock rate of a programmable coprocessor for optimal performance and power dissipation
US20040221283A1 (en) * 2003-04-30 2004-11-04 Worley Christopher S. Enhanced, modulo-scheduled-loop extensions
US7669042B2 (en) * 2005-02-17 2010-02-23 Samsung Electronics Co., Ltd. Pipeline controller for context-based operation reconfigurable instruction set processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040069335A (ko) * 2001-12-21 2004-08-05 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 레지스터 파일, 멀티프로세서 시스템, 디지털 신호 처리최적화 방법 및 디지털 필터링 방법
JP2004021425A (ja) 2002-06-13 2004-01-22 Hitachi Ltd コンパイラにおけるメモリ配置方式
KR20060090512A (ko) * 2005-02-07 2006-08-11 재단법인서울대학교산학협력재단 리소스 공유 및 파이프 라이닝 구성을 갖는 재구성가능배열구조

Also Published As

Publication number Publication date
US20070094485A1 (en) 2007-04-26
US8019982B2 (en) 2011-09-13
KR20070043536A (ko) 2007-04-25

Similar Documents

Publication Publication Date Title
EP2372530A1 (en) Data processing method and device
US7487302B2 (en) Service layer architecture for memory access system and method
CN1656445B (zh) 处理系统
KR100781358B1 (ko) 데이터 처리 시스템 및 그의 데이터 처리방법
CN107548488B (zh) 具有dsp引擎及增强上下文切换能力的中央处理单元
JP2002509302A (ja) メモリサブシステムに複数のメモリアルゴリズムプロセッサを組込むマルチプロセッサコンピュータアーキテクチャ
US9935870B2 (en) Channel selection in multi-channel switching network
Ahmadinia et al. Task scheduling for heterogeneous reconfigurable computers
US20060265571A1 (en) Processor with different types of control units for jointly used resources
JP2006236106A (ja) データ処理装置及びデータ処理方法
US4811201A (en) Interconnect circuit
US7028162B2 (en) Configurable processing block capable of interacting with external hardware
US20040236929A1 (en) Logic circuit and program for executing thereon
US10459725B2 (en) Execution of load instructions in a processor
US10769090B2 (en) Information processing apparatus, control method of information processing, and non-transitory computer-readable storage medium for storing program
JP2000284964A (ja) Vliwプロセッサにおける効率的なサブ命令エミュレーション
KR101478648B1 (ko) 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 및장치
EP1550950A1 (en) Semiconductor device
EP3073387A1 (en) Controlling data flow between processors in a processing system
KR20230023762A (ko) 하드웨어 오토로더
US20030061439A1 (en) Distributed executing units of logic integrated circuits connected to & executes on data in local data storage
JPH08305547A (ja) Pldによるコンピュータおよびコンパイラおよびオペレーティングシステム
CN115374740A (zh) 面向云服务的性能与隔离性定制化硬件虚拟化方法及装置
US20050060519A1 (en) Command processing device and method for processing command
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム

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

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20131022

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20141022

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20151020

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20161018

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20171019

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20181024

Year of fee payment: 12