KR20130108878A - 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법 - Google Patents
루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법 Download PDFInfo
- Publication number
- KR20130108878A KR20130108878A KR1020120030695A KR20120030695A KR20130108878A KR 20130108878 A KR20130108878 A KR 20130108878A KR 1020120030695 A KR1020120030695 A KR 1020120030695A KR 20120030695 A KR20120030695 A KR 20120030695A KR 20130108878 A KR20130108878 A KR 20130108878A
- Authority
- KR
- South Korea
- Prior art keywords
- invalid
- region
- loop
- prologue
- epilogue
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000008569 process Effects 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 abstract description 4
- 238000004148 unit process Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect 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
-
- 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
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- 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/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Abstract
소프트웨어 파이프라인된 루프의 프롤로그 또는 에필로그에서 비유효 연산(invalid operation)을 처리하는 장치에 관한 것이다. 일 실시예에 따른 비유효 연산 처리 장치는 데이터의 유효 상태를 저장하는 제1 영역과 그 데이터를 저장하는 제2 영역을 포함하는 레지스터 파일 및 그 레지스터 파일로부터 입력되는 하나 이상의 입력 소스의 제1 영역 값에 기초하여 연산의 비유효(invalid) 여부를 판단하고 제1 영역의 대응값을 포함하는 데스티네이션(destination)을 출력하는 하나 이상의 기능 유닛(functional unit)을 포함할 수 있다. 본 실시예에 따르면 비유효 연산의 가딩을 위해 프리디케이트를 사용하지 않기 때문에 컴파일러의 성능을 향상시킬 수 있다.
Description
소프트웨어 파이프라인된 루프의 프롤로그 또는 에필로그에서 비유효 연산(invalid operation)을 처리하는 기술과 관련된다.
프로세서에서 소프트웨어 파이프라인(software pipeline) 방법은 수행할 소프트웨어를 단계별로 나누어 파이프라인 형태로 수행하는 방법으로서 처리 성능을 크게 높일 수 있다. 그러나, CGRA(coarse-grained reconfigurable architecture) 프로세서는 모듈로 스케쥴링(modulo scheduling)을 통해 프로그램을 스케쥴링하기 때문에 루프의 프롤로그나 에필로그에서 비유효 연산(invalid operation)이 포함될 수 있다.
일반적으로 CGRA 프로세서는 루프의 프롤로그 또는 에필로그의 비유효 연산이 프로그램 상태를 변경하는 것을 가딩(guarding)하기 위해 프리디케이트(predicate) 정보를 사용한다. 가딩이란 그 비유효 연산의 실행을 제어하는 것으로서, 그 비유효 연산이 기능 유닛에서 실제 수행되더라도 레지스터 파일에 기록되지 않도록 하는 것을 말한다. 그 프리디케이트 정보를 사용하기 위해서는 프리디케이트를 위한 CGRA 내의 라우팅 정보가 필요하다. 이때, 프리디케이트의 계산과 라우팅은 CGRA 컴파일러가 담당하는데 이는 컴파일러의 스케쥴링 과정을 매우 복잡하게 하는 원인이 되며, 복잡한 루프의 커널의 경우에는 이로 인하여 스케쥴링을 실패하는 경우도 발생하게 된다.
프로세서에서 데이터 폭(data width)을 일정 비트 확장하여 데이터의 유효 여부를 저장하고, 그 비트를 이용하여 비유효 연산을 처리함으로써 스케쥴링의 복잡성을 감소시키는 장치 및 방법이 제시된다.
일 양상에 따르면, 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 장치는, 데이터의 유효 상태를 저장하는 제1 영역과 그 데이터를 저장하는 제2 영역을 포함하는 레지스터 파일 및 레지스터 파일로부터 입력되는 하나 이상의 입력 소스의 제1 영역 값에 기초하여 연산의 비유효(invalid) 여부를 판단하고 제1 영역의 대응값을 포함하는 데스티네이션(destination)을 출력하는 하나 이상의 기능 유닛(functional unit)을 포함한다.
이때, 기능 유닛은 그 입력 소스들의 제1 영역의 값들을 'AND' 연산하여 비유효 연산 여부를 판단할 수 있다.
또한, 기능 유닛은 프리디케이트(predicate)를 더 'AND' 연산하여 비유효 연산 여부를 판단할 수 있다.
추가적인 양상에 따르면, 비유효 연산을 처리하는 장치는 데스티네이션의 제1 영역의 대응값에 기초하여 그 데스티네이션에 대한 상기 레지스터 파일로의 쓰기 요청을 처리하는 제어부를 더 포함할 수 있다.
이때, 제어부는 데스티네이션의 제1 영역의 대응값과 쓰기 허용(Write Enable, WE) 신호를 'AND' 연산하여 그 결과에 따라 쓰기 요청을 처리할 수 있다.
또한, 제어부는 리셋(reset) 요청에 따라 레지스터 파일 내의 제1 영역을 리셋할 수 있다.
이때, 제어부는 리셋 요청에 따라 VLIW(Very Long Instruction Word) 모드에서 CGRA(Coarse Grained Reconfigurable Array) 모드로 전송되는 레지스터 값은 제외하고 리셋할 수 있다.
일 양상에 따르면, 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 방법은 데이터의 유효 상태를 저장하는 제1 영역과 그 데이터를 저장하는 제2 영역을 포함하는 레지스터 파일로부터 하나 이상의 입력 소스가 하나 이상의 기능 유닛(functional unit)으로 입력되는 단계, 기능 유닛이 입력 소스의 제1 영역 값에 기초하여 연산의 비유효(invalid) 여부를 판단하는 단계 및 기능 유닛이 제1 영역의 대응값을 포함하는 데스티네이션(destination)을 출력하는 단계를 포함할 수 있다.
이때, 연산의 비유효 여부를 판단하는 단계는 입력 소스들의 제1 영역의 값들을 'AND' 연산하여 비유효 연산 여부를 판단할 수 있다.
또한, 그 연산의 비유효 여부를 판단하는 단계는 프리디케이트(predicate)를 더 'AND' 연산하여 비유효 연산 여부를 판단할 수 있다.
추가적인 양상에 따르면, 비유효 연산을 처리하는 방법은 제어부가 데스티네이션의 제1 영역의 대응값에 기초하여 그 데스티네이션에 대한 레지스터 파일로의 쓰기 요청을 처리할 수 있다.
이때, 데스티네이션의 쓰기 요청을 처리하는 단계는 데스티네이션의 제1 영역의 대응값과 쓰기 허용(Write Enable, WE) 신호를 'AND' 연산하여 그 결과에 따라 그 쓰기 요청을 처리할 수 있다.
CGRA 프로세서에서 데이터 폭(data width)을 일정 비트 확장하여 데이터의 유효 여부를 저장하고, 그 비트를 이용하여 비유효 연산을 처리하는 장치 및 방법을 제공할 수 있다.
이로 인해, 프리디케이트 계산 및 라우팅으로 인한 스케쥴링의 복잡성이 감소되어 컴파일러의 성능을 향상될 수 있으며 프로세서의 ISA-level 테스트 코드 검증과 같이 프로세서 검증에 소요되는 시간을 줄일 수 있다.
도 1은 일 실시예에 따른 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치의 블록도이다.
도 2는 일 실시예에 따른 확장된 데이터와 그 데이터를 지원하기 위한 레지스터 파일의 예이다.
도 3은 프로세서의 프리디케이트를 통해 가딩하는 기능 유닛(functional unit)의 구조이다.
도 4는 일 실시예에 따른 확장된 데이터를 지원하기 위한 기능 유닛의 예이다.
도 5는 리커런스(recurrence) MII(minimum initiation interval)의 예이다.
도 6은 일 실시예에 따른 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 방법의 흐름도이다.
도 2는 일 실시예에 따른 확장된 데이터와 그 데이터를 지원하기 위한 레지스터 파일의 예이다.
도 3은 프로세서의 프리디케이트를 통해 가딩하는 기능 유닛(functional unit)의 구조이다.
도 4는 일 실시예에 따른 확장된 데이터를 지원하기 위한 기능 유닛의 예이다.
도 5는 리커런스(recurrence) MII(minimum initiation interval)의 예이다.
도 6은 일 실시예에 따른 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 방법의 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 따른 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법을 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 일 실시예에 따른 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치의 블록도이다. 본 실시예에 따른 비유효 연산 처리 장치(100)는 CGRA(coarse-grained reconfigurable architecture) 프로세서의 일 구성일 수 있다. 즉, CGRA 프로세서는 다수의 기능 유닛(functional unit)들로 구성될 수 있으며, 각 기능 유닛들은 내부 연결 네트워크로 연결되어 있다. 또한, 다수의 레지스터 파일과 래치(latch)를 포함할 수 있다.
CGRA 스케쥴러는 루프의 커널을 매핑(mapping)하기 위해 소프트웨어 파이프라이닝 기법을 사용한다. CGRA 스케쥴러는 높은 효율(utilization)을 얻기 위해 모듈로 스케쥴링(modulo scheduling) 기법을 이용하기 때문에 프롤로그 또는 에필로그에서는 비유효 연산(invalid operation)이 포함될 수 있다. 일반적으로, 프리디케이트를 이용하여 그 비유효 연산을 가딩(guarding)하는 방식이 이용되나, 본 실시예에서는 이하에서 자세히 설명하는 바와 같이 컴파일러의 성능 향상을 위하여 데이터의 확장 개념을 통한 가딩 방식이 제시된다.
도 2는 일 실시예에 따른 확장된 데이터와 그 데이터를 지원하기 위한 레지스터 파일의 예로서, (a)는 데이터(data)의 유효 상태(예: 유효-true, 비유효-false)를 표현하는 유효 상태 비트(v)(예: 1 비트)와 그 데이터를 표현하는 데이터 비트(data)(예: 16, 32, 64, 128)로 이루어진 확장된 데이터의 개념을 나타낸다. (b)는 그 확장된 데이터를 지원하기 위한 레지스터 파일(110)의 구조를 나타낸 것이다.
도 1과 도 2를 참조하여 본 실시예에 따른 비유효 연산 처리 장치(100)를 자세히 설명한다. 비유효 연산 처리 장치(100)는 레지스터 파일(110) 및 기능 유닛(120)을 포함하며, 추가적으로 제어부(130)를 더 포함할 수 있다. 레지스터 파일(110)은 도 2의 (a)에 예시된 확장된 데이터 개념을 지원하기 위해 도 2의 (b)에 도시된 바와 같이 데이터의 유효 상태를 저장하는 제1 영역(111)과 그 데이터가 저장되는 제2 영역(112)을 포함할 수 있다.
한편, 기능 유닛(120)은 하나 이상의 입력 소스(in_src)의 제1 영역 값에 기초하여 연산(operation)의 비유효(invalid) 여부를 판단한다. 이때, 입력 소스(in_src)는 레지스터 파일(110) 또는 다른 기능 유닛(120)으로부터 내부 연결 네트워크를 통해 입력받을 수 있다. 기능 유닛(120)은 확장된 데이터 개념을 지원할 수 있다. 즉, 일반적인 프리디케이트를 통한 루프의 프롤로그 또는 에필로그의 비유효 연산을 가딩하는 방식뿐만 아니라, 하나 이상의 입력 소스들의 데이터 유효 여부가 표현된 제1 영역의 값들을 이용하여 비유효 연산 여부를 판단하고 가딩 처리할 수 있다.
또한, 기능 유닛(120)은 판단된 연산 비유효 여부에 따라 제1 영역에 대응되는 값을 생성하고, 그 연산의 수행 결과를 포함하여 데스티네이션(out_dst)를 출력한다. 판단 결과 그 연산이 비유효한 연산이라면 제1 영역에 대응되는 값인 그 연산 결과의 유효 여부를 'false'로 설정할 수 있다. 반면에 그 연산이 유효한 연산이라면 제1 영역의 대응값은 'true'로 설정할 수 있다. 출력된 데스티네이션(out_dst)는 레지스터 파일이나 다른 기능 유닛으로 전송된다.
제어부(130)는 레지스터 파일(110)로부터 데이터를 읽는 읽기 요청, 레지스터 파일(110)로 연산 결과를 기록하는 쓰기 요청 등을 처리한다. 제어부(130)는 읽기 요청에 따라 도 2의 (b)에 도시된 바와 같이 레지스터 파일(110)로부터 제1 영역(111)의 데이터 유효 상태 값에 상관없이 그 상태 그대로 데이터를 읽는다.
또한, 쓰기 요청에 따라 기능 유닛(120)에서 출력된 데스티네이션(out_dst)을 레지스터 파일(110)에 기록한다. 이때, 제어부(130)는 그 데스티네이션(out_dst)의 제1 영역의 대응값 즉, 연산 결과 데이터의 유효 상태를 나타내는 비트 값에 기초하여 쓰기 여부를 제어한다. 예컨대, 도 2에 도시된 바와 같이 제어부(130)는 데스티네이션(out_dst)의 제1 영역의 대응값을 쓰기 허용(Write Enable, WE) 신호와 'AND' 연산하여 그 결과가 'true'인 경우에는 레지스터 파일(110)에 그 데스티네이션(out_dst)을 기록한다. 이때, 제1 영역의 대응값은 레지스터 파일의 제1 영역에 기록되며, 제2 영역의 대응값은 레지스터 파일(110)의 제2 영역에 기록된다. 반면에, 그 결과가 'false'인 경우에는 레지스터 파일(110)에 기록하지 않는다.
또한, 제어부(130)는 CGRA의 루프가 시작됨과 동시에 발생되는 리셋(reset) 요청에 따라 레지스터 파일(110) 내의 제1 영역의 데이터 유효 상태 비트를 리셋할 수 있다. 이때, VLIW(Very Long Instruction Word) 모드에서 CGRA(Coarse Grained Reconfigurable Array) 모드로 전송되는 레지스터 값은 제외하고 리셋할 수 있다.
도 3은 프로세서의 프리디케이트를 통해 비유효 연산을 가딩하는 기능 유닛(functional unit)의 구조이다. 도 4는 일 실시예에 따른 확장된 데이터를 지원하기 위한 기능 유닛의 예이다. 도 3과 도 4를 참조하여 기능 유닛(120)에서 확장된 데이터 개념을 이용하여 비유효 연산을 가딩하는 방법을 설명한다.
도 3을 참조하면 기능 유닛은 2개의 입력 소스(Input 1, 2)에 대해 비유효 연산을 판단하고 가딩하기 위해 별도의 프리디케이트(Predicate)를 생성하여 그 프리디케이트 정보(Predicate Input)가 라우팅 되어야 하며, 그 프리디케이트 정보를 저장하기 위한 별도의 레지스터 파일이 필요하다. 또한, 구성 메모리(Configuration Memory)의 비유효한 읽기(read)/쓰기(write) 연산 또한 가딩된다. 그러나, 도 3에 도시된 바와 같이 프리디케이트를 생성하고 그 정보를 라우팅하기 위해서는 컴파일러에서 담당하게 되므로 컴파일러의 스케쥴링 과정이 매우 복잡하게 되어 컴파일 성능이 매우 떨어질 수 있다.
도 4를 참조하면, 기능 유닛(120)은 데이터의 유효 상태를 표현한 비트인 제1 영역의 값과 데이터가 표현된 제2 영역의 값을 포함하는 n개의 입력 소스(in_src 1 ~ in_src n)를 입력받는다. 이때, 입력 소스는 레지스터 파일(110) 또는 다른 기능 유닛(120)에서 입력받는다.
기능 유닛(120)은 입력된 n개의 입력 소스(in_scr 1 ~ in_src n)들의 제1 영역 값들을 'AND' 연산하여 'true'인 경우에는 유효한 연산으로 판단하고, 'false'인 경우에는 비유효 연산으로 판단한다. 즉, 어느 하나의 입력 소스라도 비유효한 데이터를 포함한 경우에는 비유효한 연산으로 판단한다.
한편, 추가적인 양상에 따르면, 프리디케이트 정보를 필요에 따라 독립적으로 생성하여 그 프리디케이트 정보와 입력 소스(in_src 1 ~ in_src2)들의 제1 영역의 데이터 유효 상태 비트와 'AND' 연산을 수행하여 비유효 연산 여부를 판단할 수 있다.
기능 유닛(120)은 그 연산을 수행하고, 그 수행 결과 데이터와 그 비유효 연산 여부 판단 결과를 포함한 데스티네이션(out_dst)를 출력한다. 즉, 데스티네이션의(out_dst) 제1 영역에는 그 비유효 연산 여부 판단 결과 유효하면 'true', 비유효하면 'false'가 저장되며, 제2 영역에는 그 연산 수행 결과가 저장된다.
도 5는 기능 유닛에서 리커런스(recurrence) MII(minimum initiation interval)를 나타낸 예이다. 도 5를 참조하면, 프리디케이트 라우팅으로 인한 컴파일러의 오버헤드를 알 수 있다. 즉, 프리디케이트를 통한 가딩 방식은 기능 유닛, 출력 래치, 레지스터 파일, OS 래치, 입력 래치 및 기능 유닛 순으로 수행되어, 총 사이클은 5(연산 지연(operation latency) 2 + 래치 지연(latch delay) 3)이다. 반면에, 확장된 데이터 개념을 이용한 방식은 기능 유닛, 레지스터 파일, OS 래치, 입력 래치, 기능 유닛 순으로 수행되고, 총 사이클은 3(연산 지연 1 + 래치 지연 2)이다.
이를 통해, 컴파일러가 프리디케이트를 라우팅하는데 오버헤드가 많음을 알 수 있다. 따라서, 프리디케이트를 사용하지 않는 것에 의해 컴파일러의 성능이 크게 향상될 수 있음을 알 수 있다.
도 6은 일 실시예에 따른 소프트웨어 파이프라인된 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 방법의 흐름도이다.
도 6을 참조하여 비유효 연산을 처리하는 방법을 설명하면, 먼저, 하나 이상의 입력 소스(in_src 1 ~ in_scr n)가 기능 유닛(120)으로 입력된다(단계 310). 제어부(130)가 읽기 요청에 따라 레지스터 파일(110)로 부터 읽어 기능 유닛(120)에 입력할 수 있다. 레지스터 파일은 도 2의 (b)에 도시된 바와 같이 데이터 유효 상태 값이 저장되는 제1 영역(110)과 그 데이터 값이 저장되는 제 영역(120)을 포함할 수 있다. 제어부(130)는 읽기 요청에 따라 데이터를 읽을 때, 그 데이터의 유효 상태 즉, 제1 영역의 값은 고려하지 않고 그 상태 그대로 읽어 기능 유닛(120)에 입력할 수 있다.
그 다음, 기능 유닛(120)이 하나 이상의 입력 소스(in_src 1 ~ in_scr n)의 제1 영역값에 기초하여 연산의 비유효 여부를 판단한다(단계 320). 즉, 기능 유닛(120)은 입력된 n개의 입력 소스(in_scr 1 ~ in_src n)들의 제1 영역 값들을 'AND' 연산하여 'true'인 경우에는 유효한 연산으로 판단하고, 'false'인 경우에는 비유효 연산으로 판단할 수 있다. 한편, 필요에 따라 프리디케이트 정보를 독립적으로 생성하여 그 프리디케이트 정보와 입력 소스(in_src 1 ~ in_src2)들의 제1 영역의 데이터 유효 상태 비트와 'AND' 연산을 수행하여 비유효 연산 여부를 판단할 수 있다.
그 다음, 기능 유닛(120)은 그 연산을 수행하고, 그 수행 결과 데이터와 그 비유효 연산 여부 판단 결과를 포함한 데스티네이션(out_dst)을 출력한다(단계 330). 기능 유닛(120)은 데스티네이션의(out_dst) 제1 영역의 대응값으로 그 비유효 연산 여부 판단 결과 유효하면 'true', 비유효하면 'false'를 생성하며, 제2 영역에는 그 연산 수행 결과를 포함한다.
마지막으로, 제어부(130)는 그 데스티네이션(out_dst)의 제1 영역의 대응값에 기초하여 레지스터 파일로 그 데스티네이션(out_dst)을 기록할지를 결정하여 그 결정에 따라 쓰기 요청을 처리할 수 있다(단계 340). 예컨대, 도 2를 참조하면 제어부(130)는 데스티네이션(out_dst)의 제1 영역의 대응값을 쓰기 허용(Write Enable, WE) 신호와 'AND' 연산하여 그 결과가 'true'인 경우에는 레지스터 파일(110)에 그 데스티네이션(out_dst)을 기록한다. 이때, 제1 영역의 대응값을 레지스터 파일의 제1 영역에 기록되며, 제2 영역의 대응값은 레지스터 파일(110)의 제2 영역에 기록된다. 반면에, 그 결과가 'false'인 경우에는 레지스터 파일(110)에 기록하지 않는다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 비유효 연산 처리 장치 110: 레지스터 파일
111: 제1 영역 112: 제2 영역
120: 기능 유닛 130: 제어부
111: 제1 영역 112: 제2 영역
120: 기능 유닛 130: 제어부
Claims (12)
- 데이터의 유효 상태를 저장하는 제1 영역과 그 데이터를 저장하는 제2 영역을 포함하는 레지스터 파일; 및
상기 레지스터 파일로부터 입력되는 하나 이상의 입력 소스의 제1 영역 값에 기초하여 연산의 비유효(invalid) 여부를 판단하고 상기 제1 영역의 대응값을 포함하는 데스티네이션(destination)을 출력하는 하나 이상의 기능 유닛(functional unit);을 포함하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 장치. - 제1항에 있어서, 상기 기능 유닛은,
상기 입력 소스들의 제1 영역의 값들을 'AND' 연산하여 상기 비유효 연산 여부를 판단하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 장치. - 제2항에 있어서, 상기 기능 유닛은,
프리디케이트(predicate)를 더 'AND' 연산하여 상기 비유효 연산 여부를 판단하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 장치. - 제1항에 있어서,
상기 데스티네이션의 제1 영역의 대응값에 기초하여 그 데스티네이션에 대한 상기 레지스터 파일로의 쓰기 요청을 처리하는 제어부;를 더 포함하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 장치. - 제4항에 있어서, 상기 제어부는,
상기 데스티네이션의 제1 영역의 대응값과 쓰기 허용(Write Enable, WE) 신호를 'AND' 연산하여 그 결과에 따라 상기 쓰기 요청을 처리하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 장치. - 제4항에 있어서, 상기 제어부는,
리셋(reset) 요청에 따라 상기 레지스터 파일 내의 제1 영역을 리셋하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 장치. - 제6항에 있어서, 상기 제어부는,
상기 리셋 요청에 따라 VLIW(Very Long Instruction Word) 모드에서 CGRA(Coarse Grained Reconfigurable Array) 모드로 전송되는 레지스터 값은 제외하고 리셋하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 장치. - 데이터의 유효 상태를 저장하는 제1 영역과 그 데이터를 저장하는 제2 영역을 포함하는 레지스터 파일로부터 하나 이상의 입력 소스가 하나 이상의 기능 유닛(functional unit)으로 입력되는 단계;
상기 기능 유닛이 상기 입력 소스의 제1 영역 값에 기초하여 연산의 비유효(invalid) 여부를 판단하는 단계; 및
상기 기능 유닛이 상기 제1 영역의 대응값을 포함하는 데스티네이션(destination)을 출력하는 단계;를 포함하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 방법. - 제1항에 있어서, 상기 연산의 비유효 여부를 판단하는 단계는,
상기 입력 소스들의 제1 영역의 값들을 'AND' 연산하여 상기 비유효 연산 여부를 판단하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 방법. - 제9항에 있어서, 상기 연산의 비유효 여부를 판단하는 단계는,
프리디케이트(predicate)를 더 'AND' 연산하여 상기 비유효 연산 여부를 판단하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 방법. - 제8항에 있어서,
제어부가 상기 데스티네이션의 제1 영역의 대응값에 기초하여 그 데스티네이션에 대한 상기 레지스터 파일로의 쓰기 요청을 처리하는 단계;를 더 포함하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 방법. - 제11항에 있어서, 상기 데스티네이션의 쓰기 요청을 처리하는 단계는,
상기 데스티네이션의 제1 영역의 대응값과 쓰기 허용(Write Enable, WE) 신호를 'AND' 연산하여 그 결과에 따라 상기 쓰기 요청을 처리하는 루프의 프롤로그 또는 에필로그에서 비유효 연산을 처리하는 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120030695A KR101910934B1 (ko) | 2012-03-26 | 2012-03-26 | 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법 |
US13/832,291 US9411582B2 (en) | 2012-03-26 | 2013-03-15 | Apparatus and method for processing invalid operation in prologue or epilogue of loop |
JP2013060774A JP6254352B2 (ja) | 2012-03-26 | 2013-03-22 | ループのプロローグまたはエピローグの無効演算を処理する装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120030695A KR101910934B1 (ko) | 2012-03-26 | 2012-03-26 | 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130108878A true KR20130108878A (ko) | 2013-10-07 |
KR101910934B1 KR101910934B1 (ko) | 2018-12-28 |
Family
ID=49213456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120030695A KR101910934B1 (ko) | 2012-03-26 | 2012-03-26 | 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9411582B2 (ko) |
JP (1) | JP6254352B2 (ko) |
KR (1) | KR101910934B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11507493B1 (en) * | 2021-08-18 | 2022-11-22 | Micron Technology, Inc. | Debugging dataflow computer architectures |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3006204B2 (ja) * | 1991-09-13 | 2000-02-07 | 松下電器産業株式会社 | 情報処理装置 |
US5560003A (en) | 1992-12-21 | 1996-09-24 | Iowa State University Research Foundation, Inc. | System and hardware module for incremental real time garbage collection and memory management |
JPH1185512A (ja) | 1997-09-03 | 1999-03-30 | Fujitsu Ltd | 命令圧縮格納および命令復元機能を有するデータ処理装置 |
KR100337149B1 (ko) * | 2000-07-05 | 2002-05-18 | 권 기 홍 | 프로그램 테스트 및 디버깅이 용이한 중앙처리장치 |
JP2003108387A (ja) * | 2001-09-27 | 2003-04-11 | Toshiba Corp | ソフトウエア・パイプライニング処理方法及びソフトウエア・パイプライニング処理装置 |
US6925550B2 (en) * | 2002-01-02 | 2005-08-02 | Intel Corporation | Speculative scheduling of instructions with source operand validity bit and rescheduling upon carried over destination operand invalid bit detection |
US7281242B2 (en) | 2002-01-18 | 2007-10-09 | Bea Systems, Inc. | Flexible and extensible Java bytecode instrumentation system |
US6986131B2 (en) | 2002-06-18 | 2006-01-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for efficient code generation for modulo scheduled uncounted loops |
US7415601B2 (en) * | 2002-06-28 | 2008-08-19 | Motorola, Inc. | Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters |
US7269719B2 (en) * | 2002-10-30 | 2007-09-11 | Stmicroelectronics, Inc. | Predicated execution using operand predicates |
GB0605349D0 (en) * | 2006-03-17 | 2006-04-26 | Imec Inter Uni Micro Electr | Reconfigurable multi-processing coarse-grain array |
US8645955B2 (en) * | 2006-06-12 | 2014-02-04 | Samsung Electronics Co., Ltd. | Multitasking method and apparatus for reconfigurable array |
KR101581882B1 (ko) * | 2009-04-20 | 2015-12-31 | 삼성전자주식회사 | 재구성 가능한 프로세서 및 그 재구성 방법 |
KR101636377B1 (ko) * | 2009-10-23 | 2016-07-06 | 삼성전자주식회사 | 재구성 프로세서, 재구성 제어 장치 및 방법, 그리고, 스레드 모델링 방법 |
-
2012
- 2012-03-26 KR KR1020120030695A patent/KR101910934B1/ko active IP Right Grant
-
2013
- 2013-03-15 US US13/832,291 patent/US9411582B2/en active Active
- 2013-03-22 JP JP2013060774A patent/JP6254352B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US20130254517A1 (en) | 2013-09-26 |
JP6254352B2 (ja) | 2017-12-27 |
JP2013200873A (ja) | 2013-10-03 |
KR101910934B1 (ko) | 2018-12-28 |
US9411582B2 (en) | 2016-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8214831B2 (en) | Runtime dependence-aware scheduling using assist thread | |
JP6159825B2 (ja) | ハードウェアポインタを使用したsimdコア内での分岐ブランチに対するソリューション | |
US8627043B2 (en) | Data parallel function call for determining if called routine is data parallel | |
EP2951682B1 (en) | Hardware and software solutions to divergent branches in a parallel pipeline | |
KR102013582B1 (ko) | 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법 | |
KR20110106717A (ko) | 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법 | |
US9921838B2 (en) | System and method for managing static divergence in a SIMD computing architecture | |
KR102161055B1 (ko) | 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치 | |
US20140013312A1 (en) | Source level debugging apparatus and method for a reconfigurable processor | |
KR20130108878A (ko) | 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법 | |
Engelhardt et al. | An integrated hardware-software approach to task graph management | |
KR20150051083A (ko) | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 | |
KR101949417B1 (ko) | 프로세서, 명령어 생성 장치 및 방법 | |
Kroening et al. | Proving the Correctness of Pipelined Micro-Architectures. | |
JP2002318689A (ja) | 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法 | |
JP2004287919A (ja) | 演算装置及び制御装置及び演算処理装置及び演算方法及び演算プログラム | |
KR101962248B1 (ko) | 재구성 가능 프로세서의 검증 지원 장치 및 방법 | |
KR20150051114A (ko) | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 | |
KR20140032796A (ko) | 재구성 가능한 프로세서의 검증 방법 | |
KR20150051116A (ko) | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 | |
KR20150051115A (ko) | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 | |
JP2005267024A (ja) | 並列処理装置、方法、およびプログラム | |
JPH05241864A (ja) | コンピュータ制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |