KR101965074B1 - 그래픽 처리 프로세서를 위한 레지스터 제어 장치 및 방법과 이에 관한 기록매체 - Google Patents
그래픽 처리 프로세서를 위한 레지스터 제어 장치 및 방법과 이에 관한 기록매체 Download PDFInfo
- Publication number
- KR101965074B1 KR101965074B1 KR1020170152853A KR20170152853A KR101965074B1 KR 101965074 B1 KR101965074 B1 KR 101965074B1 KR 1020170152853 A KR1020170152853 A KR 1020170152853A KR 20170152853 A KR20170152853 A KR 20170152853A KR 101965074 B1 KR101965074 B1 KR 101965074B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- reuse
- input operation
- result value
- register
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Executing Machine-Instructions (AREA)
Abstract
그래픽 처리 프로세서를 위한 레지스터 제어 장치 및 방법과 이에 관한 기록매체가 개시된다. 개시된 장치는 실행된 연산 별로 연산자와 피연산자 및 결과값의 데이터가 저장된 레지스터의 물리적 주소가 저장되는 재사용 버퍼; 입력된 연산과 동일한 연산이 상기 재사용 버퍼에 존재하면, 상기 입력된 연산과 동일한 연산의 결과값 데이터를 상기 입력된 연산의 결과값 데이터로 재사용 하기로 결정하는 연산 재사용부; 상기 입력된 연산과 동일한 연산이 상기 재사용 버퍼에 존재하지 않고, 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 동일한 데이터가 레지스터에 존재하면, 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 동일한 데이터를 상기 입력된 연산의 결과값 데이터로 재사용 하기로 결정하는 결과값 재사용부; 및 상기 연산 재사용부 및 결과값 재사용부에서 재사용하기로 결정된 결과값 데이터가 저장된 레지스터의 물리적 주소가 각 연산별로 기록되는 리네임 테이블을 포함하는 것을 특징으로 한다. 개시된 장치에 따르면, 레지스터 주소를 재사용하여 보다 효율적으로 레지스터를 사용할 수 있는 장점이 있다.
Description
본 발명은 레지스터 제어 장치 및 방법과 이에 관한 기록매체에 관한 것으로서, 보다 상세하게는 그래픽 처리 프로세서를 위한 레지스터 제어 장치 및 방법과 이에 관한 기록매체에 관한 것이다.
그래픽 처리 프로세서(GPU, Graphics Processing Unit)는 본디 그래픽스 처리를 실시간으로 수행하기 위하여 수백 개의 코어로 구성되어있다. 이러한 매니코어 구조는 병렬 컴퓨팅 기법을 이용하여 강력한 연산 성능을 발휘할 수 있다. 일례로, NVIDIA사의 최신 GPU인 Titan X의 경우, 3584개의 연산기를 사용하여 single precision 연산에서 11,000 GFLOPS(Giga FLoting point Operations per Second), double precision 연산에서 343 GFLOPS의 성능을 보인다.
현대의 GPU는 많은 양의 연산 연산기를 효과적으로 활용하기 위해 벡터 프로세서와 유사한 SIMT(Single instruction, multiple thread) 구조로 되어있다. 프로그램은 일반적인 멀티스레드로 작성되지만, 하드웨어 수준에서는 여러 스레드를 모아 벡터 연산의 형태로 수행한다. 이러한 GPU의 벡터 연산 구조를 종래의 벡터 프로세서와 구별하기 위하여 GPU는 여러 스레드를 모아 워프(Warp) 라는 명령으로 부른다. 일례로, NVIDIA GPU의 경우 하나의 Warp는 32개의 스레드가 모여서 구성되며, 하나의 레지스터가 32비트의 데이터 폭을 가진 경우, 하나의 워프 레지스터는 32의 제곱수인 1024비트의 벡터 레지스터가 된다. 따라서 GPU에서 하나의 워프 명령어에 대한 레지스터는 1024비트의 데이터 폭을 가진다.
GPU는 각 데이터 값을 저장하는 레지스터를 수천개 이상 가지고 있다. 따라서, 연산이 수행될 때마다 워프 명령어에 대한 연산 결과를 레지스터에 기록하는 것은 상당히 큰 에너지를 소모하게 되며, 연산 자체만으로도 큰 에너지가 소모되므로 동일한 연산을 반복 수행하게 될 경우 비효율적인 에너지 소모가 발생한다.
상기한 바와 같은 종래기술의 문제점을 해결하기 위해, 본 발명은 레지스터와 명령어를 재사용하여 보다 효율적인 그래픽 처리 프로세서를 위한 레지스터 제어 장치 및 방법과 이에 관한 기록매체를 제공한다.
상기한 목적을 달성하기 위해 본 발명의 바람직한 일 실시예에 따르면, 실행된 연산 별로 연산자와 피연산자 및 결과값의 데이터가 저장된 레지스터의 물리적 주소가 저장되는 재사용 버퍼; 입력된 연산과 동일한 연산이 상기 재사용 버퍼에 존재하면, 상기 입력된 연산과 동일한 연산의 결과값 데이터를 상기 입력된 연산의 결과값 데이터로 재사용 하기로 결정하는 연산 재사용부; 상기 입력된 연산과 동일한 연산이 상기 재사용 버퍼에 존재하지 않고, 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 동일한 데이터가 레지스터에 존재하면, 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 동일한 데이터를 상기 입력된 연산의 결과값 데이터로 재사용 하기로 결정하는 결과값 재사용부; 및 상기 연산 재사용부 및 결과값 재사용부에서 재사용하기로 결정된 결과값 데이터가 저장된 레지스터의 물리적 주소가 각 연산별로 기록되는 리네임 테이블을 포함하는 것을 특징으로 하는 그래픽 처리 프로세서를 위한 레지스터 제어 장치가 제공된다.
각 데이터의 해시값을 생성하는 해시값 생성부; 및 상기 레지스터에 저장된 데이터들의 해시값이 물리적 주소 별로 저장되는 해시 버퍼를 더 포함하되, 상기 결과값 재사용부는 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 해시값이 동일한 데이터들을 추출하고, 상기 추출된 데이터들과 상기 입력된 연산을 수행하여 산출된 결과값 데이터의 실제값을 비교하여 동일한 데이터인지 판단하는 것을 특징으로 한다.
상기 연산 재사용부는, 상기 입력된 연산과 연산자 및 피연산자는 동일하되 연산 순서가 상이한 연산을 상기 입력된 연산과 동일한 연산으로 판단할지 여부를 각 연산자의 연산 규칙에 기초하여 결정하는 것을 특징으로 한다.
상기 해시값 생성부는 임의의 연산이 수행되면 상기 수행된 연산의 결과값 데이터의 해시값을 생성하는 것을 특징으로 한다.
상기 모든 연산의 결과값 데이터의 사이즈는 1024비트이고, 상기 모든 해시값의 사이즈는 32비트이며, 상기 모든 레지스터의 물리적 주소의 사이즈는 10비트인 것을 특징으로 한다.
또한, 본 발명의 다른 실시예에 따르면, (a) 입력된 연산과 동일한 연산이 재사용 버퍼에 존재하면, 상기 입력된 연산과 동일한 연산의 결과값 데이터를 상기 입력된 연산의 결과값 데이터로 재사용 하기로 결정하는 단계; (b) 상기 입력된 연산과 동일한 연산이 상기 재사용 버퍼에 존재하지 않고, 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 동일한 데이터가 레지스터에 존재하면, 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 동일한 데이터를 상기 입력된 연산의 결과값 데이터로 재사용 하기로 결정하는 단계; 및 (c) 상기 (a)단계 또는 (b)단계에서 재사용하기로 결정된 결과값 데이터를 리네임 테이블에 기록하는 단계를 포함하되, 상기 재사용 버퍼에는 실행된 연산 별로 연산자와 피연산자 및 결과값의 데이터가 저장된 레지스터의 물리적 주소가 저장되어 있고, 상기 리네임 테이블에는 재사용된 결과값 데이터가 저장된 레지스터의 물리적 주소들이 각 연산 별로 저장되는 것을 특징으로 하는 그래픽 처리 프로세서를 위한 레지스터 제어 방법이 제공된다.
상기 (b)단계는, (b1) 상기 입력된 연산을 수행하여 산출된 결과값 데이터의 해시값을 생성하는 단계; (b2) 해시 버퍼에서 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 해시값이 동일한 데이터들을 추출하는 단계; 및 (b3) 상기 추출된 데이터들과 상기 입력된 연산을 수행하여 산출된 결과값 데이터의 실제값을 비교하여 동일한 데이터인지 판단하는 단계를 포함하며, 상기 해시 버퍼에는 상기 레지스터에 저장된 데이터들의 해시값이 물리적 주소별로 저장되어 있는 것을 특징으로 한다.
상기 (a)단계는, 상기 입력된 연산과 연산자 및 피연산자는 동일하되 연산 순서가 상이한 연산을 상기 입력된 연산과 동일한 연산으로 판단할지 여부를 각 연산자의 연산 규칙에 기초하여 결정하는 것을 특징으로 한다.
상기 모든 연산의 결과값 데이터의 사이즈는 1024비트이고, 상기 모든 해시값의 사이즈는 32비트이며, 상기 모든 레지스터의 물리적 주소의 사이즈는 10비트인 것을 특징으로 한다.
또한, 본 발명의 또다른 실시예에 따르면, 상기의 레지스터 제어 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체가 제공된다.
본 발명은 레지스터 주소를 재사용하여 보다 효율적으로 레지스터를 사용할 수 있는 장점이 있다.
도 1은 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치를 설명하기 위한 도면이다.
도 2는 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치의 구조도이다.
도 3은 본 발명의 바람직한 일 실시예의 재사용 버퍼를 설명하기 위한 도면이다.
도 4는 본 발명의 바람직한 일 실시예의 해시 버퍼를 설명하기 위한 도면이다.
도 5는 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 방법을 시간의 흐름에 따라 도시한 순서도이다.
도 2는 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치의 구조도이다.
도 3은 본 발명의 바람직한 일 실시예의 재사용 버퍼를 설명하기 위한 도면이다.
도 4는 본 발명의 바람직한 일 실시예의 해시 버퍼를 설명하기 위한 도면이다.
도 5는 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 방법을 시간의 흐름에 따라 도시한 순서도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 자세히 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치를 설명하기 위한 도면이다.
도 1을 참조하면, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치(100)는 입력부(200)에서 연산이 입력되면, 입력값의 데이터를 레지스터(300)로부터 읽어오며, 연산 장치(400)에서는 레지스터(300)로부터 읽어낸 데이터를 활용하여 연산을 수행한다. 연산된 결과값의 데이터는 레지스터(300)에 저장된다. 일반적으로 그래픽 처리 프로세서에서 하나의 피연산자 및 결과값 데이터는 상당히 큰 사이즈를 가진다. 일례로, 그래픽 처리 프로세서(GPU, Graphics Processing Unit)는 1024-bit의 데이터 폭을 가지는 데이터를 사용할 수 있다. 그러므로, 이러한 큰 사이즈의 데이터는 연산 장치의 연산에도 큰 에너지가 소모되며, 레지스터에 저장하는 데에도 큰 에너지가 소모된다.
한편, 다양한 연산이 반복되면, 레지스터(300)에는 과거에 입력된 결과값 데이터가 다수 저장되어 있을 수 있다. 그러므로, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치(100)는 연산이 입력되면, 결과값 데이터들이 레지스터(300)에 이미 존재하는지 확인한 후, 동일한 데이터가 존재한다면 기 저장된 데이터의 레지스터의 물리적 주소를 재사용함으로 레지스터 공간을 절약하고 에너지의 사용을 줄일 수 있다. 특히, 경우에 따라서 연산 장치(400)의 연산 과정 또한 생략할 수 있으므로, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치(100)는 불필요한 에너지 사용을 더욱 줄일 수 있게 된다.
일례로, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치는 재사용 버퍼에 기 수행되었던 연산별로 연산자와 피연산자 및 결과값의 데이터가 저장된 레지스터의 물리적 주소를 저장하여, 저장된 연산과 동일한 연산이 입력되었을 때는 연산을 수행하지 않고도 재사용 버퍼에 저장된 연산의 결과값 데이터가 저장된 레지스터의 물리적 주소를 리네임(rename) 테이블에 기록하여 재사용함으로 연산 및 레지스터 기록에 사용되는 비용을 줄일 수 있다. 재사용 버퍼에 저장되는 연산자의 사이즈는 8비트이고, 물리적 주소의 사이즈는 각 10비트이므로, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서는 재사용 버퍼에 최근에 수행된 각 연산의 연산자와 피연산자 및 결과값의 데이터가 저장된 레지스터의 물리적 주소만을 저장함으로, 동일한 연산이 반복될 때 1024비트 단위 데이터의 연산 및 레지스터 기록으로 인해 발생하는 비용을 줄일 수 있는 것이다.
또다른 예로, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치는 해시 버퍼에 레지스터에 저장된 결과값 데이터의 해시값을 물리적 주소 별로 저장할 수 있다. 재사용 버퍼에 저장되어 있지 않은 새로운 연산이 입력될 때에도, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서는 입력된 연산을 수행한 후 산출된 결과값 데이터의 해시값을 해시 버퍼의 해시값들과 비교하여 레지스터에 산출된 결과값 데이터와 동일한 해시값을 갖는 데이터가 저장되어 있는지 빠르게 파악하며, 파악된 데이터들의 실제값이 산출된 결과값 데이터와 같은지 확인한다. 산출된 결과값 데이터와 동일한 데이터가 레지스터에 존재한다면, 재사용할 결과값 데이터의 물리적 주소를 리네임 테이블에 기록하여 재사용할 수 있다. 해시 버퍼에 저장되는 각 결과값 데이터의 해시값은 32비트이고, 물리적 주소는 10비트이므로, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치는 해시 버퍼에 레지스터에 저장된 결과값 데이터의 해시값을 물리적 주소 별로 저장하여 1024비트 단위의 결과값 데이터를 불필요하게 레지스터에 기록하는 비용을 줄일 수 있다.
이하에서, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치의 구조에 대해 도면을 참조하여 상세히 설명하기로 한다.
도 2는 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치의 구조도이다.
도 2를 참조하면, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치(100)는 리네임(rename) 테이블(110), 연산 재사용부(120), 재사용 버퍼(125), 결과값 재사용부(130), 해시값 생성부(140) 및 해시 버퍼(145)를 포함할 수 있다.
리네임(rename) 테이블(110)에는 입력된 각 연산에 대하여 결과값 데이터의 물리적 주소가 기록되어 저장된다. 일례로, 리네임 테이블(110)에는 레지스터에 저장된 모든 데이터들의 물리적 주소가 기록될 수 있다. 일반적으로는, 입력된 연산에 대하여 결과값이 산출되면, 산출된 결과값에 새로운 레지스터의 물리적 주소가 할당되고, 레지스터의 해당 주소에 1024비트의 데이터를 새로이 기록하게 되지만, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치(100)는 이미 레지스터에 저장된 기록이 있는 결과값 데이터에 대하여는 리네임 테이블(110)에 재사용할 결과값 데이터가 저장된 레지스터의 물리적 주소만을 저장함으로 레지스터 공간을 재사용하여 비용을 줄일 수 있게 된다.
연산 재사용부(120)는 입력된 연산이 재사용 버퍼(125)에 저장되어 있는지 확인하고, 저장되어 있는 연산이라면 모든 연산 과정을 생략하고 재사용 버퍼(125)에 저장된 결과값 데이터 물리적 주소를 리네임 테이블(110)에 기록하여 기 저장된 데이터를 재사용할 수 있다.
일례로, 의 연산이 입력되었다면, 연산 재사용부(120)는 의 연산을 재사용 버퍼(125)에서 찾는다. 입력된 연산의 피연산자가 저장된 레지스터의 물리적 주소 또한 리네임 테이블(110)에 기록되어 있으므로, 연산 재사용부(120)는 입력된 연산의 물리적 주소를 재사용 버퍼(125)에서 검색할 수 있다. 재사용 버퍼(125)에 의 연산이 저장되어 있다면, 연산 재사용부(120)는 재사용 버퍼(125)에서 기 저장된 결과값인 데이터의 물리적 주소를 추출한 후, 리네임 테이블(110)에 기록할 수 있다. 즉, 연산 재사용부(120)는 연산의 결과값인 데이터를 레지스터에 기록하는 비용 뿐 아니라, 연산을 수행하는 비용 또한 줄일 수 있게 된다.
또는, 연산 재사용부(120)는 각 연산자의 특징에 따라 입력값들의 순서에 상관없이 연산자와 입력값들이 동일하다면 동일한 연산으로 인식할 수도 있다. 일례로, 덧셈과 같은 연산에 대해서는 입력값의 순서에 상관없이 입력값들과 연산자가 동일하다면 동일한 연산으로 인식할 수도 있고, 뺄셈과 같은 연산자에 대해서는 입력값의 순서가 동일한 경우에만 동일한 연산으로 인식할 수도 있다. 일례로, 연산자 에 대해 교환법칙이 성립한다면, 연산 재사용부(120)는 연산이 입력되면 재사용 버퍼(125)에서 연산 또는 연산을 찾아 결과값 데이터의 물리적 주소를 추출할 수 있을 것이다. 한편, 연산자 에 대해 교환법칙이 성립하지 않는다면, 연산 재사용부(120)는 연산이 입력되면 재사용 버퍼(125)에서 연산만을 찾아 결과값 데이터의 물리적 주소를 추출할 수 있다. 연산 재사용부(120)는 다수의 연산자가 사용되는 경우 역시 동일한 방법으로 인식할 수 있도록 설정될 수 있다.
재사용 버퍼(125)에는 과거에 사용된 각 연산 별로 연산자와 피연산자 및 결과값의 데이터가 저장된 레지스터의 물리적 주소가 저장될 수 있다.
도 3은 본 발명의 바람직한 일 실시예의 재사용 버퍼를 설명하기 위한 도면이다.
도 3에 예시된 것처럼, 재사용 버퍼(125)에는 각 연산 별로 연산자(126)와 피연산자 데이터가 저장된 레지스터의 물리적 주소(127) 및 결과값 데이터가 저장된 레지스터의 물리적 주소(128)가 기록될 수 있다. 또한, 각 데이터의 유효값(129)도 기록될 수 있다. 유효값(129)은 저장된 각 연산의 데이터가 유효한 데이터인지를 판단할 수 있는 값이며, 일례로, 유효값 1은 유효한 정보임을 의미할 수 있으며, 유효값 0은 유효하지 않은 정보임을 의미할 수 있다. 재사용 버퍼(110)에 저장되는 각 데이터의 사이즈는, 연산자(126)가 8비트, 피연산자 및 결과값 데이터가 저장된 레지스터의 물리적 주소(127, 128)가 각각 10비트, 유효값(129)이 1비트이다. 각 피연산자 및 결과값 데이터의 사이즈가 1024비트이므로, 재사용 버퍼(110)는 각 연산별 비교적 저용량의 데이터를 저장하여 레지스터를 재사용할 뿐 아니라 연산 과정도 생략할 수 있으므로 레지스터 공간 및 연산에 사용되는 비용을 크게 줄일 수 있다.
한편, 입력된 연산과 동일한 연산이 재사용 버퍼(125)에 저장되어 있지 않은 경우에는, 연산 장치(400)가 입력된 연산을 수행하게 되며, 결과값 재사용부(130)에서 레지스터 공간의 재사용이 이루어질 수 있다.
결과값 재사용부(130)는, 입력된 연산의 결과값 데이터와 동일한 데이터가 레지스터에 저장되어 있는지 확인하며, 입력된 연산의 결과값 데이터와 동일한 데이터가 레지스터에 저장되어 있다면 레지스터에 기 저장된 데이터의 물리적 주소를 리네임 테이블(110)에 기록하여 레지스터 공간을 재사용할 수 있다. 이 과정에서, 하나의 결과값 데이터는 1024비트로 상당히 큰 데이터 사이즈를 가지므로, 레지스터에 기록된 모든 1024비트의 데이터를 입력된 연산의 결과값 데이터와 대조 비교하는 것은 상당히 비효율적이다. 그러므로 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치는 해시값 생성부(140)에서 생성되는 32비트의 해시값을 이용하여 보다 효율적으로 입력된 연산의 결과값 데이터와 동일한 데이터가 레지스터에 저장되어 있는지 확인할 수 있다.
해시값 생성부(140)는 연산 장치(400)에서 연산이 수행되면, 결과값 데이터의 해시값을 생성할 수 있다. 해시값은 각 데이터의 명령어의 일부를 해싱(hashing)하여 생성될 수 있다. 해시값 생성부(140)는 생성된 해시값을 해시 버퍼(145)에 저장할 수 있다. 또한, 해시값은 결과값 재사용부(130)의 해시값 비교에 사용될 수도 있다.
해시 버퍼(145)에는 레지스터(300)에 저장된 데이터들의 해시값과 각 데이터가 저장된 레지스터의 물리적 주소가 저장될 수 있다.
도 4는 본 발명의 바람직한 일 실시예의 해시 버퍼를 설명하기 위한 도면이다.
도 4에 예시된 것처럼, 해시 버퍼(145)에는 각 데이터의 해시값(146), 아이디(147) 및 유효값(148)이 기록되어 저장될 수 있다.
그래픽 처리 프로세서에 사용되는 데이터들은 실제 데이터 값이 1024비트로 매우 크므로, 동일한 데이터를 찾는 데에 비교적 큰 에너지가 소모된다. 그러므로 해시 버퍼(145)에는 저장된 데이터들의 32비트의 해시값과 10비트의 물리적 주소가 기록되어, 해시값을 비교하여 비교적 적은 에너지로 동일한 데이터로 추정되는 데이터를 찾아낼 수 있게 된다. 유효값(148)은 기록된 값이 실제로 유효한 정보인지 나타내는 값이며, 일례로, 유효값 1은 유효한 정보임을 의미할 수 있으며, 유효값 0은 유효하지 않은 정보임을 의미할 수 있다.
결과값 재사용부(130)는, 입력된 연산의 결과값 데이터의 해시값이 해시값 생성부(140)에서 생성되면, 입력된 연산의 결과값 데이터의 해시값을 이용하여 해시 버퍼(145)에서 동일한 해시값을 갖는 데이터를 찾는다. 해시값은 실제 명령어의 일부를 해싱하여 생성된 값으로 매우 압축된 정보이므로, 서로 다른 두 데이터의 해시값이 동일할 수도 있다. 따라서, 결과값 재사용부(130)는 입력된 연산의 결과값 데이터의 해시값과 동일한 해시값(146)을 가지는 데이터를 찾으면, 해당 데이터가 저장된 레지스터의 물리적 주소(147)에 기록된 실제 데이터가 입력된 연산의 결과값 데이터와 동일한 값인지 비교하여 판단한다.
이와 같은 방법으로 결과값 재사용부(130)는 입력된 연산의 결과값과 동일한 값을 갖는 데이터를 효율적으로 찾을 수 있다. 결과값 재사용부(130)는 입력된 연산의 결과값과 동일한 값을 갖는 데이터가 레지스터에 저장되어 있다면, 해시 버퍼(145)에 저장된 입력된 연산의 결과값과 동일한 값을 갖는 데이터의 물리적 주소를 리네임 테이블(110)에 기록하여 기 저장된 데이터를 재사용할 수 있다. 결과값 재사용부(130)는 1024비트 사이즈인 모든 데이터를 비교하지 않고 32비트 사이즈인 해시값을 비교하여 검색 범위를 축소한 후 실제 데이터를 비교하므로, 보다 효율적이고 정확하게 입력된 연산의 결과값 데이터와 동일한 기 저장된 데이터를 찾아낼 수 있다. 즉, 각 데이터당 32비트의 해시값과 10비트의 물리적 주소가 기록된 해시 버퍼(145)를 사용하여, 1024비트의 데이터를 불필요하게 여러 번 기록하는 것을 방지할 수 있다.
한편, 입력된 연산의 결과값 데이터의 해시값과 동일한 해시값을 가지는 데이터를 해시 버퍼(145)에서 찾았지만 해당 데이터의 실제 값이 입력된 연산의 결과값과 다르거나, 입력된 연산의 결과값 데이터의 해시값과 동일한 해시값을 가지는 데이터를 해시 버퍼(145)에서 찾지 못하였다면, 입력된 연산의 결과값 데이터에는 새로운 물리적 주소가 할당되어 레지스터에 저장될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 장치는 재사용 버퍼를 이용하여 불필요한 연산 과정을 생략하며, 레지스터를 재사용할 수 있다. 또한, 해시 버퍼를 이용하여 레지스터에 저장된 동일한 데이터를 효율적으로 찾고, 데이터가 저장된 레지스터의 물리적 주소를 리네임 테이블에 기록하여 재사용 할 수 있다.
도 5는 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 방법을 시간의 흐름에 따라 도시한 순서도이다.
도 5를 참조하면, 본 발명의 바람직한 일 실시예에 따른 그래픽 처리 프로세서를 위한 레지스터 제어 방법은 재사용 버퍼 검색 단계(S510), 해시값 생성 단계(S520), 해시 버퍼 검색 단계(S530), 레지스터 검색 단계(S540) 및 리네임 테이블 기록 단계(S550)를 포함할 수 있다.
재사용 버퍼 검색 단계(S510)는 연산 재사용부(120)가 재사용 버퍼(125)에서 입력된 연산과 동일한 연산을 찾는 단계이다. 재사용 버퍼 검색 단계(S510)에서 동일한 연산을 찾는다면 해시값 생성 단계(S520), 해시 버퍼 검색 단계(S530) 및 레지스터 검색 단계(S540)는 생략될 수 있다.
해시값 생성 단계(S520)는 해시값 생성부(140)에서 입력된 연산의 결과값 데이터의 해시값을 생성하는 단계이다.
해시 버퍼 검색 단계(S530)는 결과값 재사용부(130)가 해시 버퍼(145)를 이용하여 입력된 연산의 결과값 데이터의 해시값과 동일한 해시값을 갖는 데이터를 찾는 단계이다.
레지스터 검색 단계(S540)는 결과값 재사용부(130)가 입력된 연산의 결과값 데이터의 해시값과 동일한 해시값을 갖는 데이터의 실제값을 확인하여 입력된 연산의 결과값 데이터와 동일한 데이터를 찾는 단계이다.
리네임 테이블 기록 단계(S550)는 재사용 버퍼 검색 단계(S510)에서 찾아낸 연산의 결과값 데이터의 물리적 주소 또는 레지스터 검색 단계(S540)에서 찾아낸 데이터의 물리적 주소를 재사용하기 위해 리네임 테이블(110)에 기록하는 단계이다.
앞서 설명한 기술적 내용들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예들을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 하드웨어 장치는 실시예들의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다는 것을 이해할 것이다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
100: 레지스터 제어 장치
110: 리네임 테이블
120: 연산 재사용부
125: 재사용 버퍼
130: 결과값 재사용부
140: 해시값 생성부
145: 해시 버퍼
200: 입력부
300: 레지스터
400: 연산 장치
110: 리네임 테이블
120: 연산 재사용부
125: 재사용 버퍼
130: 결과값 재사용부
140: 해시값 생성부
145: 해시 버퍼
200: 입력부
300: 레지스터
400: 연산 장치
Claims (10)
- 실행된 연산 별로 연산자와 피연산자 및 결과값의 데이터가 저장된 레지스터의 물리적 주소가 저장되는 재사용 버퍼;
입력된 연산과 동일한 연산이 상기 재사용 버퍼에 존재하면, 상기 입력된 연산과 동일한 연산의 결과값 데이터를 상기 입력된 연산의 결과값 데이터로 재사용 하기로 결정하는 연산 재사용부;
상기 입력된 연산과 동일한 연산이 상기 재사용 버퍼에 존재하지 않고, 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 동일한 데이터가 레지스터에 존재하면, 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 동일한 데이터를 상기 입력된 연산의 결과값 데이터로 재사용 하기로 결정하는 결과값 재사용부; 및
상기 연산 재사용부 및 결과값 재사용부에서 재사용하기로 결정된 결과값 데이터가 저장된 레지스터의 물리적 주소가 각 연산별로 기록되는 리네임 테이블을 포함하되,
상기 연산 재사용부는,
상기 입력된 연산과 연산자 및 피연산자는 동일하되 연산 순서가 상이한 연산을 상기 입력된 연산과 동일한 연산으로 판단할지 여부를 각 연산자의 연산 규칙에 기초하여 결정하는 것을 특징으로 하는 그래픽 처리 프로세서를 위한 레지스터 제어 장치.
- 제1항에 있어서,
각 데이터의 해시값을 생성하는 해시값 생성부; 및
상기 레지스터에 저장된 데이터들의 해시값이 물리적 주소 별로 저장되는 해시 버퍼를 더 포함하되,
상기 결과값 재사용부는 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 해시값이 동일한 데이터들을 추출하고, 상기 추출된 데이터들과 상기 입력된 연산을 수행하여 산출된 결과값 데이터의 실제값을 비교하여 동일한 데이터인지 판단하는 것을 특징으로 하는 그래픽 처리 프로세서를 위한 레지스터 제어 장치. - 삭제
- 제2항에 있어서,
상기 해시값 생성부는 임의의 연산이 수행되면 상기 수행된 연산의 결과값 데이터의 해시값을 생성하는 것을 특징으로 하는 그래픽 처리 프로세서를 위한 레지스터 제어 장치. - 제2항에 있어서,
상기 모든 연산의 결과값 데이터의 사이즈는 1024비트이고, 상기 모든 해시값의 사이즈는 32비트이며, 상기 모든 레지스터의 물리적 주소의 사이즈는 10비트인 것을 특징으로 하는 그래픽 처리 프로세서를 위한 레지스터 제어 장치. - (a) 입력된 연산과 동일한 연산이 재사용 버퍼에 존재하면, 상기 입력된 연산과 동일한 연산의 결과값 데이터를 상기 입력된 연산의 결과값 데이터로 재사용 하기로 결정하는 단계;
(b) 상기 입력된 연산과 동일한 연산이 상기 재사용 버퍼에 존재하지 않고, 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 동일한 데이터가 레지스터에 존재하면, 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 동일한 데이터를 상기 입력된 연산의 결과값 데이터로 재사용 하기로 결정하는 단계; 및
(c) 상기 (a)단계 또는 (b)단계에서 재사용하기로 결정된 결과값 데이터를 리네임 테이블에 기록하는 단계를 포함하되,
상기 재사용 버퍼에는 실행된 연산 별로 연산자와 피연산자 및 결과값의 데이터가 저장된 레지스터의 물리적 주소가 저장되어 있고,
상기 리네임 테이블에는 재사용된 결과값 데이터가 저장된 레지스터의 물리적 주소들이 각 연산 별로 저장되며,
상기 (a)단계는,
상기 입력된 연산과 연산자 및 피연산자는 동일하되 연산 순서가 상이한 연산을 상기 입력된 연산과 동일한 연산으로 판단할지 여부를 각 연산자의 연산 규칙에 기초하여 결정하는 것을 특징으로 하는 그래픽 처리 프로세서를 위한 레지스터 제어 방법.
- 제6항에 있어서,
상기 (b)단계는,
(b1) 상기 입력된 연산을 수행하여 산출된 결과값 데이터의 해시값을 생성하는 단계;
(b2) 해시 버퍼에서 상기 입력된 연산을 수행하여 산출된 결과값 데이터와 해시값이 동일한 데이터들을 추출하는 단계; 및
(b3) 상기 추출된 데이터들과 상기 입력된 연산을 수행하여 산출된 결과값 데이터의 실제값을 비교하여 동일한 데이터인지 판단하는 단계를 포함하며,
상기 해시 버퍼에는 상기 레지스터에 저장된 데이터들의 해시값이 물리적 주소별로 저장되어 있는 것을 특징으로 하는 그래픽 처리 프로세서를 위한 레지스터 제어 방법. - 삭제
- 제7항에 있어서,
상기 모든 연산의 결과값 데이터의 사이즈는 1024비트이고, 상기 모든 해시값의 사이즈는 32비트이며, 상기 모든 레지스터의 물리적 주소의 사이즈는 10비트인 것을 특징으로 하는 그래픽 처리 프로세서를 위한 레지스터 제어 방법. - 제6항의 레지스터 제어 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170152853A KR101965074B1 (ko) | 2017-11-16 | 2017-11-16 | 그래픽 처리 프로세서를 위한 레지스터 제어 장치 및 방법과 이에 관한 기록매체 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170152853A KR101965074B1 (ko) | 2017-11-16 | 2017-11-16 | 그래픽 처리 프로세서를 위한 레지스터 제어 장치 및 방법과 이에 관한 기록매체 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101965074B1 true KR101965074B1 (ko) | 2019-04-02 |
Family
ID=66166901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170152853A KR101965074B1 (ko) | 2017-11-16 | 2017-11-16 | 그래픽 처리 프로세서를 위한 레지스터 제어 장치 및 방법과 이에 관한 기록매체 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101965074B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140122564A (ko) * | 2013-04-10 | 2014-10-20 | 삼성전자주식회사 | 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법 |
KR20150120289A (ko) * | 2014-04-17 | 2015-10-27 | 에이알엠 리미티드 | 연속하는 마이크로 연산 결과의 재사용 |
-
2017
- 2017-11-16 KR KR1020170152853A patent/KR101965074B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140122564A (ko) * | 2013-04-10 | 2014-10-20 | 삼성전자주식회사 | 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법 |
KR20150120289A (ko) * | 2014-04-17 | 2015-10-27 | 에이알엠 리미티드 | 연속하는 마이크로 연산 결과의 재사용 |
Non-Patent Citations (2)
Title |
---|
Jourdan et al. A novel renaming scheme to exploit value temporal locality through physical register reuse and unification. IEEE MICRO, 1998년 11월, pp. 216-225. 1부.* * |
Sodani and Sohi. Dynamic Instruction Reuse. ISCA, 1997년 6월, pp. 1-12. 1부.* * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10613871B2 (en) | Computing system and method employing processing of operation corresponding to offloading instructions from host processor by memory's internal processor | |
CN108431831B (zh) | 循环代码处理器优化 | |
US9058192B2 (en) | Handling pointers in program code in a system that supports multiple address spaces | |
US7249350B2 (en) | Optimized translation of scalar type SIMD instructions into non-scalar SIMD instructions | |
JP2015049832A (ja) | 定数ロードのオーバーヘッドを削減する方法、装置及びプログラム | |
KR102195103B1 (ko) | 프로그램 컴파일 방법 | |
CN102662799B (zh) | 数据备份的方法、服务器及热备份系统 | |
US8990627B2 (en) | Leveraging page fault and page reclaim capabilities in debugging | |
US10635418B2 (en) | State recovery methods and apparatus for computing platforms | |
CN104063329B (zh) | 64位立即数处理方法及装置 | |
CN103049304B (zh) | 一种通过死代码移除来加快gpu运行速度的方法 | |
KR101965074B1 (ko) | 그래픽 처리 프로세서를 위한 레지스터 제어 장치 및 방법과 이에 관한 기록매체 | |
TWI782060B (zh) | 用於在資料處理設備中比對連續值的設備、方法、電腦程式及電腦可讀取儲存媒體 | |
US9081560B2 (en) | Code tracing processor selection | |
US10133655B1 (en) | Emulation of target system using JIT compiler and bypassing translation of selected target code blocks | |
US8577936B2 (en) | Fixup cache tool for object memory compaction in an information handling system | |
US11842200B2 (en) | Multi-modal gather operation | |
US9342319B1 (en) | Accelerated class check | |
US8700887B2 (en) | Register, processor, and method of controlling a processor using data type information | |
CN113835927B (zh) | 一种指令执行方法、计算设备及存储介质 | |
JP2019185486A (ja) | コード変換装置、コード変換方法、及びコード変換プログラム | |
CN112199160B (zh) | 虚拟指令还原方法、装置、设备及存储介质 | |
CN117437451B (zh) | 图像匹配方法、装置、设备及存储介质 | |
CN109992529B (zh) | 虚拟地址确定方法及装置、处理器、存储介质 | |
US10176001B2 (en) | Simulation device, simulation method, and computer readable medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |