KR102593320B1 - 전자 장치, 프로세서 및 그 제어 방법 - Google Patents
전자 장치, 프로세서 및 그 제어 방법 Download PDFInfo
- Publication number
- KR102593320B1 KR102593320B1 KR1020160123375A KR20160123375A KR102593320B1 KR 102593320 B1 KR102593320 B1 KR 102593320B1 KR 1020160123375 A KR1020160123375 A KR 1020160123375A KR 20160123375 A KR20160123375 A KR 20160123375A KR 102593320 B1 KR102593320 B1 KR 102593320B1
- Authority
- KR
- South Korea
- Prior art keywords
- cycle
- input
- instruction
- scheduled
- instructions
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 60
- 239000000872 buffer Substances 0.000 claims description 65
- 230000006870 function Effects 0.000 claims description 11
- 230000015654 memory Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 23
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000000630 rising effect Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
- G06F8/4451—Avoiding pipeline stalls
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
복수의 입력 포트를 구비한 기능 유닛(Function Unit, FU)을 포함하는 프로세서에서 이용되는 컴파일링 데이터를 생성하는 전자 장치가 개시된다. 본 전자 장치는 복수의 명령어를 저장하는 스토리지 및 복수의 명령어 각각을 복수의 싸이클(cycle)에 스케줄링하고, 복수의 명령어 각각에 대응되는 복수의 입력 데이터를 해당 싸이클에서 복수의 입력 포트에 할당하는 스케줄러를 포함하고, 스케줄러는 제1 싸이클에서 복수의 입력 포트 중 미할당 입력 포트가 존재하는 경우, 제1 싸이클 이후의 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 제1 싸이클에서 미할당 입력 포트에 할당하고, 명령어에 대응되는 복수의 입력 데이터 중 나머지를 제2 싸이클에서 복수의 입력 포트 중 하나에 할당하여 컴파일링 데이터를 생성한다.
Description
본 발명은 전자 장치, 프로세서 및 그 제어 방법에 대한 것으로, 더욱 상세하게는 입력되는 명령어 및 입력 데이터를 스케줄링 및 처리하는 전자 장치, 프로세서 및 그 제어 방법에 대한 것이다.
VLIW(Very Long Instruction Width), CGA(Coarse-Grained Array)와 같은 프로세서는 ILP(Instruction Level Parallelism)을 높이기 위해 복수의 명령어를 동시에 이슈(issue)하도록 스케줄링한다. 이러한 프로세서에서 각 명령어는 해당 명령어를 지원하는 기능 유닛(function unit, FU)에서 fetch, decode, execution, write back 등의 파이프라인 단계로 분리되어 연속적으로 실행된다.
컴파일러는 명령어 간의 의존성 및 리소스(resource)를 체크하여 스케줄링을 수행하는데, 이때 싸이클 별로 이슈나 출력(write back)과 같은 기능 유닛의 입력 포트 및 출력 포트의 점유 여부를 결정한다. 즉, 컴파일러는 포트 conflict를 체크하며 스케줄링을 수행한다.
예를 들어, 제1 싸이클에서 레이턴시(latency) 2의 곱셈 명령어가 입력되면 제3 싸이클에서 출력 데이터가 출력되고, 제2 싸이클에서 레이턴시 1의 덧셈 명령어가 입력되면 제3 싸이클에서 출력 데이터가 출력되어, 출력 포트에서 충돌이 일어나게 된다. 따라서, 덧셈 명령어는 제2 싸이클에서 이슈될 수 없다. 이 경우, 곱셈 명령어와 덧셈 명령어 간 의존성이 없으면 덧셈 명령어를 먼저 이슈하면 되지만, 스케줄링 순서를 바꾸면 스케줄링 알고리즘이 복잡해지는 문제가 있다. 일반적으로, 이러한 경우에는 덧셈 명령을 제3 싸이클에서 이슈하게 된다.
특히, 레이턴시가 긴 명령이 연속적으로 이슈되면, 포트 conflict가 발생할 확률이 높아져 스케줄링 효율이 떨어지게 된다. 그에 따라, 포트 conflict가 발생하지 않으면서도 스케줄링 효율을 향상시킬 필요가 있어왔다.
본 발명은 상술한 필요성에 따른 것으로, 본 발명의 목적은 기능 유닛에 구비된 복수의 입력 포트 중 미할당 입력 포트를 사용하도록 스케줄링하여 처리하는 전자 장치, 프로세서 및 그 제어 방법을 제공함에 있다.
이상과 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따르면, 복수의 입력 포트를 구비한 기능 유닛(Function Unit, FU)을 포함하는 프로세서에서 이용되는 컴파일링 데이터를 생성하는 전자 장치는, 복수의 명령어를 저장하는 스토리지 및 복수의 명령어 각각을 복수의 싸이클(cycle)에 스케줄링하고, 상기 복수의 명령어 각각에 대응되는 복수의 입력 데이터를 해당 싸이클에서 상기 복수의 입력 포트에 할당하는 스케줄러를 포함하고, 상기 스케줄러는, 제1 싸이클에서 상기 복수의 입력 포트 중 미할당 입력 포트가 존재하는 경우, 상기 제1 싸이클 이후의 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 상기 제1 싸이클에서 상기 미할당 입력 포트에 할당하고, 상기 명령어에 대응되는 복수의 입력 데이터 중 나머지를 상기 제2 싸이클에서 상기 복수의 입력 포트 중 하나에 할당하여 상기 컴파일링 데이터를 생성할 수 있다.
또한, 상기 스케줄러는, 상기 제1 싸이클 및 상기 제1 싸이클 직후의 상기 제2 싸이클에서 동일한 입력 포트가 미할당 입력 포트인 경우, 상기 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 상기 제1 싸이클에서 상기 미할당 입력 포트에 할당하고, 상기 명령어에 대응되는 복수의 입력 데이터 중 나머지를 상기 제2 싸이클에서 상기 미할당 입력 포트에 할당할 수 있다.
그리고, 상기 스토리지는 복수의 명령어를 단일 명령어로 결합하기 위한 정보를 저장하고, 상기 스케줄러는 상기 스토리지에 저장된 정보에 기초하여 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어를 결합 명령어로 변경하고, 상기 결합 명령어를 상기 제1 싸이클에 재스케줄링할 수 있다.
또한, 상기 제2 싸이클에 스케줄링되는 명령어는, 상기 제1 싸이클에 스케줄링된 명령어와 함께 상기 결합 가능한 명령어일 수 있다.
그리고, 상기 복수의 명령어는 적어도 하나의 산술 연산 명령어를 포함하며, 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어는 서로 다른 타입의 명령어일 수 있다.
또한, 상기 스케줄러는 상기 미할당 입력 포트의 개수 및 적어도 하나의 버퍼의 개수의 합 만큼의 입력 데이터에 대응되는 명령어를 상기 제2 싸이클에 스케줄링된 명령어로 결정할 수 있다.
그리고, 상기 결합 명령어는 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어 각각의 실행 싸이클에 대한 정보 및, 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어 각각에 대응되는 입력 데이터의 입력 포트 및 입력 싸이클에 대한 정보 중 적어도 하나를 포함할 수 있다.
또한, 상기 기능 유닛은 출력 포트를 포함하고, 상기 스케줄러는 상기 복수의 명령어 각각의 레이턴시(latency)에 기초하여, 상기 제1 싸이클에 스케줄링된 명령어에 대응되는 출력 데이터와 상기 제2 싸이클에 스케줄링된 명령어에 대응되는 출력 데이터가 상기 출력 포트를 통해 동시에 출력되지 않도록 스케줄링할 수 있다.
이상과 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따르면, 프로세서는, 입력된 컴파일링 데이터를 저장하는 메모리 및 복수의 입력 포트 및 적어도 하나의 버퍼를 구비하며, 상기 컴파일링 데이터를 처리하는 기능 유닛(Function Unit)을 포함하고, 상기 프로세서는 제1 싸이클에서 상기 컴파일링 데이터에 포함된 결합 명령어를 처리하는 경우, 상기 복수의 입력 포트 중 적어도 하나의 입력 포트를 통해 입력되는 데이터를 상기 적어도 하나의 버퍼에 저장하고, 상기 저장된 데이터 및 상기 제2 싸이클에서 상기 복수의 입력 포트 중 하나를 통해 입력되는 데이터를 대응되는 명령어에 기초하여 연산할 수 있다.
한편, 본 발명의 일 실시 예에 따르면, 복수의 입력 포트를 구비한 기능 유닛(Function Unit, FU)을 포함하는 프로세서에서 이용되는 컴파일링 데이터를 생성하는 전자 장치의 스케줄링 방법은, 제1 싸이클에 스케줄링된 명령어에 기초하여 상기 복수의 입력 포트에 적어도 하나의 입력 데이터를 할당하는 단계 및 상기 제1 싸이클에서 상기 복수의 입력 포트 중 미할당 입력 포트가 존재하는 경우, 상기 제1 싸이클 이후의 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 상기 제1 싸이클에서 상기 미할당 입력 포트에 할당하고, 상기 명령어에 대응되는 복수의 입력 데이터 중 나머지를 상기 제2 싸이클에서 상기 복수의 입력 포트 중 하나에 할당하여 상기 컴파일링 데이터를 생성하는 단계를 포함한다.
또한, 상기 복수의 입력 포트 중 하나에 할당하여 상기 컴파일링 데이터를 생성하는 단계는 상기 제1 싸이클 및 상기 제1 싸이클 직후의 상기 제2 싸이클에서 동일한 입력 포트가 미할당 입력 포트인 경우, 상기 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 상기 제1 싸이클에서 상기 미할당 입력 포트에 할당하고, 상기 명령어에 대응되는 복수의 입력 데이터 중 나머지를 상기 제2 싸이클에서 상기 미할당 입력 포트에 할당할 수 있다.
그리고, 복수의 명령어를 단일 명령어로 결합하기 위한 정보에 기초하여 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어를 결합 명령어로 변경하는 단계 및 상기 결합 명령어를 상기 제1 싸이클에 재스케줄링하는 단계를 더 포함할 수 있다.
또한, 상기 제2 싸이클에 스케줄링되는 명령어는, 상기 제1 싸이클에 스케줄링된 명령어와 함께 상기 결합 가능한 명령어일 수 있다.
그리고, 상기 복수의 명령어는 적어도 하나의 산술 연산 명령어를 포함하며, 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어는 서로 다른 타입의 명령어일 수 있다.
또한, 상기 복수의 입력 포트 중 하나에 할당하여 상기 컴파일링 데이터를 생성하는 단계는 상기 미할당 입력 포트의 개수 및 적어도 하나의 버퍼의 개수의 합 만큼의 입력 데이터에 대응되는 명령어를 상기 제2 싸이클에 스케줄링된 명령어로 결정할 수 있다.
그리고, 상기 결합 명령어는 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어 각각의 실행 싸이클에 대한 정보 및, 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어 각각에 대응되는 입력 데이터의 입력 포트 및 입력 싸이클에 대한 정보 중 적어도 하나를 포함할 수 있다.
또한, 상기 복수의 명령어 각각의 레이턴시(latency)에 기초하여, 상기 제1 싸이클에 스케줄링된 명령어에 대응되는 출력 데이터와 상기 제2 싸이클에 스케줄링된 명령어에 대응되는 출력 데이터가 상기 기능 유닛의 출력 포트를 통해 동시에 출력되지 않도록 스케줄링하는 단계를 더 포함할 수 있다.
한편, 본 발명의 일 실시 예에 따르면, 복수의 입력 포트 및 적어도 하나의 버퍼를 구비한 기능 유닛(Function Unit)을 포함하는 프로세서의 제어 방법은, 컴파일링 데이터에 기초하여 순차적으로 명령어를 실행하는 단계, 제1 싸이클에서 상기 컴파일링 데이터에 포함된 결합 명령어를 처리하는 경우, 복수의 입력 포트 중 적어도 하나의 입력 포트를 통해 입력되는 데이터를 상기 적어도 하나의 버퍼에 저장하는 단계 및 상기 저장된 데이터 및 상기 제1 싸이클 이후의 제2 싸이클에서 상기 복수의 입력 포트 중 하나를 통해 입력되는 데이터를 대응되는 명령어에 기초하여 연산하는 단계를 포함한다.
이상과 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따르면, 복수의 입력 포트를 구비한 기능 유닛(Function Unit, FU)을 포함하는 프로세서에서 이용되는 컴파일링 데이터를 생성하는 전자 장치의 동작 방법을 수행하기 위한 프로그램이 저장된 기록 매체에 있어서, 상기 동작 방법은 제1 싸이클에 스케줄링된 명령어에 기초하여 상기 복수의 입력 포트에 적어도 하나의 입력 데이터를 할당하는 단계 및 상기 제1 싸이클에서 상기 복수의 입력 포트 중 미할당 입력 포트가 존재하는 경우, 상기 제1 싸이클 이후의 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 상기 제1 싸이클에서 상기 미할당 입력 포트에 할당하고, 상기 명령어에 대응되는 복수의 입력 데이터 중 나머지를 상기 제2 싸이클에서 상기 복수의 입력 포트 중 하나에 할당하여 상기 컴파일링 데이터를 생성하는 단계를 포함한다.
이상과 같은 본 발명의 다양한 실시 예에 따르면, 전자 장치는 기능 유닛의 미할당 입력 포트를 사용하도록 명령어를 스케줄링하여 스케줄링 효율을 개선하고 코드 사이즈를 감소할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 전자 장치(100) 및 프로세서(200)를 개략적으로 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 전자 장치(100)의 구성을 나타내는 블록도이다.
도 3은 본 발명의 일 실시 예에 따른 프로세서(200)의 구성을 나타내는 블록도이다.
도 4는 본 발명의 일 실시 예에 따른 미할당 입력 포트를 이용하는 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 다른 실시 예에 따른 미할당 입력 포트를 이용하는 방법을 설명하기 위한 도면이다.
도 6은 본 발명의 또 다른 실시 예에 따른 미할당 입력 포트를 이용하는 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 결합 명령어를 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 복수의 버퍼(20-1, 20-2)가 구비된 경우의 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시 예에 따른 결합 명령어를 이용하는 경우를 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시 예에 따른 결합 명령어를 이용하는 방법을 설명하기 위한 흐름도이다.
도 11a 내지 도 11c는 본 발명의 다양한 실시 예에 따른 기능 유닛(220)의 내부 구조를 설명하기 위한 도면들이다.
도 12는 본 발명의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
도 13은 본 발명의 일 실시 예에 따른 프로세서의 제어 방법을 설명하기 위한 흐름도이다.
도 2는 본 발명의 일 실시 예에 따른 전자 장치(100)의 구성을 나타내는 블록도이다.
도 3은 본 발명의 일 실시 예에 따른 프로세서(200)의 구성을 나타내는 블록도이다.
도 4는 본 발명의 일 실시 예에 따른 미할당 입력 포트를 이용하는 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 다른 실시 예에 따른 미할당 입력 포트를 이용하는 방법을 설명하기 위한 도면이다.
도 6은 본 발명의 또 다른 실시 예에 따른 미할당 입력 포트를 이용하는 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 결합 명령어를 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 복수의 버퍼(20-1, 20-2)가 구비된 경우의 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시 예에 따른 결합 명령어를 이용하는 경우를 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시 예에 따른 결합 명령어를 이용하는 방법을 설명하기 위한 흐름도이다.
도 11a 내지 도 11c는 본 발명의 다양한 실시 예에 따른 기능 유닛(220)의 내부 구조를 설명하기 위한 도면들이다.
도 12는 본 발명의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
도 13은 본 발명의 일 실시 예에 따른 프로세서의 제어 방법을 설명하기 위한 흐름도이다.
이하, 본 발명의 다양한 실시 예에 대해서, 첨부된 도면을 참조하여 설명한다. 본 명세서에 기재된 내용은, 본 발명의 범위를 특정한 실시 형태로 한정하려는 것이 아니며, 실시 예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 동일 또는 유사한 참조 부호가 사용될 수 있다.
또한, 본 명세서에서 하나의 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 기능적 또는 통신적으로(operatively or communicatively) 연결(coupled)되어 있다거나, 접속되어(connected to) 있다고 언급하는 것은, 각 구성요소들이 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 간접적으로 연결되는 경우까지 모두 포함할 수 있다는 것으로 이해되어야 한다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 어떤 구성요소와 다른 구성요소 사이에 다른 구성요소(예: 제3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 명세서(disclosure)에서 사용된 용어들은, 임의의 실시 예를 설명하기 위해 사용된 것으로, 다른 실시 예의 범위를 한정하려는 의도가 아닐 수 있다. 또한, 본 명세서에서는 설명의 편의상 단수 표현을 사용할 수도 있으나, 이는 문맥상 명백하게 다르게 뜻하지 않는 한, 복수 표현까지 포함하는 의미로 해석될 수 있다. 또한, 본 명세서에서 사용되는 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 명세서에 사용된 용어들 중 일반적인 사전에 정의된 용어들은, 관련 기술의 문맥상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 명세서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 명세서에서 정의된 용어일지라도 본 명세서의 실시 예들을 배제하도록 해석될 수 없다.
이하에서, 첨부된 도면을 이용하여 본 발명의 다양한 실시 예들에 대하여 구체적으로 설명한다.
도 1은 본 발명의 일 실시 예에 따른 전자 장치(100) 및 프로세서(200)를 개략적으로 설명하기 위한 도면이다.전자 장치(100)는 컴파일링을 수행하는 장치일 수 있다. 예를 들어, 전자 장치(100)는 고급언어로 쓰인 프로그램이 프로세서(200)에서 처리되도록 프로세서(200)가 직접 이해할 수 있는 언어로 변환하는 장치일 수 있다.
전자 장치(100)는 고급언어로 쓰인 프로그램으로부터 복수의 명령어를 추출하고, 추출된 복수의 명령어를 컴파일링하여 컴파일링 데이터를 생성할 수 있다. 여기서, 명령어는 프로세서(200)에 포함된 기능 유닛(Function Unit)에서 처리되는 명령어일 수 있다.
전자 장치(100)는 컴파일링 데이터를 생성하는 과정에서 기능 유닛의 복수의 입력 포트 중 미할당 입력 포트를 검출하여 미할당 입력 포트가 이용되도록 컴파일링 데이터를 생성할 수 있다. 이때, 전자 장치(100)는 결합 명령어를 이용하여 미할당 입력 포트가 이용되로고 컴파일링 데이터를 생성할 수 있다.
다만, 이에 한정되는 것은 아니며, 전자 장치(100)는 종래 기술에 따라 컴파일링 데이터를 생성하거나 외부 장치로부터 컴파일링 데이터를 수신한 후, 미할당 입력 포트가 이용되도록 컴파일링 데이터를 업데이트할 수도 있다.
전자 장치(100)는 생성된 컴파일링 데이터를 프로세서(200)로 전송할 수 있다. 다만, 이에 한정되는 것은 아니며, 컴파일링 데이터는 프로세서(200)로 간접적으로 전송될 수도 있다.
프로세서(200)는 전자 장치(100)와는 별도의 장치에 구비된 프로세서일 수 있다. 예를 들어, 전자 장치(100)는 컴파일링 데이터를 생성하는 장치일 수 있고, 프로세서(200)를 포함하는 장치는 컴파일링 데이터를 처리하기 위한 장치일 수 있다. 이하에서는 설명의 편의를 위하여 프로세서(200)를 포함하는 장치 전체가 아닌 프로세서(200)에 대하여만 설명한다.
프로세서(200)는 전자 장치(100)로부터 컴파일링된 데이터를 수신하여 처리할 수 있다. 예를 들어, 프로세서(200)에 포함된 기능 유닛은 컴파일링된 데이터에 기초하여 싸이클 별로 명령어를 처리할 수 있다.
이하에서는 설명의 편의를 위하여 프로세서(200)가 하나의 기능 유닛을 포함한 것으로 설명한다. 다만, 다른 개수의 기능 유닛을 포함하는 경우에도 본원의 기술이 적용될 수 있다.
프로세서(200)가 복수의 기능 유닛을 포함하는 경우, 복수의 기능 유닛은 서로 다를 수 있다. 예를 들어, 프로세서(200)는 내의 제1 기능 유닛은 덧셈 연산만이 가능하나, 제2 기능 유닛은 덧셈 연산 뿐만 아니라 곱셈 연산이 가능할 수도 있다. 다만, 이에 한정되는 것은 아니며, 프로세서(200) 내에 포함된 복수의 기능 유닛은 모두 동일할 수도 있다.
프로세서(200)는 컴파일링 데이터에 결합 명령어에 대한 정보가 포함되어 있으며, 기능 유닛에 구비된 적어도 하나의 버퍼를 이용하여 컴파일링 데이터를 처리할 수 있다. 이러한 동작을 통해 프로세서(200)의 처리 속도가 향상될 수 있다.
도 2는 본 발명의 일 실시 예에 따른 전자 장치(100)의 구성을 나타내는 블록도이다.
도 2에 도시된 바와 같이, 전자 장치(100)는 스토리지(110) 및 스케줄러(120)를 포함한다. 여기서, 스케줄러(120)는 각 타임(time)에서 프로세서(200)에 구비된 기능 유닛의 입력 포트 및 출력 포트의 점유 여부를 이용하여 명령어를 스케줄링할 수 있다. 이하에서는, 타임을 싸이클(cycle)로 표현한다.
스토리지(110)는 복수의 명령어를 저장할 수 있다. 또는, 스토리지(100)는 복수의 명령어가 컴파일링된 컴파일링 데이터를 저장할 수 있다. 여기서, 컴파일링 데이터는 기능 유닛을 포함하는 프로세서(200)에서 이용되는 데이터로, 스케줄러(120)에 의해 컴파일링된 후의 출력 데이터일 수 있다. 또는, 컴파일링 데이터는 전자 장치(100) 외부로부터 수신된 데이터일 수도 있다.
스토리지(110)는 복수의 명령어를 단일 명령어로 결합하기 위한 정보를 저장할 수 있다. 또한, 스토리지(110)는 복수의 명령어를 단일 명령어도 결합하여 스케줄링하는 방법을 저장할 수 있다.
스케줄러(120)는 복수의 명령어 각각을 복수의 싸이클(cycle)에 스케줄링할 수 있다. 즉, 스케줄러(120)는 컴파일러와 같은 역할을 수행하는 프로세서(1000)일 수 있다. 예를 들어, 스케줄러(120)는 덧셈 명령과 곱셈 명령을 수행해야 하는 경우, 덧셈 명령을 수행할 싸이클 및 곱셈 명령을 수행할 싸이클을 결정할 수 있다. 여기서, 싸이클은 특정 시간을 의미할 수도 있다. 또는, 프로세서(1000)가 특정 클럭에서 동작하는 경우, 상승 엣지 또는 하강 엣지를 중 하나의 시간 단위를 의미할 수도 있다. 가령, 스케줄러(120)는 t=t0의 상승 엣지에서 곱셈 연산을 먼저 수행하고, 다음의 상승 엣지에서 덧셈 연산을 수행하도록 스케줄링할 수 있다.
스케줄러(120)는 명령어의 종류, 명령에 대응되는 입력 데이터, 프로세서(200)에 포함된 기능 유닛의 입력 포트 및 출력 포트 중 적어도 하나를 고려하여 복수의 명령어를 스케줄링할 수 있다. 또한, 스케줄러(120)는 최소의 시간에 복수의 명령어에 대한 출력을 획득하도록 복수의 명령어를 스케줄링할 수 있다. 이에 대한, 구체적인 내용은 공지된 기술이므로 생략한다.
여기서, 기능 유닛은 프로세서(200) 내에서 기설정된 연산을 수행하기 위한 일 구성일 수 있다. 예를 들어, 기능 유닛은 프로세서(200) 내에서 덧셈 연산을 수행하기 위한 일 구성일 수 있다. 다만, 이에 한정되는 것은 아니며, 기능 유닛은 덧셈 연산 뿐만 아니라 다른 연산을 수행할 수도 있으며, 복수의 연산을 수행할 수도 있다.
기능 유닛은 복수의 입력 포트를 포함할 수 있다. 복수의 입력 포트는 명령어에 대응되는 입력 데이터를 입력받기 위한 구성이다. 예를 들어, 10과 20의 덧셈을 수행하는 경우, 덧셈을 수행하기 위한 입력 데이터 10, 20이 복수의 입력 포트 중 일부를 통해 입력될 수 있다.
복수의 입력 포트의 개수는 기능 유닛의 종류에 따라 결정될 수 있다. 예를 들어, 기능 유닛이 제공하는 연산의 종류가 많은 경우는 기능 유닛이 제공하는 연산의 종류가 적은 경우보다 많은 개수의 입력 포트가 구비될 수 있다. 예를 들어, 덧셈 및 곱셈이 가능한 기능 유닛은 덧셈 만이 가능한 기능 유닛보다 많은 개수의 입력 포트를 구비할 수 있다.
또는, 복수의 입력 포트의 개수는 기능 유닛에 입력될 데이터의 개수에 따라 결정될 수도 있다. 예를 들어, 10과 20의 덧셈을 수행하는 기능 유닛은 최소 두 개의 입력 포트를 구비할 수 있으나, 10, 20 및 30의 덧셈을 수행하는 기능 유닛은 최소 세 개의 입력 포트를 구비할 수도 있다.
기능 유닛은 출력 포트를 포함할 수 있으며, 출력 포트는 기능 유닛에 의해 연산된 결과를 출력하기 위한 구성이다.
스케줄러(120)는 복수의 명령어 각각에 대응되는 복수의 입력 데이터를 해당 싸이클에서 복수의 입력 포트에 할당할 수 있다. 예를 들어, 스케줄러(120)는 10과 20의 덧셈을 수행하는 경우, 10은 제1 싸이클의 입력 포트 1에, 20은 제1 싸이클의 입력포트 2에 입력되도록 스케줄링할 수 있다. 또한, 스케줄러(120)는 30과 40의 곱셈을 수행하는 경우, 30은 제2 싸이클의 입력 포트 1에, 40은 제2 싸이클의 입력포트 2에 입력되도록 스케줄링할 수 있다.
즉, 스케줄러(120)는 복수의 입력 포트에 싸이클 별로 입력 데이터를 할당할 수 있으며, 싸이클 별로 입력된 데이터에 대응되는 명령어가 해당 싸이클에서 연산되도록 스케줄링할 수 있다. 예를 들어, 상술한 실시 예에서 스케줄러(120)는 덧셈 연산이 제1 싸이클에서 실행되고, 곱셈 연산이 제2 싸이클에서 실행되도록 스케줄링할 수 있다.
스케줄러(120)는 제1 싸이클에서 복수의 입력 포트 중 미할당 입력 포트가 존재하는 경우, 제1 싸이클 이후의 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 제1 싸이클에서 미할당 입력 포트에 할당하고, 명령어에 대응되는 복수의 입력 데이터 중 나머지를 제2 싸이클에서 복수의 입력 포트 중 하나에 할당할 수 있다.
예를 들어, 상술한 예와 같이 10과 20의 덧셈을 수행하기 위해 10은 제1 싸이클의 입력 포트 1에, 20은 제1 싸이클의 입력포트 2에 입력되도록 스케줄링되고, 30과 40의 곱셈을 수행하기 위해 30은 제2 싸이클의 입력 포트 1에, 40은 제2 싸이클의 입력 포트 2에 입력되도록 스케줄링된 상태에서, 기능 유닛이 세 개의 입력 포트를 구비한 경우에는 제1 싸이클의 입력 포트 3은 미할당 입력 포트가 될 수 있다. 이 경우, 스케줄러(120)는 제2 싸이클에 스케줄링된 곱셈 명령어의 입력 데이터 중 30을 제1 싸이클의 입력 포트 3에 할당하고, 곱셈 명령어의 입력 데이터 중 40을 제2 싸이클에서 입력 포트 1, 2, 3 중 하나에 할당할 수 있다.
이와 같은 스케줄러(120)의 스케줄링을 통해 제2 싸이클에는 두 개의 입력 포트가 미할당 상태가 될 수 있으며, 이때 스케줄러(120)는 두 개의 입력 데이터를 이용하는 새로운 명령어를 제2 싸이클의 미할당 입력 포트에 할당할 수 있다. 즉, 스케줄러(120)는 제1 싸이클 및 제2 싸이클 동안 두 개의 명령어를 처리하던 것을, 상술한 바와 같은 스케줄링을 통해 동일한 두 싸이클 동안 세 개의 명령어를 처리하도록 컴파일링 데이터를 생성할 수 있다.
출력 포트는 명령어에 기초한 연산을 수행한 결과가 출력되는 포트이다. 기능 유닛은 하나의 출력 포트를 구비할 수 있다. 다만, 이에 한정되는 것은 아니며, 기능 유닛은 복수의 출력 포트를 구비할 수도 있다. 한편, 출력 포트의 개수는 입력 포트의 개수보다 작을 수 있다.
출력 포트는 한 싸이클 동안 하나의 출력 데이터를 출력할 수 있다. 스케줄러(120)는 복수의 입력 포트를 통해 입력된 데이터로부터 연산된 복수의 출력 데이터가 한 싸이클 동안 출력되지 않도록 복수의 명령어를 스케줄링할 수 있다. 이때, 스케줄러(120)는 각 명령어의 레이턴시(latency)을 고려하여 복수의 명령어를 스케줄링할 수 있다. 여기서, 레이턴시는 입력 데이터가 입력되어 연산된 후 출력 데이터로 출력되기까지의 시간일 수 있다.
이상과 같은 동작을 통해, 프로세서(200)는 동일한 싸이클 동안 더 많은 명령어를 처리할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 프로세서(200)의 구성을 나타내는 블록도이다. 프로세서(200)는 기설정된 연산을 수행하기 위한 소단위의 프로세서일 수 있다.
도 3에 도시된 바와 같이, 프로세서(200)는 메모리(210) 및 기능 유닛(220)을 포함한다.
메모리(210)는 컴파일링 데이터를 저장할 수 있다. 컴파일링 데이터는 전자 장치(100)로부터 직접 입력될 수도 있고, 다른 장치를 거쳐서 입력될 수도 있다. 예를 들어, 컴파일링 데이터는 프로세서(200)의 외부에 구비된 메모리를 통해 입력될 수도 있다.
여기서, 컴파일링 데이터는 기능 유닛의 복수의 입력 포트 중 미할당 입력 포트의 개수가 최소화되도록 컴파일링된 컴파일링 데이터일 수 있다.
메모리(210)는 프로세서(200)의 내부에 구비된 캐시 메모리, 레지스터 파일 및 버퍼 중 하나일 수 있다.
기능 유닛(220)은 컴파일링 데이터를 처리하는 구성으로, 복수의 입력 포트, 리소스, 적어도 하나의 버퍼 및 출력 포트 등을 포함할 수 있다. 기능 유닛(220)에 대한 설명 중 도 1 및 도 2의 내용과 중복되는 설명은 생략한다.리소스는 덧셈 연산을 위한 리소스, 곱셈 연산을 위한 리소스, 뺄셈 연산을 위한 리소스 및 나눗셈 연산을 위한 리소스 등일 수 있다. 다만, 이에 한정되는 것은 아니며, 리소스는 그 밖의 다양한 연산을 수행하는 구성일 수 있다.
한편, 기능 유닛(220)은 리소스를 종류 별로 구비할 수도 있고, 자주 이용되는 리소스 일부만을 구비할 수도 있다. 또한, 기능 유닛(220)은 이종의 리소스만을 구비할 수 있다. 다만, 이에 한정되는 것은 아니며, 기능 유닛(220)은 동일한 리소스를 여러 개 구비할 수도 있다. 각 리소스는 서로 독립적으로 동작할 수 있다.
기능 유닛(220)은 제1 싸이클에서 컴파일링 데이터에 포함된 결합 명령어를 처리하는 경우, 복수의 입력 포트 중 적어도 하나의 입력 포트를 통해 입력되는 데이터를 적어도 하나의 버퍼에 저장하고, 저장된 데이터 및 제1 싸이클 이후의 제2 싸이클에서 복수의 입력 포트 중 하나를 통해 입력되는 데이터를 대응되는 명령어에 기초하여 연산할 수 있다.
즉, 스케줄러(120)는 하나의 싸이클에 입력되던 복수의 데이터를 복수의 싸이클을 통해 입력되도록 스케줄링하고, 싸이클이 변경되면 일부 데이터를 적어도 하나의 버퍼에 저장하도록 스케줄링할 수 있다. 그리고, 기능 유닛(220)은 적어도 하나의 버퍼에 저장된 데이터 및 새로운 싸이클에서 입력되는 데이터를 대응되는 명령어에 기초하여 연산을 수행할 수 있다.
전자 장치(100) 및 프로세서(200)의 동작에 대한 실시 예는 이하의 도면에서 구체적으로 설명한다.
도 4는 본 발명의 일 실시 예에 따른 미할당 입력 포트를 이용하는 방법을 설명하기 위한 도면이다.
도 4의 상단 도면에 도시된 바와 같이, 스케줄러(120)는 복수의 명령어 각각을 복수의 싸이클에 스케줄링하고, 복수의 명령어 각각에 대응되는 복수의 입력 데이터를 해당 싸이클에서 복수의 입력 포트에 할당할 수 있다.
예를 들어, 복수의 명령어는 제1 곱셈 명령어(MUL1), 제2 곱셈 명령어(MUL2), 덧셈 명령어(ADD)를 포함하고, 스케줄러(120)는 제1 싸이클에서 제1 곱셈 명령어(MUL1)가, 제2 싸이클에서 제2 곱셈 명령어(MUL2)가, 제3 싸이클에서 덧셈 명령어(ADD)가 연산되도록 스케줄링할 수 있다. 도면 상에서 각 싸이클은 t로서 표시되었으나, 이는 설명을 용이하게 위한 것으로, 이에 한정되는 것은 아니다.
그리고, 스케줄러(120)는 제1 싸이클에서 제1 곱셈 명령어(MUL1)의 입력 데이터 a는 제1 입력 포트(10-1)에, 입력 데이터 b는 제2 입력 포트(10-2)에 입력되도록 스케줄링할 수 있다. 또한, 스케줄러(120)는 제2 싸이클에서 제2 곱셈 명령어(MUL2)의 입력 데이터 c는 제1 입력 포트(10-1)에, 입력 데이터 d는 제2 입력 포트(10-2)에 입력되도록 스케줄링할 수 있다. 그리고, 스케줄러(120)는 제3 싸이클에서 덧셈 명령어(ADD)의 입력 데이터 e는 제1 입력 포트(10-1)에, 입력 데이터 f는 제2 입력 포트(10-2)에 입력되도록 스케줄링할 수 있다.
다만, 이는 스케줄링의 일 실시 예에 불과하고, 각 명령어는 입력 데이터의 개수가 다를 수 있다. 또한, 각 명령어의 입력 데이터가 제3 입력 포트(10-3)에 입력될 수도 있다.
스케줄러(120)는 제1 싸이클 및 제1 싸이클 직후의 제2 싸이클에서 동일한 입력 포트가 미할당 입력 포트인 경우, 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 제1 싸이클에서 미할당 입력 포트에 할당하고, 명령어에 대응되는 복수의 입력 데이터 중 나머지를 제2 싸이클에서 미할당 입력 포트에 할당할 수 있다.
예를 들어, 도 2의 하단 도면에 도시된 바와 같이, 스케줄러(120)는 제1 싸이클 및 제2 싸이클에서 동일하게 제3 입력 포트(10-3)가 미할당 상태이므로, 제2 싸이클에 스케줄링된 제2 곱셈 명령어(MUL2)의 입력 데이터 d를 제1 싸이클의 제3 입력 포트(10-3)에, 입력 데이터 c를 제2 싸이클의 제3 입력 포트(10-3)에 입력되도록 스케줄링할 수 있다.
그리고, 스케줄러(120)는 제2 싸이클 이후에 스케줄링된 명령어를 다시 스케줄링할 수 있다. 특히, 스케줄러(120)는 제2 싸이클에서 미할당 입력 포트의 개수에 기초하여 다시 스케줄링할 수 있다. 예를 들어, 스케줄러(120)는 제3 싸이클에서 연산되는 것으로 스케줄링했던 덧셈 명령어(ADD)를 제2 싸이클에서 연산되도록 스케줄링할 수 있다. 그리고, 스케줄러(120)는 덧셈 명령어(ADD)의 입력 데이터 e는 제2 싸이클의 제1 입력 포트(10-1)에, 입력 데이터 f는 제2 싸이클의 제2 입력 포트(10-2)에 입력되도록 스케줄링할 수 있다.
한편, 기능 유닛(220)은 적어도 하나의 버퍼(20)를 포함할 수 있다. 프로세서(200)는 제1 싸이클에서 미할당 입력 포트를 통해 입력되는 데이터를 적어도 하나의 버퍼(20)에 저장하고, 저장된 데이터 및 제2 싸이클에서 복수의 입력 포트 중 하나를 통해 입력되는 데이터를 대응되는 명령어에 기초하여 연산할 수 있다.
여기서, 버퍼(20)는 일시적으로 데이터를 저장할 수 있는 구성이며, 버퍼(20)는 입력 데이터 하나만을 저장할 수 있는 용량일 수 있다. 예를 들어, 버퍼(20)는 제1 입력 포트(10-1)를 통해 입력된 데이터를 저장하고, 그 상태에서 제2 입력 포트(10-2)를 통해 입력된 데이터를 저장하기 위해 제1 입력 포트(10-1)를 통해 입력된 데이터를 삭제할 수 있다. 즉, 버퍼(20)는 동시에 복수의 입력 포트를 통해 입력된 복수의 입력 데이터를 저장할 수 없다. 또한, 버퍼(20)는 동일한 입력 포트를 통해 시간 간격을 두고 순차적으로 입력되는 데이터 역시 동시에 저장할 수 없다.
예를 들어, 기능 유닛(220)은 제1 싸이클에서 입력된 입력 데이터 d를 버퍼(20)에 저장하고, 제2 싸이클에서 입력된 입력 데이터 c 및 버퍼(20)에 저장된 입력 데이터 d를 제2 곱셈 명령어(MUL2)에 따라 연산을 수행할 수 있다.
한편, 스케줄러(120)는 재스케줄링을 하는 경우, 다양한 방법으로 재스케줄링을 수행하고, 각 방법에 따른 결과를 검토하여 최적의 결과로 재스케줄링을 수행할 수 있다. 예를 들어, 스케줄러(120)는 복수의 명령어 전체의 연산 결과가 출력되는데 걸리는 시간이 최소가 되는 방법을 최적의 결과로 결정하고 재스케줄링을 수행할 수 있다. 특히, 스케줄러(120)는 재스케줄링될 명령어 간의 의존성 및 레이턴시 중 적어도 하나를 고려하여 각 방법에 따른 결과를 검토할 수 있다.
예를 들어, 제2 곱셈 명령어(MUL2)의 출력 데이터가 덧셈 명령어(ADD)의 입력 데이터 중 하나이고, 제1 방법에 따른 재스케줄링을 한 이후 덧셈 명령어(ADD)가 연산될 싸이클까지 제2 곱셈 명령어(MUL2)의 출력 데이터가 출력되지 않는 경우라면, 스케줄러(120)는 제1 방법에 따른 재스케줄링을 이용하지 않을 수 있다.
특히, 스케줄러(120)는 이 과정에서 각 명령어의 레이턴시를 고려할 수 있다. 즉, 상술한 예에서 스케줄러(120)는 제2 곱셈 명령어(MUL2)의 레이턴시에 따라 출력 데이터가 출력될 싸이클을 산출할 수 있다.
한편, 전자 장치(100)의 스토리지(110)는 복수의 명령어를 단일 명령어로 결합하기 위한 정보를 저장할 수 있다. 여기서, 스토리지(110)는 버퍼(20)보다 많은 데이터를 저장할 수 있는 저장소를 의미할 수 있다. 한편, 스토리지(110)는 전자 장치(100) 외부에 구비될 수도 있다. 이 경우, 전자 장치(100) 외부의 스토리지(110)로부터 상술한 정보를 수신하여 전자 장치(100) 내에 구비된 캐시 메모리에 일시적으로 저장한 후 재스케줄링에 이용할 수도 있다.
스케줄러(120)는 스토리지(110)에 저장된 정보에 기초하여 제1 싸이클에 스케줄링된 명령어 및 제2 싸이클에 스케줄링된 명령어를 결합 명령어로 변경하고, 결합 명령어를 제1 싸이클에 재스케줄링할 수 있다. 즉, 두 개의 명령어를 이슈(issue)하는 경우 두 싸이클이 필요했으나, 결합 명령어를 이용함으로써 하나의 싸이클 동안 이슈할 수 있다. 결합 명령어를 이용하는 방법에 대하여는 후술한다.
도 4에서는 동일한 입력 포트가 미할당인 경우에 대하여 설명하였으나, 이에 한정되는 것은 아니다. 예를 들어, 제1 싸이클의 제3 입력 포트(10-3) 및 제2 싸이클의 제2 입력 포트(10-2) 및 제3 입력 포트(10-3)가 미할당 상태인 경우에도 이상과 같은 동작의 수행이 가능하다. 스케줄러(120)는 제2 싸이클 또는 제2 싸이클 이후의 명령어 중 현재 미할당 입력 포트의 개수만큼의 입력 데이터의 개수를 갖는 명령어를 다시 스케줄링할 수 있다. 스케줄링 방법은 이상에서 설명한 바와 동일할 수 있다.
도 5는 본 발명의 다른 실시 예에 따른 미할당 입력 포트를 이용하는 방법을 설명하기 위한 도면이다.
도 5의 상단 도면에 도시된 바와 같이, 스케줄러(120)는 4개의 싸이클에 걸쳐 4개의 명령어를 스케줄링할 수 있다. 이에 대한 설명 중 도 4와 중복되는 부분은 생략한다.
스케줄러(120)는 제1 싸이클에서 복수의 입력 포트(10-1, 10-2, 10-3) 중 미할당 입력 포트가 존재하는 경우, 제1 싸이클 이후의 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 제1 싸이클에서 미할당 입력 포트에 할당하고, 명령어에 대응되는 복수의 입력 데이터 중 나머지를 제2 싸이클에서 복수의 입력 포트(10-1, 10-2, 10-3) 중 하나에 할당할 수 있다.
즉, 스케줄러(120)는 미할당 입력 포트가 존재하는 제1 싸이클 직후의 싸이클이 아닌 그 이후의 싸이클에 스케줄링된 명령어를 재스케줄링할 수 있다.
스케줄러(120)는 제2 싸이클에 스케줄링된 제2 곱셈 명령어(MUL2)의 입력 데이터가 세 개이며, 제2 싸이클에서 미할당 입력 포트가 존재하지 않기 때문에 제2 곱셈 명령어(MUL2)를 재할당하지 않을 수 있다.
스케줄러(120)는 제3 싸이클에 스케줄링된 제3 곱셈 명령어(MUL3)의 입력 데이터가 두 개이며, 제3 싸이클에는 미할당 입력 포트가 존재하기 때문에 제3 곱셈 명령어(MUL3) 이후의 명령어를 재스케줄링할 수 있다.
예를 들어, 스케줄러(120)는 제3 곱셈 명령어(MUL3)의 입력 데이터 g를 제1 싸이클의 제3 입력 포트(10-3)에, 입력 데이터 f를 제3 싸이클의 제3 입력 포트(10-3)에 입력되도록 스케줄링할 수 있다.
그리고, 스케줄러(120)는 뎃셈 명령어(ADD)의 입력 데이터 h 및 i를 각각 제3 싸이클의 제1 입력 포트(10-1) 및 제2 입력 포트(10-2)에 입력되도록 스케줄링할 수 있다.
다만, 이에 한정되는 것은 아니며, 스케줄러(120)는 명령어 간의 의존성 및 레이턴시 중 적어도 하나를 고려하여 제3 곱셈 명령어(MUL3)가 아닌 뎃셈 명령어(ADD) 이후의 명령어를 재스케줄링할 수도 있다.
한편, 프로세서(200)는 제1 싸이클에서 미할당 입력 포트를 통해 입력되는 데이터를 적어도 하나의 버퍼(20)에 저장하고, 저장된 데이터 및 제3 싸이클에서 복수의 입력 포트 중 하나를 통해 입력되는 데이터를 대응되는 명령어에 기초하여 연산할 수 있다.
예를 들어, 도 3의 하단 도면에 도시된 바와 같이, 프로세서(200)는 제1 싸이클에서 입력된 입력 데이터 g를 버퍼(20)에 저장하고, 제3 싸이클에서 입력된 입력 데이터 f 및 버퍼(20)에 저장된 입력 데이터 g를 제3 곱셈 명령어(MUL3)에 따라 연산을 수행할 수 있다.
또한, 도 4에서 설명한 바와 같이, 스케줄러(120)는 복수의 명령어를 결합 명령어로 변경하여 스케줄링할 수 있다.
도 6은 본 발명의 또 다른 실시 예에 따른 미할당 입력 포트를 이용하는 방법을 설명하기 위한 도면이다.
도 6의 상단 도면에 도시된 바와 같이, 스케줄러(120)는 n+1개의 싸이클에 걸쳐 n+1개의 명령어를 스케줄링할 수 있다. 이에 대한 설명은 도 4와 동일하므로 생략한다.
스케줄러(120)는 연속되는 두 싸이클에서 미할당 입력 포트가 존재하는 경우, 연속되는 두 싸이클에 스케줄링된 명령어들이 아닌 그 이후의 싸이클에서 스케줄링된 명령어를 재스케줄링할 수 있다.
예를 들어, 스케줄러(120)는 제1 싸이클 및 제2 싸이클의 제3 입력 포트(10-3)가 미할당된 상태인 경우, 제1 곱셈 명령어(MUL1) 또는 제2 곱셈 명령어(MUL2)가 아닌 그 이후인 제n 싸이클에 스케줄링된 제8 곱셈 명령어(MUL8)를 재스케줄링할 수 있다.
스케줄러(120)는 제8 곱셈 명령어(MUL8)의 입력 데이터 s를 제1 싸이클의 제3 입력 포트(10-3)에, 입력 데이터 r을 제3 싸이클의 제3 입력 포트(10-3)에 입력되도록 스케줄링할 수 있다. 한편, 입력 데이터 s 및 입력 데이터 r의 입력 순서는 변경되더라도 무방하다. 즉, 스케줄러(120)는 연속되는 두 싸이클에서 미할당 입력 포트가 존재하는 경우에 전혀 별개의 싸이클에서 스케줄링된 명령어를 재스케줄링할 수도 있다.
스케줄러(120)는 명령어를 재스케줄링함에 따라 의존성 있는 다른 명령어의 연산이 지연되는지를 판단할 수 있다. 또는, 스케줄러(120)는 명령어를 재스케줄링함에 따라 하나의 싸이클 동안 출력 포트(30)를 통해 출력되는 출력 데이터가 복수인지 판단할 수 있다. 도 6의 실시 예에 따르면, 기능 유닛(220)은 하나의 출력 포트(30)만을 구비할 수 있고, 이 경우 하나의 싸이클 동안 하나의 출력 데이터만을 출력할 수 있다. 그에 따라, 스케줄러(120)는 하나의 싸이클 동안 복수의 출력 데이터가 출력된다고 판단되면 재스케줄링을 수행할 수 있다.
한편, 각 사이클의 미할당 입력 포트는 동일한 입력 포트일 수 있으나, 이에 한정되는 것은 아니다. 예를 들어, 각 사이클의 미할당 입력 포트는 서로 다른 입력 포트일 수도 있고, 각 사이클의 미할당 입력 포트의 개수가 다를 수도 있다.
한편, 프로세서(200)는 제1 싸이클에서 미할당 입력 포트를 통해 입력되는 데이터를 적어도 하나의 버퍼(20)에 저장하고, 저장된 데이터 및 제2 싸이클에서 복수의 입력 포트 중 하나를 통해 입력되는 데이터를 대응되는 명령어에 기초하여 연산할 수 있다.
예를 들어, 도 6의 하단 도면에 도시된 바와 같이, 프로세서(200)는 제1 싸이클에서 입력된 입력 데이터 s를 버퍼(20)에 저장하고, 제2 싸이클에서 입력된 입력 데이터 r 및 버퍼(20)에 저장된 입력 데이터 s를 제8 곱셈 명령어(MUL8)에 따라 연산을 수행할 수 있다.
또한, 도 4에서 설명한 바와 같이, 스케줄러(120)는 복수의 명령어를 결합 명령어로 변경하여 스케줄링할 수 있다.
한편, 도 6은 복수의 명령어 전체에 대한 1차 스케줄링을 마친 후, 미할당 입력 포트가 존재하는 경우 2차 스케줄링을 수행하는 것을 도시하였다.
예를 들어, 도 6의 상단 도면에 도시된 바와 같이, 스케줄러(120)는 제1 싸이클의 제1 곱셈 명령어(MUL1)부터 제n+1 싸이클의 제5 덧셈 명령어(ADD5)까지 1차 스케줄링을 완료한 후, 제1 싸이클의 미할당 입력 포트에 입력 데이터를 할당하기 위해 2차 스케줄링을 수행할 수 있다.
다만, 이에 한정되는 것은 아니며, 스케줄러(120)는 복수의 명령어 전체에 대한 1차 스케줄링 과정에서 미할당 입력 포트가 존재하면 2차 스케줄링을 동시에 수행할 수도 있다.
예를 들어, 스케줄러(120)는 제1 싸이클에 제1 곱셈 명령어(MUL1)를 스케줄링하고 다른 명령어를 스케줄링하기 전에, 제1 싸이클의 제3 입력 포트(10-3)가 미할당 상태이므로 다른 명령어 중 하나의 명령어의 입력 데이터의 일부를 제1 싸이클의 제3 입력 포트(10-3)에 할당하고, 나머지를 제2 싸이클의 제3 입력 포트(10-3)에 할당할 수도 있다.
한편, 도 6에서는 제8 곱셈 명령어(MUL8)를 재할당하는 것으로 도시되었으나, 이는 일 실시 예에 불과하다. 예를 들어, 스케줄러(120)는 제4 싸이클의 제2 덧셈 명령어(ADD2)를 재스케줄링할 수도 있다. 이때, 스케줄러(120)는 상술한 바와 같이, 명령어 간의 의존성 및 레이턴시 중 적어도 하나를 고려하여 재스케줄링될 명령어를 결정할 수 있다.
또한, 도 6에서는 제1 싸이클의 제3 입력 포트(10-3)가 미할당된 상태로 하나의 명령어를 재스케줄링하는 것으로 설명하였다. 다만, 이에 한정되는 것은 아니며, 또 다른 싸이클에서 미할당된 입력 포트가 존재하면 또 다른 명령어를 재스케줄링할 수도 있다. 그에 따라, 도 6에서 도시된 것처럼 하나의 싸이클이 절약되는 것이 아니라, 더 많은 싸이클을 절약하는 것도 가능하다.
도 7은 본 발명의 일 실시 예에 따른 결합 명령어를 설명하기 위한 도면이다.
도 7에 도시된 바와 같이, 스토리지(110)는 복수의 명령어를 단일 명령어로 결합하기 위한 정보를 저장할 수 있다. 예를 들어, 스토리지(110)는 곱셈 명령어(MUL) 두 개가 결합된 명령어인 결합 명령어(DMUL), 곱셈 명령어(MUL) 및 덧셈 명령어(ADD)가 결합된 명령어인 결합 명령어(MUL_ADD, ADD_MUL) 등에 대한 정보를 저장할 수 있다.
여기서, 이종의 명령어 간 결합되는 경우, 결합 명령어는 버퍼(20)를 이용하는 명령어에 따라 두 종류로 구분될 수 있다. 예를 들어, 곱셈 명령어(MUL) 및 덧셈 명령어(ADD)가 결합되는 경우, 결합 명령어(MUL_ADD)는 덧셈 명령어(ADD)가 버퍼(20)를 이용하고, 결합 명령어(ADD_MUL)는 곱셈 명령어(MUL)가 버퍼(20)를 이용할 수 있다.
스토리지(110)는 동종의 명령어가 결합된 결합 명령어에 대한 정보 뿐만 아니라 이종의 명령어가 결합된 결합 명령어에 대한 정보도 저장할 수 있다. 스토리지(110)는 적어도 하나의 산술 연산 명령어를 포함하는 복수의 명령어를 저장하고, 복수의 명령어 간의 결합 명령어에 대한 정보를 저장할 수 있다. 다만, 이에 한정되는 것은 아니며, 스토리지(110)는 그 밖의 다양한 유형의 명령어를 저장하고, 각 명령어 간의 결합 명령어에 대한 정보를 저장할 수 있다.
스케줄러(120)는 스토리지(110)에 저장된 정보에 기초하여 제1 싸이클에 스케줄링된 명령어 및 제2 싸이클에 스케줄링된 명령어를 결합 명령어로 변경하고, 결합 명령어를 제1 싸이클에 재스케줄링할 수 있다. 특히, 스케줄러(120)는 제1 싸이클에 스케줄링된 명령어 및 제2 싸이클에 스케줄링된 명령어가 서로 다른 타입의 명령어인 경우에도 결합 명령어로 변경하여 스케줄링할 수 있다.
한편, 제2 싸이클에 스케줄링되는 명령어는, 제1 싸이클에 스케줄링된 명령어와 함께 결합 가능한 명령어일 수 있다. 예를 들어, 입력된 복수의 명령어는 덧셈 명령어, 뺄셈 명령어 및 곱셈 명령어이고, 스토리지(110)는 덧셈 명령어 및 뺄셈 명령어 간의 결합 명령어에 대한 정보만을 저장하고 있는 경우, 스케줄러(120)는 덧셈 명령어 및 뺄셈 명령어만을 결합 명령어로 변경하여 스케줄링할 수 있다. 단, 이 경우에도 상술한 바와 같이, 스케줄러(120)는 결합 명령어로 변경할 복수의 명령어의 입력 데이터의 개수, 버퍼(20)의 개수, 각 명령어의 레이턴시 및 입력된 복수의 명령어 간의 의존성 중 적어도 하나를 추가로 고려할 수 있다.
한편, 결합 명령어는 제1 싸이클에 스케줄링된 명령어 및 제2 싸이클에 스케줄링된 명령어 각각의 실행 싸이클에 대한 정보 및, 제1 싸이클에 스케줄링된 명령어 및 제2 싸이클에 스케줄링된 명령어 각각에 대응되는 입력 데이터의 입력 포트 및 입력 싸이클에 대한 정보 중 적어도 하나를 포함할 수 있다.
예를 들어, 제1 명령어 및 제2 명령어가 결합된 결합 명령어가 제1 싸이클에서 이슈되는 경우, 결합 명령어는 제1 싸이클에서 제1 입력 포트(10-1) 및 제2 입력 포트(10-2)를 통해 입력된 복수의 입력 데이터를 제1 싸이클에서 제1 명령어에 따라 연산되도록 하는 정보를 저장할 수 있다. 또한, 결합 명령어는 제1 싸이클에서 제3 입력 포트(10-3)를 통해 입력되어 버퍼(20)에 저장된 입력 데이터 및 제2 싸이클에서 제3 입력 포트(10-3)를 통해 입력된 입력 데이터를 제2 싸이클에서 제2 명령어에 따라 연산되도록 하는 정보를 저장할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 복수의 버퍼(20-1, 20-2)가 구비된 경우의 동작을 설명하기 위한 도면이다.
도 8에 도시된 바와 같이, 기능 유닛(220)은 복수의 버퍼(20-1, 20-2)를 포함할 수 있다. 스케줄러(120)는 미할당 입력 포트의 개수 및 적어도 하나의 버퍼의 개수의 합 만큼의 입력 데이터에 대응되는 명령어를 재스케줄링할 수 있다.
예를 들어, 도 8과 같이 1차 스케줄링된 상태에서, 스케줄러(120)는 제1 싸이클의 제3 입력 포트(10-3)가 미할당 상태인 경우, 미할당 입력 포트의 개수가 한 개이고 버퍼(20-1, 20-2)의 개수가 두 개이므로, 입력 데이터의 개수가 세 개인 제1 덧셈 명령어(ADD1) 또는 제2 곱셈 명령어(MUL2)를 재스케줄링할 수 있다.
이후, 스케줄러(120)는 결합 명령어를 생성할 수 있는지를 검토하여 제1 덧셈 명령어(ADD1) 또는 제2 곱셈 명령어(MUL2)를 재스케줄링할 수 있다. 또한, 스케줄러(120)는 명령어 간의 의존성 및 레이턴시 중 적어도 하나를 고려하여 제1 덧셈 명령어(ADD1) 또는 제2 곱셈 명령어(MUL2)를 재스케줄링할 수도 있다.
한편, 도 8에서 설명한 내용은 일 실시 예에 불과하고, 스케줄러(120)는 미할당 입력 포트의 개수 및 적어도 하나의 버퍼의 개수의 합 이하의 입력 데이터에 대응되는 명령어를 재스케줄링할 수도 있다. 예를 들어, 상술한 예에서 스케줄러(120)는 입력 데이터의 개수가 세 개 이하인 명령어를 재스케줄링할 수도 있다. 즉, 스케줄러(120)는 제1 덧셈 명령어(ADD1) 또는 제2 곱셈 명령어(MUL2) 뿐만 아니라 제2 덧셈 명령어(ADD2)를 재스케줄링할 수도 있다.
도 9는 본 발명의 일 실시 예에 따른 결합 명령어를 이용하는 경우를 설명하기 위한 도면이다. 기능 유닛(220)은 한 개의 출력 포트(30)를 구비한 경우로 설명한다. 그에 따라, 기능 유닛(20)은 한 싸이클 동안 하나의 출력 데이터만을 출력할 수 있다. 다만, 이는 일 실시 예에 불과하고, 출력 포트(30)는 복수일 수도 있다.
한편, 기능 유닛(220)은 복수의 입력 포트를 포함하고, 스케줄링이 잘못되는 경우, 복수의 출력 데이터가 한 싸이클 동안 출력될 수 있고, confilict가 발생할 수 있다. 그에 따라, 스케줄러(120)는 출력 포트의 개수 및 각 명령어의 레이턴시를 고려하여 스케줄링을 수행할 수 있다.
도 9에서 곱셈 연산, 덧셈 연산 및 뺄셈 연산 각각의 레이턴시는 5, 2 및 2인 것으로 가정하였다. 예를 들어, 곱셈 연산의 경우 제1 싸이클에서 이슈되면, 제6 싸이클에서 출력(write back)될 수 있다. 다만, 이는 일 실시 예에 불과하며, 하드웨어의 구성에 따라 얼마든지 다른 레이턴시를 가질 수 있다.
도 9의 상단 도면은 결합 명령어를 이용하기 전의 스케줄링 도시하였다. 한 싸이클동안 하나의 명령어가 이슈되고, 한 싸이클 동안 하나의 출력 데이터만이 출력되는 조건 하에 총 14개의 싸이클이 필요하다.
이에 대해, 도 9의 하단 도면에 도시된 바와 같이, 곱셈 명령어 두 개가 결합된 결합 명령어(DMUL)를 두 번 이용함에 따라 총 11개의 싸이클 동안 동일한 작업을 수행할 수 있다.
한편, 하나의 명령어를 이용한 출력 데이터는 특정 레지스터의 특정 주소로 입력될 수 있고, 이를 위한 코드 규칙은 기 정해져 있을 수 있다. 다만, 결합 명령어를 이용하는 경우 출력 데이터가 두 개이고, 기존 코드 규칙은 하나의 출력 데이터가 저장될 특정 레지스터의 특정 주소만을 지칭할 수 있도록 되어 있다. 그에 따라, 결합 명령어를 이용한 제1 출력 데이터는 동일한 코드 규칙에 의해 설정된 특정 레지스터의 특정 주소로 저장하고, 제2 출력 데이터는 특정 레지스터의 특정 주소의 바로 다음 주소로 저장하도록 하드웨어를 구성할 수 있다. 이러한 동작을 통해 각 명령어에 대한 코드를 작성할 필요가 없어 코드 사이즈를 절감할 수 있다.
도 10은 본 발명의 일 실시 예에 따른 결합 명령어를 이용하는 방법을 설명하기 위한 흐름도이다.
먼저, 전자 장치(100)에 복수의 명령어가 입력된다(S1010). 복수의 명령어는 각 명령어 간의 의존성을 가질 수 있다.
그리고, 스케줄러(120)는 복수의 명령어에서 변환 가능한 명령어들을 결합 명령어로 변환한다(S1020). 이때, 스케줄러(120)는 복수의 명령어 간 결합 여부를 나타내는 결합 명령어에 대한 정보를 이용할 수 있다.
그리고, 스케줄러(120)는 결합 명령어를 포함하는 복수의 명령어의 각 명령어에 대해 스케줄링을 수행할 수 있다(S1030). 여기서는, 결합 명령어를 먼저 생성하는 것으로 설명하였으나, 이에 한정되는 것은 아니다. 예를 들어, 스케줄러(120)는 결합 명령어를 생성하기 전에 복수의 명령어를 스케줄링하고, 미할당 입력 포트가 존재하는 경우 결합 명령어를 생성할 수도 있다.
스케줄러(120)는 스케줄링 과정에서 결합 명령어를 스케줄링하는 경우(S1040), 다음 싸이클에서 점유될 입력 포트 및 출력 포트를 기록할 수 있다(S1050). 스케줄러(120)는 스케줄링 과정에서 일반 명령어를 스케줄링하는 경우 종래의 방식에 따라 스케줄링을 수행할 수 있다.
도 11a 내지 도 11c는 본 발명의 다양한 실시 예에 따른 기능 유닛(220)의 내부 구조를 설명하기 위한 도면들이다.
도 11a에 도시된 바와 같이, 기능 유닛(220)은 제어 로직(Control Logic, 1110), ALU(Arithmetic Logic Unit, 1120), MUL(1130), 복수의 입력 포트(10-1, 10-2, 10-3), 복수의 버퍼(20-1, 20-2, 20-3) 및 복수의 MUX(40-1, 40-2, 40-3)를 포함할 수 있다. 여기서, ALU(1120) 및 MUL(1130)은 일반적으로 알려진 구성이고, 복수의 입력 포트(10-1, 10-2, 10-3)는 상술한 바와 동일하므로 구체적인 설명은 생략한다.
제어 로직(1110)은 기능 유닛(220) 외부로부터 인스트럭션(instruction)을 입력받아 기능 유닛(220) 내의 복수의 버퍼(20-1, 20-2, 20-3) 및 복수의 MUX(40-1, 40-2, 40-3)를 제어할 수 있다. 구체적으로, 제어 로직(1110)은 인스트럭션을 해석하여 각 버퍼의 데이터 저장 여부 및 출력 여부를 제어하고, 각 MUX의 출력 데이터를 결정할 수 있다.
예를 들어, 도 4의 하단 도면과 같이 결합 명령어가 입력되는 경우, 제어 로직(1110)은 제1 싸이클에서 제1 입력 포트(10-1) 및 제2 입력 포트(10-2) 각각을 통해 입력된 제1 곱셈 명령어(MUL1)의 입력 데이터 a 및 입력 데이터 b를 연산하도록 복수의 MUX(40-1, 40-2, 40-3)를 제어할 수 있다. 구체적으로, 제어 로직(1110)은 MUX 1(40-1) 및 MUX 2(40-2)의 출력 데이터가 제1 입력 포트(10-1) 및 제2 입력 포트(10-2) 각각을 통해 입력된 입력 데이터 a 및 입력 데이터 b가 되도록 제어할 수 있다. 이때, 버퍼1(20-1) 및 버퍼2(20-2)는 데이터를 저장할 필요가 없고, 제어 로직(1110)은 버퍼1(20-1) 및 버퍼2(20-2)가 데이터를 저장하지 않도록 제어할 수 있다.
또한. 제어 로직(1110)은 DMUL 명령어가 입력됨에 따라 제1 싸이클에서 제3 입력 포트(10-3)를 통해 입력되는 제2 곱셈 명령어(MUL2)의 입력 데이터 d가 버퍼3(20-3)에 저장되도록 버퍼3(20-3)을 제어할 수 있다.
그리고, 제어 로직(1110)은 제2 싸이클에서 제3 포트(10-3)를 통해 입력되는 제2 곱셈 명령어(MUL2)의 입력 데이터 c 및 버퍼3(20-3)에 저장되어 있는 입력 데이터 d가 MUL(1130)에 입력되도록 버퍼 3(20-3) 및 복수의 MUX(40-1, 40-2, 40-3)를 제어할 수 있다.
예를 들어, 제어 로직(1110)은 제2 싸이클에서 입력 데이터 c를 MUX 3(40-3)이 출력하고, 입력 데이터 d를 MUX 1(40-1) 또는 MUX 2(40-2)가 출력하도록 제어할 수 있다.
도 11b는 본 발명의 다른 실시 예에 따른 기능 유닛(220)의 내부 구조를 설명하기 위한 도면이다.
도 11b에 도시된 바와 같이, 기능 유닛(220)은 제어 로직(1110), ALU(1120), LSU(Load-Store Unit)(dii_load(ld))(1140), 복수의 입력 포트(10-1, 10-2, 10-3), 복수의 버퍼(20-1, 20-2, 20-3) 및 복수의 MUX(40-1, 40-2, 40-3)를 포함할 수 있다. 도 11b의 구성 중 도 11a와 중복되는 부분의 설명은 생략한다.
도 11b에 도시된 바와 같이, ALU(1120)에 복수의 버퍼(20-1, 20-2, 20-3) 및 복수의 MUX(40-1, 40-2, 40-3)가 연결될 수도 있다. 제어 로직(1110)은 도 11a와 같이 복수의 버퍼(20-1, 20-2, 20-3) 및 복수의 MUX(40-1, 40-2, 40-3)을 제어하여, 도 11a의 MUL(1130)과 같이 도 11b의 ALU(1120)가 동작하도록 제어할 수 있다.
한편, LSU(dii_load(ld))(1140)는 프로세서(200)의 외부로부터 데이터를 직접 입력받을 수 있다. 예를 들어, LSU(dii_load(ld))(1140)는 프로세서(200) 외부의 외부 메모리로부터 데이터를 직접 입력받을 수 있다. 그에 따라, 도 11b에 도시된 바와 같이, 입력 포트, 버퍼 또는 MUX와의 연결이 불필요할 수 있다.
도 11c는 도 11b의 LSU(dii_load(ld))(1140)가 LSU(Id/st)(1150)로 변경된 도면이다. LSU(Id/st)(1150)는 복수의 입력 포트(10-1, 10-2, 10-3)로부터 데이터가 입력될 수 있다는 점에서 LSU(dii_load(ld))(1140)와 차이가 있을 뿐, 그 밖의 동작은 도 11b와 동일하다.
한편, 도 11a 내지 도 11c의 도면에서 제어 로직(1110)은 버퍼1(20-1) 및 MUX 1(40-1)에만 연결된 것으로 도시되었으나, 이는 도면의 간소화를 위한 것이고, 제어 로직(1110)은 복수의 버퍼(20-1, 20-2, 20-3) 및 복수의 MUX(40-1, 40-2, 40-3) 전부에 연결되어 각각을 제어할 수 있다.
도 12는 본 발명의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
먼저, 제1 싸이클에 스케줄링된 명령어에 기초하여 복수의 입력 포트에 적어도 하나의 입력 데이터를 할당한다(S1210). 그리고, 제1 싸이클에서 복수의 입력 포트 중 미할당 입력 포트가 존재하는 경우, 제1 싸이클 이후의 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 제1 싸이클에서 미할당 입력 포트에 할당하고, 명령어에 대응되는 복수의 입력 데이터 중 나머지를 제2 싸이클에서 복수의 입력 포트 중 하나에 할당하여 컴파일링 데이터를 생성한다(S1220).
여기서, 복수의 입력 포트 중 하나에 할당하여 컴파일링 데이터를 생성하는 단계(S1220)는 제1 싸이클 및 제1 싸이클 직후의 제2 싸이클에서 동일한 입력 포트가 미할당 입력 포트인 경우, 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 제1 싸이클에서 미할당 입력 포트에 할당하고, 명령어에 대응되는 복수의 입력 데이터 중 나머지를 제2 싸이클에서 미할당 입력 포트에 할당할 수 있다.
그리고, 복수의 명령어를 단일 명령어로 결합하기 위한 정보에 기초하여 제1 싸이클에 스케줄링된 명령어 및 제2 싸이클에 스케줄링된 명령어를 결합 명령어로 변경하는 단계 및 결합 명령어를 제1 싸이클에 재스케줄링하는 단계를 더 포함할 수 있다.
여기서, 제2 싸이클에 스케줄링되는 명령어는, 제1 싸이클에 스케줄링된 명령어와 함께 결합 가능한 명령어일 수 있다.
또한, 복수의 명령어는 적어도 하나의 산술 연산 명령어를 포함하며, 제1 싸이클에 스케줄링된 명령어 및 제2 싸이클에 스케줄링된 명령어는 서로 다른 타입의 명령어일 수 있다.
한편, 복수의 입력 포트 중 하나에 할당하여 컴파일링 데이터를 생성하는 단계(S1220)는 미할당 입력 포트의 개수 및 적어도 하나의 버퍼의 개수의 합 만큼의 입력 데이터에 대응되는 명령어를 제2 싸이클에 스케줄링된 명령어로 결정할 수 있다.
한편, 결합 명령어는 제1 싸이클에 스케줄링된 명령어 및 제2 싸이클에 스케줄링된 명령어 각각의 실행 싸이클에 대한 정보 및, 제1 싸이클에 스케줄링된 명령어 및 제2 싸이클에 스케줄링된 명령어 각각에 대응되는 입력 데이터의 입력 포트 및 입력 싸이클에 대한 정보 중 적어도 하나를 포함할 수 있다.
그리고, 복수의 명령어 각각의 레이턴시(latency)에 기초하여, 제1 싸이클에 스케줄링된 명령어에 대응되는 출력 데이터와 제2 싸이클에 스케줄링된 명령어에 대응되는 출력 데이터가 기능 유닛의 출력 포트를 통해 동시에 출력되지 않도록 스케줄링하는 단계를 더 포함할 수 있다.
도 13은 본 발명의 일 실시 예에 따른 프로세서의 제어 방법을 설명하기 위한 흐름도이다.
먼저, 컴파일링 데이터에 기초하여 순차적으로 명령어를 실행한다(S1310). 그리고, 제1 싸이클에서 컴파일링 데이터에 포함된 결합 명령어를 처리하는 경우, 복수의 입력 포트 중 적어도 하나의 입력 포트를 통해 입력되는 데이터를 적어도 하나의 버퍼에 저장한다(S1320). 그리고, 저장된 데이터 및 제1 싸이클 이후의 제2 싸이클에서 복수의 입력 포트 중 하나를 통해 입력되는 데이터를 대응되는 명령어에 기초하여 연산한다(S1330).
이상과 같은 본 발명의 다양한 실시 예에 따르면, 전자 장치는 기능 유닛의 미할당 입력 포트를 사용하도록 명령어를 스케줄링하여 스케줄링 효율을 개선하고 코드 사이즈를 감소할 수 있다.
한편, 이상에서는 복수의 입력 데이터를 입력받아 대응되는 명령어에 다른 연산을 수행하는 것으로 설명하였으나, 이에 한정되는 것은 아니다. 예를 들어, 입력 데이터가 없거나 하나만 있는 경우에도 동일한 방법을 적용하여 싸이클을 절약할 수도 있다.
한편, 이러한 다양한 실시 예에 따른 방법들은 프로그래밍되어 각종 저장 매체에 저장될 수 있다. 이에 따라, 저장 매체를 실행하는 다양한 유형의 전자 장치에서 상술한 다양한 실시 예에 따른 방법들이 구현될 수 있다.
구체적으로는, 상술한 스케줄링 방법을 순차적으로 수행하는 프로그램이 저장된 비일시적 판독 가능 매체(non-transitory computer readable medium)가 제공될 수 있다.
비일시적 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상술한 다양한 어플리케이션 또는 프로그램들은 CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등과 같은 비일시적 판독 가능 매체에 저장되어 제공될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형 실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100 : 전자 장치 110 : 스토리지
120 : 스케줄러 200 : 프로세서
210 : 메모리 220 : 기능 유닛
120 : 스케줄러 200 : 프로세서
210 : 메모리 220 : 기능 유닛
Claims (19)
- 복수의 입력 포트를 구비한 기능 유닛(Function Unit, FU)을 포함하는 프로세서에서 이용되는 컴파일링 데이터를 생성하는 전자 장치에 있어서,
복수의 명령어를 저장하는 스토리지; 및
복수의 명령어 각각을 복수의 싸이클(cycle) 중 대응되는 싸이클에 스케줄링하고, 상기 복수의 명령어 각각에 대응되는 복수의 입력 데이터를 상기 복수의 싸이클 중 대응되는 싸이클에서 상기 복수의 입력 포트에 할당하여 상기 컴파일링 데이터를 획득하는 스케줄러;를 포함하고,
상기 스케줄러는,
제1 싸이클에서 상기 복수의 입력 포트 중 미할당 입력 포트가 존재하는 경우, 상기 제1 싸이클 이후의 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 상기 제1 싸이클에서 상기 미할당 입력 포트에 할당하고, 상기 제1 싸이클 이후의 상기 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 나머지를 상기 제2 싸이클에서 상기 복수의 입력 포트 중 하나에 할당하여 상기 컴파일링 데이터를 업데이트하는, 전자 장치. - 제1항에 있어서,
상기 스케줄러는,
상기 제1 싸이클 및 상기 제1 싸이클 직후의 상기 제2 싸이클에서 동일한 입력 포트가 미할당 입력 포트인 경우, 상기 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 상기 제1 싸이클에서 상기 미할당 입력 포트에 할당하고, 상기 명령어에 대응되는 복수의 입력 데이터 중 나머지를 상기 제2 싸이클에서 상기 미할당 입력 포트에 할당하는, 전자 장치. - 제1항에 있어서,
상기 스토리지는, 복수의 명령어를 단일 명령어로 결합하기 위한 정보를 저장하고,
상기 스케줄러는,
상기 스토리지에 저장된 정보에 기초하여 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어를 결합 명령어로 변경하고, 상기 결합 명령어를 상기 제1 싸이클에 재스케줄링하는, 전자 장치. - 제3항에 있어서,
상기 제2 싸이클에 스케줄링되는 명령어는, 상기 제1 싸이클에 스케줄링된 명령어와 함께 결합 가능한 명령어인, 전자 장치. - 제3항에 있어서,
상기 복수의 명령어는 적어도 하나의 산술 연산 명령어를 포함하며,
상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어는 서로 다른 타입의 명령어인, 전자 장치. - 제1항에 있어서,
상기 스케줄러는,
상기 미할당 입력 포트의 개수 및 적어도 하나의 버퍼의 개수의 합 만큼의 입력 데이터에 대응되는 명령어를 상기 제2 싸이클에 스케줄링된 명령어로 결정하는, 전자 장치. - 제3항에 있어서,
상기 결합 명령어는,
상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어 각각의 실행 싸이클에 대한 정보 및, 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어 각각에 대응되는 입력 데이터의 입력 포트 및 입력 싸이클에 대한 정보 중 적어도 하나를 포함하는, 전자 장치. - 제1항에 있어서,
상기 기능 유닛은, 출력 포트를 포함하고,
상기 스케줄러는,
상기 복수의 명령어 각각의 레이턴시(latency)에 기초하여, 상기 제1 싸이클에 스케줄링된 명령어에 대응되는 출력 데이터와 상기 제2 싸이클에 스케줄링된 명령어에 대응되는 출력 데이터가 상기 출력 포트를 통해 동시에 출력되지 않도록 스케줄링하는, 전자 장치. - 프로세서에 있어서,
입력된 컴파일링 데이터를 저장하는 메모리; 및
복수의 입력 포트 및 적어도 하나의 버퍼를 구비하며, 상기 컴파일링 데이터를 처리하는 기능 유닛(Function Unit);을 포함하고,
상기 프로세서는,
제1 싸이클에서 상기 컴파일링 데이터에 포함된 결합 명령어를 처리하는 경우, 상기 복수의 입력 포트 중 적어도 하나의 입력 포트를 통해 입력되는 데이터를 상기 적어도 하나의 버퍼에 저장하고, 상기 저장된 데이터 및 상기 제1 싸이클 이후의 제2 싸이클에서 상기 복수의 입력 포트 중 하나를 통해 입력되는 데이터를 대응되는 명령어에 기초하여 연산하는, 프로세서. - 복수의 입력 포트를 구비한 기능 유닛(Function Unit, FU)을 포함하는 프로세서에서 이용되는 컴파일링 데이터를 생성하는 전자 장치의 제어 방법에 있어서,
복수의 명령어 각각을 복수의 싸이클(cycle) 중 대응되는 싸이클에 스케줄링하고, 상기 복수의 명령어 각각에 대응되는 복수의 입력 데이터를 상기 복수의 싸이클 중 대응되는 싸이클에서 상기 복수의 입력 포트에 할당하여 상기 컴파일링 데이터를 획득하는 단계; 및
제1 싸이클에서 상기 복수의 입력 포트 중 미할당 입력 포트가 존재하는 경우, 상기 제1 싸이클 이후의 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 상기 제1 싸이클에서 상기 미할당 입력 포트에 할당하고, 상기 제1 싸이클 이후의 상기 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 나머지를 상기 제2 싸이클에서 상기 복수의 입력 포트 중 하나에 할당하여 상기 컴파일링 데이터를 업데이트하는 단계;를 포함하는, 제어 방법. - 제10항에 있어서,
상기 업데이트하는 단계는,
상기 제1 싸이클 및 상기 제1 싸이클 직후의 상기 제2 싸이클에서 동일한 입력 포트가 미할당 입력 포트인 경우, 상기 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 상기 제1 싸이클에서 상기 미할당 입력 포트에 할당하고, 상기 명령어에 대응되는 복수의 입력 데이터 중 나머지를 상기 제2 싸이클에서 상기 미할당 입력 포트에 할당하는, 제어 방법. - 제10항에 있어서,
복수의 명령어를 단일 명령어로 결합하기 위한 정보에 기초하여 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어를 결합 명령어로 변경하는 단계; 및
상기 결합 명령어를 상기 제1 싸이클에 재스케줄링하는 단계;를 더 포함하는, 제어 방법. - 제12항에 있어서,
상기 제2 싸이클에 스케줄링되는 명령어는, 상기 제1 싸이클에 스케줄링된 명령어와 함께 결합 가능한 명령어인, 제어 방법. - 제12항에 있어서,
상기 복수의 명령어는 적어도 하나의 산술 연산 명령어를 포함하며,
상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어는 서로 다른 타입의 명령어인, 제어 방법. - 제10항에 있어서,
상기 업데이트하는 단계는,
상기 미할당 입력 포트의 개수 및 적어도 하나의 버퍼의 개수의 합 만큼의 입력 데이터에 대응되는 명령어를 상기 제2 싸이클에 스케줄링된 명령어로 결정하는, 제어 방법. - 제12항에 있어서,
상기 결합 명령어는,
상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어 각각의 실행 싸이클에 대한 정보 및, 상기 제1 싸이클에 스케줄링된 명령어 및 상기 제2 싸이클에 스케줄링된 명령어 각각에 대응되는 입력 데이터의 입력 포트 및 입력 싸이클에 대한 정보 중 적어도 하나를 포함하는, 제어 방법. - 제10항에 있어서,
상기 복수의 명령어 각각의 레이턴시(latency)에 기초하여, 상기 제1 싸이클에 스케줄링된 명령어에 대응되는 출력 데이터와 상기 제2 싸이클에 스케줄링된 명령어에 대응되는 출력 데이터가 상기 기능 유닛의 출력 포트를 통해 동시에 출력되지 않도록 스케줄링하는 단계;를 더 포함하는, 제어 방법. - 복수의 입력 포트 및 적어도 하나의 버퍼를 구비한 기능 유닛(Function Unit)을 포함하는 프로세서의 제어 방법에 있어서,
컴파일링 데이터에 기초하여 순차적으로 명령어를 실행하는 단계;
제1 싸이클에서 상기 컴파일링 데이터에 포함된 결합 명령어를 처리하는 경우, 복수의 입력 포트 중 적어도 하나의 입력 포트를 통해 입력되는 데이터를 상기 적어도 하나의 버퍼에 저장하는 단계; 및
상기 저장된 데이터 및 상기 제1 싸이클 이후의 제2 싸이클에서 상기 복수의 입력 포트 중 하나를 통해 입력되는 데이터를 대응되는 명령어에 기초하여 연산하는 단계;를 포함하는, 제어 방법. - 복수의 입력 포트를 구비한 기능 유닛(Function Unit, FU)을 포함하는 프로세서에서 이용되는 컴파일링 데이터를 생성하는 전자 장치의 동작 방법을 수행하기 위한 프로그램이 저장된 기록 매체에 있어서,
상기 동작 방법은,
복수의 명령어 각각을 복수의 싸이클(cycle) 중 대응되는 싸이클에 스케줄링하고, 상기 복수의 명령어 각각에 대응되는 복수의 입력 데이터를 상기 복수의 싸이클 중 대응되는 싸이클에서 상기 복수의 입력 포트에 할당하여 상기 컴파일링 데이터를 획득하는 단계; 및
제1 싸이클에서 상기 복수의 입력 포트 중 미할당 입력 포트가 존재하는 경우, 상기 제1 싸이클 이후의 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 일부를 상기 제1 싸이클에서 상기 미할당 입력 포트에 할당하고, 상기 제1 싸이클 이후의 상기 제2 싸이클에 스케줄링된 명령어에 대응되는 복수의 입력 데이터 중 나머지를 상기 제2 싸이클에서 상기 복수의 입력 포트 중 하나에 할당하여 상기 컴파일링 데이터를 업데이트하는 단계;를 포함하는 기록 매체.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160123375A KR102593320B1 (ko) | 2016-09-26 | 2016-09-26 | 전자 장치, 프로세서 및 그 제어 방법 |
US15/655,466 US10606602B2 (en) | 2016-09-26 | 2017-07-20 | Electronic apparatus, processor and control method including a compiler scheduling instructions to reduce unused input ports |
PCT/KR2017/009799 WO2018056614A1 (en) | 2016-09-26 | 2017-09-07 | Electronic apparatus, processor and control method thereof |
EP17853328.7A EP3472706A4 (en) | 2016-09-26 | 2017-09-07 | ELECTRONIC DEVICE, PROCESSOR AND CONTROL METHOD THEREFOR |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160123375A KR102593320B1 (ko) | 2016-09-26 | 2016-09-26 | 전자 장치, 프로세서 및 그 제어 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180033872A KR20180033872A (ko) | 2018-04-04 |
KR102593320B1 true KR102593320B1 (ko) | 2023-10-25 |
Family
ID=61686271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160123375A KR102593320B1 (ko) | 2016-09-26 | 2016-09-26 | 전자 장치, 프로세서 및 그 제어 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10606602B2 (ko) |
EP (1) | EP3472706A4 (ko) |
KR (1) | KR102593320B1 (ko) |
WO (1) | WO2018056614A1 (ko) |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE291755T1 (de) | 1991-07-08 | 2005-04-15 | Seiko Epson Corp | Risc-prozessor mit erweiterbarer architektur |
JPH1185513A (ja) | 1997-09-03 | 1999-03-30 | Hitachi Ltd | プロセッサ |
US6076154A (en) * | 1998-01-16 | 2000-06-13 | U.S. Philips Corporation | VLIW processor has different functional units operating on commands of different widths |
CN1340173A (zh) * | 1999-12-14 | 2002-03-13 | 索尼公司 | 注册方法和设备、信息处理方法和设备、提供方法和设备以及程序存储介质 |
DE60333089D1 (de) * | 2002-04-18 | 2010-08-05 | Nxp Bv | Prozessor mit mehrfachbefehlsausgabe |
US8108656B2 (en) * | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
US20040193846A1 (en) * | 2003-03-28 | 2004-09-30 | Sprangle Eric A. | Method and apparatus for utilizing multiple opportunity ports in a processor pipeline |
US7315935B1 (en) * | 2003-10-06 | 2008-01-01 | Advanced Micro Devices, Inc. | Apparatus and method for port arbitration in a register file on the basis of functional unit issue slots |
JP4283131B2 (ja) | 2004-02-12 | 2009-06-24 | パナソニック株式会社 | プロセッサ及びコンパイル方法 |
US7617495B2 (en) | 2004-03-24 | 2009-11-10 | Intel Corporation | Resource-aware scheduling for compilers |
US7802076B2 (en) | 2004-06-24 | 2010-09-21 | Intel Corporation | Method and apparatus to vectorize multiple input instructions |
US7478225B1 (en) * | 2004-06-30 | 2009-01-13 | Sun Microsystems, Inc. | Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor |
US8479179B2 (en) * | 2004-12-13 | 2013-07-02 | St-Ericsson Sa | Compiling method, compiling apparatus and computer system for a loop in a program |
US7437544B2 (en) * | 2005-04-29 | 2008-10-14 | Arm Limited | Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction |
US7900022B2 (en) * | 2005-12-30 | 2011-03-01 | Intel Corporation | Programmable processing unit with an input buffer and output buffer configured to exclusively exchange data with either a shared memory logic or a multiplier based upon a mode instruction |
KR101335001B1 (ko) | 2007-11-07 | 2013-12-02 | 삼성전자주식회사 | 프로세서 및 인스트럭션 스케줄링 방법 |
KR100960148B1 (ko) | 2008-05-07 | 2010-05-27 | 한국전자통신연구원 | 데이터 프로세싱 회로 |
JP2010049656A (ja) | 2008-08-25 | 2010-03-04 | Toshiba Storage Device Corp | プロセッサ、プログラム及び記憶装置 |
US8533435B2 (en) | 2009-09-24 | 2013-09-10 | Nvidia Corporation | Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict |
KR20110103256A (ko) | 2010-03-12 | 2011-09-20 | 삼성전자주식회사 | 다중 입출력 오퍼레이션 지원 프로세서 및 그 방법 |
US9430237B2 (en) * | 2011-09-29 | 2016-08-30 | Advanced Micro Devices, Inc. | Sharing register file read ports for multiple operand instructions |
JP5887811B2 (ja) | 2011-10-05 | 2016-03-16 | 富士通株式会社 | コンパイル装置、コンパイル方法、コンパイルプログラム、記録媒体 |
US20130339689A1 (en) * | 2011-12-29 | 2013-12-19 | Srikanth T. Srinivasan | Later stage read port reduction |
JP5413473B2 (ja) * | 2012-03-01 | 2014-02-12 | 日本電気株式会社 | ベクトル処理装置およびベクトル処理方法 |
KR20130131789A (ko) | 2012-05-24 | 2013-12-04 | 삼성전자주식회사 | 미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법 |
KR102032895B1 (ko) | 2013-01-28 | 2019-11-08 | 삼성전자주식회사 | 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서 |
KR102204282B1 (ko) | 2013-11-25 | 2021-01-18 | 삼성전자주식회사 | 다수의 기능 유닛을 가지는 프로세서를 위한 루프 스케쥴링 방법 |
KR102177871B1 (ko) * | 2013-12-20 | 2020-11-12 | 삼성전자주식회사 | 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법 |
JP6072706B2 (ja) * | 2014-01-28 | 2017-02-01 | Jxエネルギー株式会社 | 冷凍機用作動流体組成物及び冷凍機油 |
KR102250089B1 (ko) * | 2014-03-11 | 2021-05-10 | 삼성전자주식회사 | 레지스터 포트를 관리하는 방법 및 장치 |
KR102210997B1 (ko) | 2014-03-12 | 2021-02-02 | 삼성전자주식회사 | Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치 |
JP2015184979A (ja) | 2014-03-25 | 2015-10-22 | 富士通株式会社 | 演算装置および命令フェッチ方法 |
US9632783B2 (en) * | 2014-10-03 | 2017-04-25 | Qualcomm Incorporated | Operand conflict resolution for reduced port general purpose register |
US9690590B2 (en) * | 2014-10-15 | 2017-06-27 | Cavium, Inc. | Flexible instruction execution in a processor pipeline |
-
2016
- 2016-09-26 KR KR1020160123375A patent/KR102593320B1/ko active IP Right Grant
-
2017
- 2017-07-20 US US15/655,466 patent/US10606602B2/en not_active Expired - Fee Related
- 2017-09-07 WO PCT/KR2017/009799 patent/WO2018056614A1/en unknown
- 2017-09-07 EP EP17853328.7A patent/EP3472706A4/en not_active Ceased
Non-Patent Citations (5)
Title |
---|
미국공개특허 제2011-0225399호(2011.09.15.) 1부.* |
미국공개특허 제2016-0098276호(2016.04.07.) 1부.* |
미국등록특허 제6076154호(2000.06.13.) 1부.* |
미국등록특허 제7315935호(2008.01.01.) 1부.* |
미국등록특허 제7478225호(2009.01.13.) 1부.* |
Also Published As
Publication number | Publication date |
---|---|
KR20180033872A (ko) | 2018-04-04 |
US20180088954A1 (en) | 2018-03-29 |
EP3472706A4 (en) | 2019-11-27 |
WO2018056614A1 (en) | 2018-03-29 |
US10606602B2 (en) | 2020-03-31 |
EP3472706A1 (en) | 2019-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101702651B1 (ko) | 하드웨어 포인터를 이용한 simd 코어 내 분기 해법 | |
JPH05143332A (ja) | 命令スケジユーラを備えたコンピユータ・システム及び入力命令シーケンスを再スケジユールする方法 | |
WO2012158753A1 (en) | Automatic kernel migration for heterogeneous cores | |
US10430191B2 (en) | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption | |
JP6427054B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
KR101787653B1 (ko) | 병렬 파이프라인에서의 분기에 대한 하드웨어 및 소프트웨어 해법 | |
KR20140126195A (ko) | 배치 쓰레드 처리 기반의 프로세서, 그 프로세서를 이용한 배치 쓰레드 처리 방법 및 배치 쓰레드 처리를 위한 코드 생성 장치 | |
US20070288729A1 (en) | System and Method for Simulating Hardware Interrupts | |
KR20150101870A (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
US7565658B2 (en) | Hidden job start preparation in an instruction-parallel processor system | |
US8972961B2 (en) | Instruction scheduling approach to improve processor performance | |
JP6427053B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
JP6488739B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
KR102593320B1 (ko) | 전자 장치, 프로세서 및 그 제어 방법 | |
KR102174335B1 (ko) | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 | |
CN113721899B (zh) | 面向gpdsp的轻量级高效汇编代码编程方法及*** | |
JP6488738B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
KR20150040663A (ko) | 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치 | |
KR102168175B1 (ko) | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 | |
KR20130108878A (ko) | 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법 | |
JP3648402B2 (ja) | コンパイル方法及びコンパイラ装置 | |
JP2001350632A (ja) | 命令配置方法、および、コンパイラを記憶した記憶媒体 | |
KR102185280B1 (ko) | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 | |
US20180101357A1 (en) | Data input/output unit, electronic apparatus, and control methods thereof | |
JP2002318689A (ja) | 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |