KR20160070630A - 매크로 명령어를 처리하는 방법 및 장치 - Google Patents
매크로 명령어를 처리하는 방법 및 장치 Download PDFInfo
- Publication number
- KR20160070630A KR20160070630A KR1020140177829A KR20140177829A KR20160070630A KR 20160070630 A KR20160070630 A KR 20160070630A KR 1020140177829 A KR1020140177829 A KR 1020140177829A KR 20140177829 A KR20140177829 A KR 20140177829A KR 20160070630 A KR20160070630 A KR 20160070630A
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- macro
- processing unit
- macro instruction
- arithmetic
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 119
- 238000000034 method Methods 0.000 title claims description 48
- 230000008569 process Effects 0.000 description 34
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 2
- 238000004148 unit process Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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/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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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/3818—Decoding for concurrent 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/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
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
개시된 일 실시 예에 따른 프로세서는 적어도 하나의 연산기들; 및 상기 연산기들을 공유하는 적어도 하나의 매크로 명령어 처리 유닛을 포함하고, 상기 매크로 명령어 처리 유닛은 상기 연산기들을 사용하여 입력 데이터에 대한 매크로 명령어를 실행하여 결과 데이터를 출력하는 것을 특징으로 한다.
Description
개시된 실시 예들은 매크로 명령어를 처리하는 방법 및 장치에 관한 것이다.
프로세서는 명령어 체계로 이루어지며, 명령어의 조합을 통해 프로그램을 수행한다. 명령어는 덧셈, 뺄셈, 곱셈, 나눗셈 등의 기본 연산과 기본 연산들의 조합을 포함한다. 매크로 명령어는 명령어의 집합을 나타내며, 기본 연산들보다 복잡한 연산을 수행하는 명령어를 의미한다. 오디오 또는 비디오 처리에 특화된 DSP(Digital Signal Processing)는 음성 또는 영상 처리에 특화된 매크로 명령어를 포함하기도 한다.
개시된 일 실시 예는 매크로 명령어를 처리하는 방법 및 장치를 제공하는데 있다.
일 실시 예에 따른 프로세서는 적어도 하나의 연산기들; 및 상기 연산기들을 공유하는 적어도 하나의 매크로 명령어 처리 유닛을 포함하고, 상기 매크로 명령어 처리 유닛은 상기 연산기들을 사용하여 입력 데이터에 대한 매크로 명령어를 실행하여 결과 데이터를 출력하는 것을 특징으로 한다.
일 실시 예에 따른 매크로 명령어 처리 방법은 매크로 명령어 처리 유닛들 중 어느 하나에 매크로 명령어를 할당하는 단계; 상기 매크로 명령어 처리 유닛들이 공유하는 연산기들을 이용하여 매크로 명령어를 처리하는 단계; 및 결과 데이터를 출력하는 단계를 포함한다.
도 1은 일 실시 예에 따른 프로세서를 설명하기 위한 도면이다.
도 2는 일 실시 예에 따른 프로세서의 구성도이다.
도 3은 일 실시 예에 따른 프로세서를 나타내는 구성도이다.
도 4는 일 실시 예에 따른 프로세서를 나타내는 구성도이다.
도 5 내지 도 6은 일 실시 예에 따른 매크로 명령어 처리 유닛의 동작을 설명하기 위한 도면이다.
도 7 내지 도 9는 일 실시 예에 따른 매크로 명령어 처리 유닛의 동작을 설명하기 위한 도면이다.
도 10은 일 실시 예에 따른 매크로 명령어 처리 유닛의 형태를 나타내는 도면이다.
도 11은 일 실시 예에 따른 프로세서를 설명하기 위한 도면이다.
도 12는 일 실시 예에 따른 프로세서 및 프로세서의 동작을 설명하기 위한 도면이다.
도 2는 일 실시 예에 따른 프로세서의 구성도이다.
도 3은 일 실시 예에 따른 프로세서를 나타내는 구성도이다.
도 4는 일 실시 예에 따른 프로세서를 나타내는 구성도이다.
도 5 내지 도 6은 일 실시 예에 따른 매크로 명령어 처리 유닛의 동작을 설명하기 위한 도면이다.
도 7 내지 도 9는 일 실시 예에 따른 매크로 명령어 처리 유닛의 동작을 설명하기 위한 도면이다.
도 10은 일 실시 예에 따른 매크로 명령어 처리 유닛의 형태를 나타내는 도면이다.
도 11은 일 실시 예에 따른 프로세서를 설명하기 위한 도면이다.
도 12는 일 실시 예에 따른 프로세서 및 프로세서의 동작을 설명하기 위한 도면이다.
도 1은 일 실시 예에 따른 프로세서를 설명하기 위한 도면이다. 도 1을 참조하면, 프로세서(1000)는 제1 내지 제N 연산기들을 공유하는 복수의 매크로 명령어 처리 유닛들(10 내지 60)을 포함할 수 있다. N-tab FIR FILTER MIC(10), FFT MIC(20), DCT MIC(30), N-point Median Filter MIC(40), YUV Converter MIC(50) 및 RGB Converter MIC(60)는 매크로 명령어 처리 유닛의 일 예이다. 연산기 Pool(70)은 복수의 연산기들을 포함한다.
프로세서(1000)는 제1 내지 제N 연산기들을 사용하여 매크로 명령어를 처리할 수 있다. 프로세서(1000)는 매크로 명령어를 실행하기 위해 제1 내지 제N 연산기들을 사용할 수 있다. 다시 말해서, 매크로 명령어 처리 유닛들(10 내지 60)은 제1 내지 제N 연산기들을 사용하여 매크로 명령어를 실행한다. 매크로 명령어 처리 유닛들(10 내지 60)은 프로세서(1000)에 포함된 제1 내지 제N 연산기들을 제어하여 매크로 명령어를 처리한다. 따라서, 매크로 명령어 처리 유닛들(10 내지 60)은 개별적으로 연산기를 포함할 필요가 없으므로, 프로세서(1000)의 크기를 줄일 수 있다.
도 2는 일 실시 예에 따른 프로세서의 구성도이다. 도 2를 참조하면, 프로세서(1000)는 제1 내지 제4 명령어 처리 유닛들(110 내지 140)을 공유하는 제1 및 제2 매크로 명령어 처리 유닛들(210 내지 220)을 포함할 수 있다. 제1 내지 제4 명령어 처리 유닛들(110 내지 140)은 일반적인 명령어를 처리하고, 제1 및 제2 매크로 명령어 처리 유닛들(210 내지 220)은 제1 내지 제4 명령어 처리 유닛들(110 내지 140)을 사용하여 매크로 명령어를 처리한다. 제1 내지 제4 명령어 처리 유닛들(110 내지 140)은 직접 명령어를 처리하기도 하고, 제1 및 제2 매크로 명령어 처리 유닛들(210 및 220)에 의해 제어되기도 한다.
도 2에서는 4개의 명령어 처리 유닛들(110 내지 140)을 2개의 매크로 명령어 처리 유닛들(210 및 220)이 공유하는 것을 도시하고 있으나, 명령어 처리 유닛 및 매크로 명령어 처리 유닛의 수는 이에 한정되지 않는다. 프로세서(1000)는 2개 이상의 매크로 명령어 처리 유닛들을 포함할 수 있으며, 매크로 명령어 처리 유닛들은 4개 이상의 명령어 처리 유닛들을 공유할 수 있다.
명령어 분배기(300)는 명령어 디코더로부터 수신된 명령어를 분배한다. 명령어 분배기(300)는 수신된 명령어가 일반 명령어 또는 단일 명령어이면, 제1 내지 제4 명령어 처리 유닛들(110 내지 140) 중 어느 하나에 수신된 명령어를 할당한다. 또한, 명령어 분배기(300)는 수신된 명령어가 매크로 명령어이면, 제1 내지 제2 매크로 명령어 처리 유닛들(210 및 220) 중 어느 하나에 수신된 명령어를 할당한다.
제1 내지 제4 명령어 처리 유닛들(110 내지 140)들은 처리 가능한 명령어가 한정될 수 있으며, 명령어 분배기(300)는 명령어 처리 유닛들(110 내지 140)이 처리 가능한 명령어를 고려하여 명령어를 분배한다.
제1 내지 제2 매크로 명령어 처리 유닛들(210 및 220)들도 처리 가능한 매크로 명령어가 한정될 수 있으며, 명령어 분배기(300)는 매크로 명령어 처리 유닛들(210 및 220)들이 처리 가능한 매크로 명령어를 고려하여 매크로 명령어를 분배한다. 제1 내지 제2 매크로 명령어 처리 유닛들(210 및 220)들은 특정 매크로 명령어만을 처리하도록 설계될 수 있다.
제1 내지 제2 매크로 명령어 처리 유닛들(210 및 220)들은 수신된 매크로 명령어를 실행할 때 제1 내지 제4 명령어 처리 유닛들(110 내지 140)을 사용한다. 제1 내지 제2 매크로 명령어 처리 유닛들(210 및 220)은 매크로 명령어에 포함된 기본 명령어들을 시행하기 위해, 제1 내지 제4 명령어 처리 유닛들(110 내지 140)을 제어한다. 다시 말해서, 제1 내지 제2 매크로 명령어 처리 유닛들(210 및 220)은 제1 내지 제4 명령어 처리 유닛들(110 내지 140)에 기본 명령어들을 분배하고, 제1 내지 제4 명령어 처리 유닛들(110 내지 140)로부터 처리 결과를 수신하는 과정을 반복하여 매크로 명령어를 처리할 수 있다.
도 3은 일 실시 예에 따른 프로세서를 나타내는 구성도이다. 도 3을 참조하면, 제1 내지 제2 매크로 명령어 처리 유닛들(210 및 220)은 제1 내지 제4 명령어 처리 유닛들(110 내지 140) 및 제1 내지 제2 연산기들(410 및 420)을 사용하여 매크로 명령어를 처리할 수 있다. 또한, 제1 내지 제2 매크로 명령어 처리 유닛들(210 및 220)은 제1 내지 제4 명령어 처리 유닛들(110 내지 140)만을 사용하여 매크로 명령어를 처리하거나, 제1 내지 제2 연산기들(410 및 420)만을 사용하여 매크로 명령어를 처리할 수도 있다.
제1 및 제2 매크로 명령어 처리 유닛들(210 및 220)은 특정 매크로 명령어를 처리하도록 구현될 수 있다. 예를 들어, 제1 매크로 명령어 처리 유닛(210)이 FFT(Fast Fourier transform)을 처리하는 유닛이고, 제2 매크로 명령어 처리 유닛(220)이 DCT(Discrete Cosine Transform)을 처리하는 유닛일 때, 명령어 분배기(300)는 FFT 매크로 명령어를 제1 매크로 명령어 처리 유닛(210)에 할당할 수 있으며, DCT 매크로 명령어는 제2 매크로 처리 유닛(220)에 분배한다.
도 4는 일 실시 예에 따른 프로세서를 나타내는 구성도이다. 도 4를 참조하면, 매크로 명령어 처리 유닛(500)은 스케줄러(510) 및 제어기(520)를 포함한다. 또한, 프로세서(1000)는 레지스터 파일(600)을 더 포함한다.
매크로 명령어 처리 유닛(500)은 제1 내지 제4 연산기들(410 내지 440)을 사용하여 매크로 명령어를 처리한다. 다시 말해서, 매크로 명령어 처리 유닛(500)은 프로세서(1000)에 포함된 단위 연산기들(410 내지 440)을 사용하여 매크로 명령어를 처리한다.
매크로 명령어 처리 유닛(500)은 레지스터 파일(600)에 데이터를 저장하거나 독출(read)할 수 있다. 매크로 명령어 처리 유닛(500)은 제1 내지 제4 연산기들(410 내지 440)을 사용하여 매크로 명령어를 처리하는 중 발생하는 데이터 또는 연산의 결과를 레지스터 파일(600)에 저장할 수 있으며, 매크로 명령어를 처리한 결과 데이터를 레지스터 파일(600)에 저장할 수 있다.
스케줄러(510)는 제1 내지 제4 연산기들(410 내지 440)의 스케줄을 관리한다. 스케줄러(510)는 제1 내지 제4 연산기들(410 내지 440)에 입력 데이터 또는 제어 신호를 출력하고, 제1 내지 제4 연산기들(410 내지 440)로부터 연산의 결과를 수신한다. 스케줄러(510)는 제어기(520)로 연산의 결과를 출력하거나, 연산의 결과를 다시 제1 내지 제4 연산기들(410 내지 440)로 출력할 수 있다.
제어기(520)는 매크로 명령어에 포함된 연산을 모두 수행한 이후에 결과값을 출력한다. 제어기(520)는 매크로 명령어를 처리하기 위해, 입력 데이터 또는 제어 신호를 스케줄러(510)로 출력할 수 있다. 제어기(520)는 매크로 명령어를 처리하기 위한 연산들의 처리 순서에 따라 스케줄러(510)를 제어한다.
레지스터 파일(600)은 매크로 명령어를 처리한 결과 데이터를 저장한다. 레지스터 파일(600)은 제어기(520)로부터 결과 데이터를 수신한다. 또한, 레지스터 파일(600)은 매크로 명령어를 처리하는 중 발생하는 중간 데이터를 저장할 수도 있다. 레지스터 파일(600)은 그 이외에 매크로 명령어 처리 유닛(500)으로부터 출력되는 데이터를 저장할 수 있다.
도 5 내지 도 6은 일 실시 예에 따른 매크로 명령어 처리 유닛의 동작을 설명하기 위한 도면이다. 프로그램 코드는 프로세서(1000)가 처리할 연산을 나타내고, 명령어 그룹은 프로그램 코드에 포함된 명령어들을 나타낸다. 도 5 내지 도 6는 명령어 그룹에 mic0 명령어만이 포함되어 있는 경우를 도시하고 있다. 도 5는 제1 사이클일 때, 프로세서(1000)의 동작을 나타내고, 도 6은 제2 사이클일 때, 프로세서(1000)의 동작을 나타낸다. 프로세서(1000)는 제1 및 제2 사이클에 mic0 명령어를 처리할 수 있다.
명령어 디코더(1200)는 명령어 그룹으로부터 처리할 명령어를 디코딩한다. 명령어 디코더(1200)는 명령어를 해석하여 수행할 연산을 확인할 수 있다.
MIC 0 유닛은 mic0 명령어를 처리한다. 예를 들어, MIC 0 유닛은 n-tap FIR 필터 수행용 매크로 명령어 처리 유닛이다. MIC 0 유닛은 연산 y=p0 * x0 + p1 * x1 + p2 * x2 + pn * xn + q 를 처리할 수 있다.
MIC 0 유닛은 곱셈기를 사용하여 y0=a0 * b0를 계산하고, 덧셈기를 사용하여 y1=y0 + c를 계산한다. MIC 0 유닛은 계산된 y1을 레지스터 파일(600)에 저장한다.
도 6에서 MIC 0 유닛은 곱셈기를 사용하여 y2=a1 * b1를 계산하고, 덧셈기를 사용하여 y3=y1 + y2를 계산한다. MIC 0 유닛은 계산된 y3를 레지스터 파일(600)에 저장하고, mic0 명령어 처리를 종료한다.
MIC 0 유닛은 MIC 0 유닛 내부에 별도의 연산기를 구비하지 않아도, 프로세서(1000)에 포함된 곱셈기 및 덧셈기를 사용하여 mic0 명령어를 처리할 수 있다. 또한, MIC 0 유닛은 2번의 사이클 내에 mic0 명령어를 처리할 수 있다.
도 7 내지 도 9는 일 실시 예에 따른 매크로 명령어 처리 유닛의 동작을 설명하기 위한 도면이다. 프로그램 코드는 적어도 하나의 명령어를 포함할 수 있으며, 도 7에서는 프로그램 코드가 3개의 연산을 포함하는 경우를 설명하고 있다. 제1 연산은 a1=a1 * c 이고, 제2 연산은 b1=b1+c 이고, 제3 연산은 y=a0 * b0 + a1 * b1 + c 이다.
프로그램 코드는 명령어 그룹으로 변환될 수 있다. 도 7에서 명령어 그룹은 3개의 명령어들을 포함한다. 제1 명령어는 mul 명령어이고, 제2 명령어는 add 명령어이고, 제3 명령어는 mic0 명령어이다.
도 7은 프로세서(1000)가 mul 명령어를 처리하는 과정을 나타낸다. mul 명령어는 명령어 디코더(1200)에서 해석된다. 프로세서(1000)는 곱셈기를 사용하여 mul 명령어를 처리한다.
도 8은 프로세서(1000) add 명령어를 처리하는 과정을 나타낸다. 프로세서(1000)는 덧셈기를 사용하여 add 명령어를 처리한다.
도 9는 프로세서(1000)가 mic0 명령어를 처리하는 과정을 나타낸다. 프로세서(1000)는 mic0 명령어를 MIC 0 유닛에 할당한다. MIC 0 유닛은 입력 데이터인 a0, b0, a1, b1, c 및 곱셈기와 덧셈기를 사용하여 mic0 명령어를 처리한다. MIC 0 유닛은 mic0 명령어를 처리한 결과 데이터를 레지스터 파일(600)에 저장한다.
도 7 내지 도 9와 같이, 프로세서(1000)는 명령어 그룹에 포함된 명령어의 형태에 따라 명령어를 처리할 수 있다. 다시 말해서, 프로세서(1000)는 곱셈기 또는 덧셈기 등과 같이 프로세서(1000)에 포함된 연산기를 사용하여 명령어를 직접 처리하거나 명령어를 MIC 0 유닛과 같은 매크로 명령어 처리 유닛(500)에 할당할 수 있다. MIC 0 유닛은 프로세서(1000)에 포함된 연산기들을 사용하여 매크로 명령어를 처리한다.
도 10은 일 실시 예에 따른 매크로 명령어 처리 유닛의 형태를 나타내는 도면이다. 도 10을 참조하면, 매크로 명령어 처리 유닛(500)은 각각의 연산기들을 제어하는 연산기 제어기들을 포함할 수 있다. 프로세서(1000)는 제1 내지 제N 연산기들을 포함할 수 있으며, 매크로 명령어 처리 유닛(500)은 제1 내지 제N 연산기들에 대응하는 제1 내지 제N 연산기 제어기들을 포함할 수 있다. 따라서, 제1 연산기 제어기는 제1 연산기를 제어하고, 제2 연산기 제어기는 제2 연산기를 제어하고, 제N 연산기 제어기는 제N 연산기를 제어한다.
매크로 명령어 처리 유닛(500)은 제1 내지 제N 연산기들과 연결되어, 제1 내지 제N 연산기들에 입력 데이터를 출력하거나, 제1 내지 제N 연산기들로부터 결과 데이터를 수신할 수 있다.
도 11은 일 실시 예에 따른 프로세서를 설명하기 위한 도면이다. 도 11을 참조하면, 프로세서(1000)는 매크로 명령어 처리 유닛(500), 어드레스 연산기(700) 및 연산기(800)를 포함한다. 매크로 명령어 처리 유닛(500)은 루프 제어기(loop controller, 530), 스케줄러(510), 어드레스 연산 제어기(522) 및 연산 제어기(521)를 포함한다.
루프 제어기(530)는 매크로 명령어에 포함된 루프 연산을 제어한다. 루프 연산은 동일한 연산을 반복하여 수행하는 연산을 나타낸다. 루프 제어기(530)는 루프 연산에 따라 스케줄러(510)를 제어한다.
스케줄러(510)는 어드레스 연산 제어기(522) 및 연산 제어기(521)를 제어한다. 어드레스 연산 제어기(522)는 어드레스 연산기(700)를 제어하고, 연산 제어기(521)는 연산기(800)를 제어한다. 어드레스 연산기(700)는 레지스터 파일(600) 혹은 내부 메모리의 저장 위치를 계산하는 유닛이다.
매크로 명령어 처리 유닛(500)은 별도의 어드레스 연산기(700) 및 연산기(800)를 구비하지 않아도, 프로세서(1000)에 구비된 어드레스 연산기(700) 및 연산기(800)를 사용하여 루프 연산을 처리할 수 있다.
도 12는 일 실시 예에 따른 프로세서 및 프로세서의 동작을 설명하기 위한 도면이다. 도 12를 참조하면, 프로세서(1000)는 명령어 패치 장치(1100), 명령어 디코더(1200), 매크로 명령어 처리 유닛(500), 연산기(800) 및 레지스터 파일(600)을 포함한다.
단계 1210에서, 명령어 패치 장치(1100)는 명령어를 패치한다. 패치는 명령어를 프로그램 메모리로부터 독출하는 과정을 나타낸다.
단계 1220에서, 명령어 디코더(1200)는 명령어를 디코딩한다. 명령어 디코더(1200)는 명령어 패치 장치(1100)로부터 수신된 명령어를 해석한다.
단계 1230에서, 명령어 디코더(1200)는 명령어가 복수 명령어 인지 여부를 판단한다. 다시 말해서, 명령어 디코더(1200)는 명령어가 일반 명령어인지 매크로 명령어인지를 판단한다. 만약, 명령어가 일반 명령어이면 단계 1280으로 진행하고, 복수 명령어이면 단계 1240으로 진행한다.
단계 1240에서, 매크로 명령어 처리 유닛(500)은 연산기(800)에 입력 데이터를 전송한다.
단계 1250에서, 연산기(800)는 입력 데이터에 대한 연산을 수행한다.
단계 1260에서, 매크로 명령어 처리 유닛(500)은 마지막 연산을 수행했는지를 판단한다. 다시 말해서, 매크로 명령어 처리 유닛(500)은 매크로 명령어에 포함된 복수의 명령어들을 모두 처리하였는지를 판단한다. 만약, 마지막 연산이 수행되었으면 단계 1270으로 진행하고, 그렇지 않으면 단계 1240으로 진행한다.
단계 1270에서, 레지스터 파일(600)은 매크로 명령어 처리 유닛(500) 또는 연산기(800)로부터 출력되는 출력 데이터를 저장한다.
단계 1280에서, 연산기(800)는 연산을 수행한다. 복수 명령어가 아니므로, 명령어는 연산기(800)에 할당되고, 연산기(800)가 입력 데이터에 대한 연산을 수행하여 결과 데이터를 레지스터 파일(600)로 출력한다.
일 실시 예에 따른 프로세서(1000)는 연산기(800)들을 사용하여 매크로 명령어를 처리할 수 있다.
일 실시 예에 따른 매크로 명령어 처리 유닛(500)들은 프로세서(1000)에 포함된 연산기(800)들을 공유하여 사용할 수 있다.
본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 실시 예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다.
본 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.
1000: 프로세서
110: 제1 명령어 처리 유닛
120: 제2 명령어 처리 유닛
130: 제3 명령어 처리 유닛
140: 제4 명령어 처리 유닛
210: 제1 매크로 명령어 처리 유닛
220: 제2 매크로 명령어 처리 유닛
300: 명령어 분배기
110: 제1 명령어 처리 유닛
120: 제2 명령어 처리 유닛
130: 제3 명령어 처리 유닛
140: 제4 명령어 처리 유닛
210: 제1 매크로 명령어 처리 유닛
220: 제2 매크로 명령어 처리 유닛
300: 명령어 분배기
Claims (13)
- 적어도 하나의 연산기들; 및
상기 연산기들을 공유하는 적어도 하나의 매크로 명령어 처리 유닛을 포함하고,
상기 매크로 명령어 처리 유닛은 상기 연산기들을 사용하여 입력 데이터에 대한 매크로 명령어를 실행하여 결과 데이터를 출력하는 것을 특징으로 하는 프로세서. - 제 1 항에 있어서, 상기 매크로 명령어 처리 유닛은,
상기 연산기들 중에서 매크로 명령어에 포함된 연산을 상기 연산기들에서 수행하도록 상기 연산기들을 제어하는 것을 특징으로 하는 프로세서. - 제 1 항에 있어서, 상기 매크로 명령어 처리 유닛은,
상기 연산기들의 스케줄을 관리하고, 상기 연산기들에 입력 데이터 및 제어 신호를 출력하는 스케줄러; 및
매크로 명령어를 실행하기 위해 상기 스케줄러를 제어하고, 상기 스케줄러로부터 결과 데이터를 수신하는 제어기를 포함하는 것을 특징으로 하는 프로세서. - 제 3 항에 있어서, 상기 제어기는,
어드레스 연산기를 제어하는 어드레스 연산 제어기; 및
연산기를 제어하는 연산 제어기를 포함하는 것을 특징으로 하는 프로세서. - 제 1 항에 있어서,
특정 명령어를 처리하는 적어도 하나의 명령어 처리 유닛을 더 포함하고,
상기 매크로 명령어 처리 유닛은 상기 연산기들 또는 상기 명령어 처리 유닛을 사용하여 매크로 명령어를 실행하는 것을 특징으로 하는 프로세서. - 제 1 항에 있어서,
명령어 디코더로부터 수신된 명령어 또는 매크로 명령어를 상기 연산기들 또는 상기 매크로 명령어 처리 유닛에 분배하는 명령어 분배 유닛을 더 포함하는 프로세서. - 제 6 항에 있어서,
상기 명령어 분배 유닛은 명령어 디코더로부터 수신된 명령어가 단일 명령어인 경우 상기 연산기들 중 어느 하나에 할당하고, 상기 명령어 디코더로부터 수신된 명령어가 복수 명령어인 경우 상기 매크로 명령어 처리 유닛에 할당하는 것을 특징으로 하는 프로세서. - 제 1 항에 있어서,
디코더로부터 수신된 명령어가 루프 연산인 경우, 루프 연산을 제어하는 루프 제어기를 더 포함하는 것을 특징으로 하는 프로세서. - 매크로 명령어 처리 유닛들 중 어느 하나에 매크로 명령어를 할당하는 단계;
상기 매크로 명령어 처리 유닛들이 공유하는 연산기들을 이용하여 매크로 명령어를 처리하는 단계; 및
결과 데이터를 출력하는 단계를 포함하는 매크로 명령어 처리 방법. - 제 9 항에 있어서, 상기 매크로 명령어를 처리하는 단계는,
상기 매크로 명령어 처리 유닛이 연산기들에 입력 데이터를 전송하는 단계;
상기 연산기들이 상기 입력 데이터에 대한 연산을 수행하는 단계; 및
상기 연산기들이 상기 연산의 결과를 상기 매크로 명령어 처리 유닛에 출력하는 단계를 포함하는 매크로 명령어 처리 방법. - 제 9 항에 있어서,
명령어 디코더로부터 수신된 명령어가 일반 명령어인지 매크로 명령어인지를 판단하는 단계를 더 포함하고,
상기 할당하는 단계는 상기 판단 결과 상기 명령어 디코더로부터 수신된 명령어가 매크로 명령어인 경우 상기 매크로 명령어 처리 유닛에 매크로 명령어를 할당하는 것을 특징으로 하는 매크로 명령어 처리 방법. - 제 11 항에 있어서,
상기 할당하는 단계는 상기 판단 결과 상기 명령어 디코더로부터 수신된 명령어가 단일 명령어인 경우 상기 연산기들 중 어느 하나에 단일 명령어를 할당하는 것을 특징으로 하는 매크로 명령어 처리 방법. - 제9항 내지 제12항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140177829A KR102270791B1 (ko) | 2014-12-10 | 2014-12-10 | 매크로 명령어를 처리하는 방법 및 장치 |
US15/535,304 US10564971B2 (en) | 2014-12-10 | 2015-10-15 | Method and apparatus for processing macro instruction using one or more shared operators |
PCT/KR2015/010910 WO2016093484A1 (ko) | 2014-12-10 | 2015-10-15 | 매크로 명령어를 처리하는 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140177829A KR102270791B1 (ko) | 2014-12-10 | 2014-12-10 | 매크로 명령어를 처리하는 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160070630A true KR20160070630A (ko) | 2016-06-20 |
KR102270791B1 KR102270791B1 (ko) | 2021-06-29 |
Family
ID=56107629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140177829A KR102270791B1 (ko) | 2014-12-10 | 2014-12-10 | 매크로 명령어를 처리하는 방법 및 장치 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10564971B2 (ko) |
KR (1) | KR102270791B1 (ko) |
WO (1) | WO2016093484A1 (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05204632A (ja) * | 1992-01-30 | 1993-08-13 | Nec Corp | マクロ命令セットプロセッサ |
KR20030074047A (ko) * | 2002-03-07 | 2003-09-19 | 가부시끼가이샤 도시바 | 멀티 프로세서 시스템 |
JP2004246609A (ja) * | 2003-02-13 | 2004-09-02 | Yaskawa Electric Corp | マイクロプロセッサ |
US20090003593A1 (en) * | 2007-06-30 | 2009-01-01 | Vinodh Gopal | Unified system architecture for elliptic-curve crytpography |
KR20130054375A (ko) * | 2010-09-24 | 2013-05-24 | 인텔 코오퍼레이션 | 명령들의 클래스 및 콘텐츠에 기초한 프로세서 전력 관리 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05108341A (ja) | 1991-10-16 | 1993-04-30 | Hitachi Ltd | マイクロプロセツサ |
JP3547482B2 (ja) * | 1994-04-15 | 2004-07-28 | 株式会社日立製作所 | 情報処理装置 |
US6230257B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US6859919B1 (en) | 1998-10-16 | 2005-02-22 | Computer Associates Think, Inc. | Object modeling tool with meta model semantic registry (rules) a meta data manager for object(s) properties an object/property interface for instance(s) of objects/properties received via object/property interface of the object factory registry |
CA2346925A1 (en) | 1998-10-16 | 2000-04-27 | Computer Associates Think, Inc. | Method and system for an extensible macro language |
US7664810B2 (en) * | 2004-05-14 | 2010-02-16 | Via Technologies, Inc. | Microprocessor apparatus and method for modular exponentiation |
WO2006107164A1 (en) | 2005-04-02 | 2006-10-12 | Samsung Electronics Co., Ltd. | Apparatus and method for delivering stream in a mobile broadcast system |
JP4761808B2 (ja) | 2005-04-11 | 2011-08-31 | 株式会社東芝 | マイクロプロセッサおよびその制御方法 |
US20070106720A1 (en) * | 2005-11-10 | 2007-05-10 | Samsung Electronics Co., Ltd. | Reconfigurable signal processor architecture using multiple complex multiply-accumulate units |
US8046565B2 (en) * | 2006-12-06 | 2011-10-25 | Kabushiki Kaisha Toshiba | Accelerator load balancing with dynamic frequency and voltage reduction |
KR101504115B1 (ko) | 2007-03-12 | 2015-03-19 | 삼성전자 주식회사 | 매크로 명령 동작 장치와 매크로 명령 입력 장치 및 방법 |
WO2009001568A1 (ja) | 2007-06-28 | 2008-12-31 | Panasonic Corporation | Av機器およびその制御方法 |
KR101202738B1 (ko) * | 2008-12-22 | 2012-11-20 | 한국전자통신연구원 | 멀티 채널 데이터 전송 장치 |
-
2014
- 2014-12-10 KR KR1020140177829A patent/KR102270791B1/ko active IP Right Grant
-
2015
- 2015-10-15 US US15/535,304 patent/US10564971B2/en active Active
- 2015-10-15 WO PCT/KR2015/010910 patent/WO2016093484A1/ko active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05204632A (ja) * | 1992-01-30 | 1993-08-13 | Nec Corp | マクロ命令セットプロセッサ |
KR20030074047A (ko) * | 2002-03-07 | 2003-09-19 | 가부시끼가이샤 도시바 | 멀티 프로세서 시스템 |
JP2004246609A (ja) * | 2003-02-13 | 2004-09-02 | Yaskawa Electric Corp | マイクロプロセッサ |
US20090003593A1 (en) * | 2007-06-30 | 2009-01-01 | Vinodh Gopal | Unified system architecture for elliptic-curve crytpography |
KR20130054375A (ko) * | 2010-09-24 | 2013-05-24 | 인텔 코오퍼레이션 | 명령들의 클래스 및 콘텐츠에 기초한 프로세서 전력 관리 |
Also Published As
Publication number | Publication date |
---|---|
WO2016093484A1 (ko) | 2016-06-16 |
US20170329604A1 (en) | 2017-11-16 |
US10564971B2 (en) | 2020-02-18 |
KR102270791B1 (ko) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2660714B1 (en) | Semiconductor device | |
US20160092231A1 (en) | Independent mapping of threads | |
CN113284038B (zh) | 用于执行计算的方法、计算设备、计算***和存储介质 | |
KR20140122835A (ko) | 프로세스 병렬 처리 장치 및 방법 | |
JP6493088B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US20200334042A1 (en) | Method and device (universal multifunction accelerator) for accelerating computations by parallel computations of middle stratum operations | |
WO2012098821A1 (en) | Multiprocessor system | |
US10754818B2 (en) | Multiprocessor device for executing vector processing commands | |
US10572969B2 (en) | Method and device for processing data | |
US10956154B2 (en) | Signal processing device and method | |
KR20160070630A (ko) | 매크로 명령어를 처리하는 방법 및 장치 | |
WO2019157743A1 (zh) | 线程处理方法和图形处理器 | |
JP6790854B2 (ja) | 処理装置 | |
CN115775199A (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
Vert et al. | Maintenance of sustainable operation of pipeline-parallel computing systems in the cloud environment | |
WO2017031961A1 (zh) | 数据处理方法和装置 | |
CN110928575B (zh) | 一种多设备同步控制***和控制方法 | |
JP2012164050A (ja) | 情報処理装置、タスク管理方法、及びプログラム | |
CN111526172A (zh) | 一种多设备管理方法和管理*** | |
JP2013222364A (ja) | 信号処理回路 | |
US8294721B2 (en) | Processor for three dimensional computer graphics | |
CN111984328B (zh) | 具有ooda循环分区机制的流式处理器 | |
KR102248978B1 (ko) | 다수 사용자의 분산 기계학습에서 평균 지연 속도 절감을 위한 자원 할당 방법 및 장치 | |
JP5813484B2 (ja) | Vliwプロセッサと命令構造と命令実行方法 | |
US20210255858A1 (en) | Computation device |
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 |