KR102250089B1 - 레지스터 포트를 관리하는 방법 및 장치 - Google Patents

레지스터 포트를 관리하는 방법 및 장치 Download PDF

Info

Publication number
KR102250089B1
KR102250089B1 KR1020140028591A KR20140028591A KR102250089B1 KR 102250089 B1 KR102250089 B1 KR 102250089B1 KR 1020140028591 A KR1020140028591 A KR 1020140028591A KR 20140028591 A KR20140028591 A KR 20140028591A KR 102250089 B1 KR102250089 B1 KR 102250089B1
Authority
KR
South Korea
Prior art keywords
register
port
compiler
ports
data
Prior art date
Application number
KR1020140028591A
Other languages
English (en)
Other versions
KR20150106267A (ko
Inventor
김태송
박재언
김도형
이승원
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020140028591A priority Critical patent/KR102250089B1/ko
Priority to US14/644,951 priority patent/US9747224B2/en
Publication of KR20150106267A publication Critical patent/KR20150106267A/ko
Application granted granted Critical
Publication of KR102250089B1 publication Critical patent/KR102250089B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

일 실시 예에 따른 레지스터 포트의 관리 방법은 연산을 수행하는 중 각 사이클마다 사용되는 레지스터 포트들을 스케줄링하는 단계; 상기 스케줄링의 결과에 따라 상기 레지스터 포트들의 데이터를 인코딩하되, 일부 사이클에서 스케줄이 없는 레지스터 포트의 데이터는 인접 사이클의 데이터와 동일하게 인코딩하는 단계; 및 상기 인코딩 결과를 상기 레지스터 포트들을 포함하는 장치로 전송하는 단계를 포함한다.

Description

레지스터 포트를 관리하는 방법 및 장치{Method and Apparatus for managing register port}
레지스터 포트를 관리하는 방법 및 장치에 관한 것이다.
레지스터(register)는 기능 유닛(function unit)과 연결되어 연산을 위한 데이터를 저장한다. 레지스터는 읽기 포트(read port)와 쓰기 포트(write port)를 포함한다. 연산을 수행하는 동안 레지스터의 포트들을 통해서 데이터를 읽거나 쓸 수 있다.
기능 유닛들은 레지스터에 저장된 정보를 이용한다. 기능 유닛들은 레지스터에 접속할 때 전력을 소모하며, 레지스터에 저장된 정보를 읽거나 레지스터에 정보를 쓸 수 있다.
레지스터 파일의 파워 소모를 줄이기 위한 방법 및 장치를 제공하는데 있다.
또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다. 본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 실시 예에 따른 레지스터 포트의 관리 방법은 연산을 수행하는 중 각 사이클마다 사용되는 레지스터 포트들을 스케줄링하는 단계; 상기 스케줄링의 결과에 따라 상기 레지스터 포트들의 데이터를 인코딩하되, 일부 사이클에서 스케줄이 없는 레지스터 포트의 데이터는 인접 사이클의 데이터와 동일하게 인코딩하는 단계; 및 상기 인코딩 결과를 상기 레지스터 포트들을 포함하는 장치로 전송하는 단계를 포함한다.
일 실시 예에 따른 컴파일러는 연산을 수행하는 중 각 사이클마다 사용되는 레지스터 포트들을 스케줄링하는 스케줄러; 상기 스케줄링의 결과에 따라 상기 레지스터 포트들의 데이터를 인코딩하되, 일부 사이클에서 스케줄이 없는 레지스터 포트의 데이터는 인접 사이클의 데이터와 동일하게 인코딩하는 인코더; 및 상기 인코딩 결과를 상기 레지스터 포트들을 포함하는 장치로 전송하는 전송부를 포함한다.
도 1은 컴파일러와 주변 장치를 설명하기 위한 도면이다.
도 2는 일 실시 예에 따른 컴파일러를 설명하기 위한 도면이다.
도 3은 또 다른 실시 예에 따른 컴파일러를 설명하기 위한 도면이다.
도 4는 레지스터 파일을 포함하는 코어를 설명하기 위한 도면이다.
도 5는 레지스터 파일을 설명하기 위한 도면이다.
도 7은 컴파일러가 연산 중 사용되지 않는 포트를 제어하는 방법을 설명하기 위한 도면이다.
도 8은 컴파일러가 인코딩하는 방법을 설명하기 위한 도면이다.
도 9는 컴파일러가 레지스터 포트를 관리하는 방법을 설명하기 위한 순서도이다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 컴파일러(200)와 주변 장치를 설명하기 위한 도면이다. 도 1을 참조하면, 어플리케이션(100), 컴파일러(200) 및 디바이스(300)는 데이터를 서로 송수신한다.
어플리케이션(100)은 컴파일러(200)로 프로그램을 전송한다. 어플리케이션은 프로그램을 생성하고, 생성된 프로그램을 컴파일러(200)로 전송한다.
어플리케이션(100)은 C, C++ 또는 자바 등의 고급 언어로 프로그램을 생성한다. 어플리케이션(100)은 사용자가 이용 가능한 프로그램 언어를 이용하여 프로그램을 생성한다.
컴파일러(200)는 프로그램을 바이너리 코드로 변환한다. 컴파일러(200)는 어플리케이션(100)이 생성한 프로그램을 디바이스(300)가 인식 가능한 바이너리 코드로 변환한다. 컴파일러(200)는 디바이스(300)로 바이너리 코드(binary code)를 전송한다.
디바이스(300)는 바이너리 코드에 따라 연산을 수행한다. 바이너리 코드는 연산을 위한 함수, 레지스터 파일의 관리에 관한 정보 및 레지스터 포트의 사용 정보 등을 포함한다.
디바이스(300)는 바이너리 코드에 따라 연산을 수행할 수 있는 전자 기기이다. 디바이스(300)는 PC, 스마트폰, 패블릿 PC 등일 수 있다.
도 2는 일 실시 예에 따른 컴파일러(200)를 설명하기 위한 도면이다. 도 2를 참조하면, 컴파일러(200)는 스케줄러(210), 인코더(220) 및 전송부(230)를 포함한다.
스케줄러(210)는 연산을 수행하는 중 각 사이클마다 사용되는 레지스터 포트들을 스케줄링 한다. 다시 말해서, 스케줄러(210)는 연산 중 레지스터 포트들의 스케줄을 결정한다. 레지스터 포트의 스케줄은 레지스터 포트가 각 사이클에 사용되는지 여부를 나타낸다. 연산은 CGA(Coarse grained array)에서 수행되는 루프(loop) 연산을 나타낸다. 스케줄러(210)는 각 루프 연산마다 레지스터 포트들을 스케줄링 한다.
또한, 스케줄러(210)는 레지스터 포트들을 이용하여 어떤 레지스터가 이용되는지를 스케줄링 한다. 다시 말해서, 스케줄러(210)는 연산 중 레지스터 포트들을 이용하여 기능 유닛이 어떤 레지스터에 저장된 데이터를 이용할 것인지를 결정한다.
인코더(220)는 스케줄링의 결과에 따라 레지스터 포트들의 데이터를 인코딩하되, 일부 사이클에서 스케줄이 없는 레지스터 포트의 데이터는 인접 사이클과 동일하게 인코딩 한다. 인코더(220)는 스케줄링의 결과에 기초하여 바이너리 코드를 생성한다. 이때, 인코더(220)는 각 레지스터 포트의 스케줄이 정해진 사이클의 경우는 정해진 스케줄을 그대로 인코딩 하고, 그렇지 않은 사이클의 경우에는 다른 사이클의 스케줄과 동일하게 인코딩 한다. 예를 들어, 제1 레지스터 포트의 제1 사이클의 스케줄이 정해지고, 제2 사이클의 스케줄이 정해지지 않은 경우(스케줄이 없는 경우), 인코더(220)는 제1 레지스터의 제2 사이클의 스케줄도 제1 사이클의 스케줄과 동일하게 인코딩한다. 레지스터 포트의 데이터는 기능 유닛이 어느 레지스터에 접속할 것인지를 나타낸다.
전송부(230)는 인코딩 결과를 레지스터 포트들을 포함하는 장치로 전송한다. 레지스터 포트를 포함하는 장치는 PC, 스마트폰, 패블릿 PC 등일 수 있다.
도 3은 다른 실시 예에 따른 컴파일러(200)를 설명하기 위한 도면이다. 도 3을 참조하면, 컴파일러(200)는 재-스케줄러(re-scheduler)를 더 포함한다.
재-스케줄러(240)는 스케줄링의 결과에 기초하여 제1 레지스터 포트의 스케줄을 제2 레지스터 포트로 재-스케줄링 한다. 다시 말해서, 재-스케줄러(240)는 어떤 레지스터 포트의 스케줄을 다른 레지스터 포트의 스케줄로 변경함으로써, 레지스터 포트들의 스케줄을 조정한다.
재-스케줄러(240)는 스케줄링의 결과에 기초하여 제1 레지스터 포트의 스케줄을 하나 이상의 다른 레지스터 포트들로 재-스케줄링 한다. 재-스케줄러(240)는 연산 수행 중 최소 사용 빈도를 갖는 레지스터 포트를 결정하고, 결정된 레지스터 포트의 스케줄을 하나 이상의 다른 레지스터 포트들로 재-스케줄링 한다. 다시 말해서, 재-스케줄러(240)는 연산 수행 중 가장 적은 수의 스케줄을 포함하는 레지스터 포트를 결정한다. 재-스케줄러(240)는 결정된 레지스터 포트의 스케줄을 다른 레지스터 포트들로 변경한다. 예를 들어, 특정 연산을 위해 제1 내지 제3 레지스터 포트들이 사용되고, 제3 레지스터 포트가 가장 적게 사용되는 경우, 재-스케줄러(240)는 제3 레지스터 포트의 스케줄을 제1 또는 제2 레지스터 포트들로 변경한다. 이때, 재-스케줄러(240)는 제1 또는 제2 레지스터 포트들의 스케줄을 고려하여 제3 레지스터 포트의 스케줄을 변경한다. 연산은 CGA(Coarse grained array)에서 수행되는 루프(loop) 연산을 나타낸다. 재-스케줄러(240)는 각 루프 연산마다 레지스터 포트들을 재-스케줄링 한다.
도 4는 레지스터 파일을 포함하는 코어를 설명하기 위한 도면이다. 도 4를 참조하면, 코어(310)는 레지스터 파일(320) 및 기능 유닛(330)을 포함한다.
프로세서는 복수의 코어(310)들을 포함한다. 또한, 디바이스(300)는 복수의 프로세서들을 포함한다.
컴파일러(200)는 기능 유닛(330)들이 레지스터 파일(320)의 데이터를 이용하는 것을 제어한다. 다시 말해서, 컴파일러(200)는 기능 유닛(330)들이 레지스터 파일(320)에 접속하는 스케줄을 관리한다. 레지스터 파일(320)은 복수의 레지스터들을 포함하지만, 레지스터에 접속하기 위한 포트의 수는 한정된다. 따라서, 복수의 기능 유닛(330)들은 레지스터에 접속하기 위해서는 컴파일러(200)에서 지정한 스케줄에 따라 동작한다.
레지스터 파일(320)은 일종의 메모리이다. 레지스터 파일(320)은 복수의 레지스터들을 포함하며, 레지스터들은 데이터를 저장한다. 기능 유닛(330)들은 레지스터 파일에 저장된 데이터를 이용하여 연산을 수행한다.
도 5는 레지스터 파일(320)을 설명하기 위한 도면이다. 도 5를 참조하면, 레지스터 파일(320)은 2개의 읽기 포트들(read ports, 321, 322) 및 2개의 쓰기 포트들(write ports, 323, 324)을 포함한다.
컴파일러(200)는 레지스터 파일(320)의 포트들을 제어한다. 컴파일러(200)는 레지스터 파일(320)의 일부 포트 또는 모든 포트를 비활성 시키는 지시(instruction)를 디바이스(300)로 전송한다. 지시를 수신한 디바이스(300)는 포트를 비활성 시킨다. 다시 말해서, 디바이스(300)는 포트에 공급되는 전력을 차단한다. 컴파일러(200)는 특정 루프 연산을 수행하는 동안 일부 포트의 사용을 중지할 수 있다. 예를 들어, 컴파일러(200)가 읽기 포트1(321)에 공급되는 전력을 차단하는 지시를 디바이스(300)에 전송하면, 디바이스(300)는 읽기 포트1(321)에 공급되는 전력을 차단한다.
도 6은 일 실시예에 따른 컴파일러(200)가 인코딩하는 방법을 설명하기 위한 도면이다. 도 6을 참조하면, 컴파일러(200)는 일부 사이클에서 스케줄이 없는 레지스터 포트의 데이터는 인접 사이클의 데이터와 동일하게 인코딩 한다.
스케줄 테이블(610)은 컴파일러(200)가 각 사이클마다 사용되는 레지스터 포트들을 스케줄링 한 결과이다. 스케줄 테이블(610)을 참조하면, 연산은 Time0부터 Time5까지 진행되며, 각 Time은 한번의 사이클을 나타낸다. 또한, 연산 중 사용되는 포트는 포트0, 포트1 및 포트2이며, 스케줄 테이블(610)에 표시된 바와 같이 총 6회 사용된다.
스케줄 테이블(610)은 컴파일러(200)가 각 사이클마다 사용되는 레지스터 포트들을 스케줄링 한 결과이다. 스케줄 테이블(610)을 참조하면, Time0일 때(즉, 제1 사이클의 경우), 포트0 과 포트1이 사용된다. Time0일 때, 기능 유닛(330)은 포트0을 통해서 제1 레지스터의 데이터에 접속하고, 포트1을 통해서 제2 레지스터의 데이터에 접속한다. Time1일 때, 기능 유닛(330)은 포트2를 통해서 제3 레지스터의 데이터에 접속한다. Time2일 때, 기능 유닛(330)은 포트0를 통해서 제4 레지스터의 데이터에 접속한다. Time4일 때, 기능 유닛(330)은 포트0를 통해서 제5 레지스터의 데이터에 접속하고, 포트1을 통해서 제6 레지스터의 데이터에 접속한다.
인코딩 테이블(620)은 컴파일러(200)가 각 사이클마다 사용되는 레지스터 포트들을 인코딩 한 결과이다. 인코딩 테이블(620)을 참조하면, 컴파일러(200)는 기능 유닛(330)이 접속하는 레지스터의 변화를 최소화하도록 인코딩 한다. 예를 들어, 컴파일러(200)는 포트0를 인코딩 할 때, Time1일 때 포트0의 스케줄이 없으므로 Time0과 동일하게 포트0를 인코딩 한다. 다시 말해서, 컴파일러(200)는 Time1일 때도 기능 유닛(330)이 포트0를 통해 제1 레지스터의 데이터에 접속하도록 인코딩 한다. 또한, 포트2의 경우, 컴파일러(200)는 모든 Time에서 기능 유닛(330)이 포트2를 통해 제3 레지스터의 데이터에 접속하도록 인코딩 한다. 컴파일러(200)의 인코딩 결과, 기능 유닛(330)은 동일한 데이터에 접속하기 때문에, 다른 데이터에 접속함으로써 데이터를 변경하는데 필요한 전력은 줄어든다.
도 7은 컴파일러(200)가 연산 수행 중 사용되지 않는 포트를 제어하는 방법을 설명하기 위한 도면이다. 도 7을 참조하면, 컴파일러(200)는 연산 수행 중 사용되지 않는 포트에 공급되는 전원을 차단하는 지시를 전송한다. 지시를 수신한 디바이스(300)는 사용되지 않는 포트에 전원의 공급을 차단한다.
도 7에서는 컴파일러(200)가 포트3에 공급되는 전원을 차단한다. 스케줄링의 결과 또는 재-스케줄링의 결과, 포트3이 연산 중 사용되지 않는 경우, 컴파일러(200)는 디바이스(300)에 포트3이 연산 중 사용되지 않는다는 지시를 전송한다. 지시를 수신한 디바이스(300)는 연산 중 포트3에 전력을 공급하지 않는다.
도 8은 다른 실시예에 따른 컴파일러(200)가 인코딩하는 방법을 설명하기 위한 도면이다. 도 8을 참조하면, 컴파일러(200)는 전력 소모를 최소화하기 위해 인코딩 한다.
컴파일러(200)는 스케줄 테이블(810)을 참조하여, 하나 또는 그 이상의 포트를 선정한다. 컴파일러(200)는 가장 사용 빈도가 적은 포트를 선정한다. 또한, 컴파일러(200)는 다른 포트로 스케줄을 이동할 수 있는 포트를 선정한다.
컴파일러(200)는 선정된 포트의 스케줄을 다른 포트로 변경한다. 다시 말해서, 컴파일러(200)는 포트들을 재-스케줄링 한다. 도 8의 경우, 컴파일러(200)는 포트2를 선정하고, 포트2의 Time2의 스케줄을 포트1의 Time2의 스케줄로 변경한다.
컴파일러(200)는 기능 유닛(330)이 포트를 통해 접속하는 레지스터가 변경되지 않도록 인코딩 한다. 컴파일러(200)는 포트의 스케줄의 변화를 최소화하기 위해 일부 사이클에서 스케줄이 없는 레지스터 포트의 데이터는 인접 사이클의 데이터와 동일하게 인코딩 한다. 예를 들어, Time1에서 포트0은 사용되지 않으므로, 컴파일러(200)는 포트0의 Time1도 포트0의 Time0와 동일하게 인코딩 한다.
컴파일러(200)는 연산 중 사용되지 않는 포트를 결정한다. 인코딩 테이블(820)을 참조하면, 재-스케줄링의 결과 포트2 및 포트3은 연산 중 사용되지 않는다. 따라서, 컴파일러(200)는 포트2 및 포트3을 사용되지 않는 포트로 결정한다.
컴파일러(200)는 사용되지 않는 포트에 대한 정보를 디바이스(300)로 전송한다. 구체적으로, 컴파일러(200)는 사용되지 않는 포트에 전원 공급을 차단하는 지시를 디바이스(300)로 전송한다. 디바이스(300)는 연산 중 사용되지 않는 포트에 전원 공급을 차단하여 전력 소모를 줄인다.
도 8의 인코딩 결과, 기능 유닛(330)이 접속하는 레지스터는 총 6회 변한다. 인코딩 테이블(820)에서 음영으로 표시된 부분은 기능 유닛(330)이 접속하는 레지스터가 변경되는 부분이다.
도 9는 컴파일러(200)가 레지스터 포트를 관리하는 방법을 설명하기 위한 순서도이다.
단계 910에서, 컴파일러(200)는 레지스터 포트들을 스케줄링 한다. 컴파일러(200)는 루프 연산 중 사용되는 레지스터 포트들의 스케줄을 결정한다. 컴파일러(200)는 기능 유닛(330)이 어느 사이클에 어느 레지스터 포트들을 통해서 어느 레지스터에 접속할 것인지를 결정한다.
단계 920에서, 컴파일러(200)는 사용되는 레지스터 포트를 줄이기 위해 재-스케줄링 한다. 컴파일러(200)는 가장 적은 빈도로 사용되는 레지스터 포트의 스케줄을 다른 레지스터 포트로 변경한다.
단계 930에서, 컴파일러(200)는 연산을 수행하기 전에 비활성 레지스터 포트를 차단하는 지시를 추가한다. 컴파일러(200)는 연산을 수행하기 전에 디바이스(300)로 비활성 레지스터 포트가 어느 포트인지를 나타내는 지시 또는 메시지를 전송한다. 비활성 레지스터 포트는 특정 연산 중 사용되지 않는다.
단계 940에서, 컴파일러(200)는 일부 사이클에서 스케줄이 없는 레지스터 포트의 데이터는 인접 사이클의 데이터와 동일하게 인코딩 한다. 컴파일러(200)는 기능 유닛(330)이 접속하는 레지스터의 변경을 최소화하도록 인코딩하여, 기능 유닛(330)이 접속하는 레지스터의 변경으로 인하여 발생하는 전력 소모를 줄인다.
단계 950에서, 컴파일러(200)는 인코딩 결과를 디바이스(300)로 전송한다. 디바이스(300)는 인코딩 결과에 따라 연산을 수행한다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)를 포함한다.
200: 컴파일러
210: 스케줄러
220: 인코더
230: 전송부

Claims (13)

  1. 디바이스가 바이너리 코드(binary code)들에 따라 연산을 수행하는 방법에 있어서,
    상기 연산을 수행하는 중 각 사이클(cycle)마다 사용되는 레지스터 포트(register port)들을 스케줄링(scheduling)하는 단계;
    상기 연산을 수행하는 중 최소 사용 빈도를 갖는 레지스터 포트를 결정하고, 상기 결정된 레지스터 포트의 스케줄을 하나 이상의 다른 레지스터 포트들로 재-스케줄링(re-scheduling)하는 단계; 및
    상기 재-스케줄링의 결과에 따라 상기 레지스터 포트들의 데이터를 인코딩(encoding)하되, 일부 사이클에서 스케줄이 없는 레지스터 포트의 데이터는 인접 사이클의 데이터와 동일하게 인코딩하는 단계를 포함하는, 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제 1 항에 있어서,
    상기 레지스터 포트들 중에서, 상기 연산을 수행하는 중 사용되지 않는 포트에 공급되는 전원을 차단하는 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서,
    상기 연산은 CGA(Coarse grained array)에서 수행되는 루프(loop) 연산인 것을 특징으로 하는 방법.
  7. 제 1 항 및 제 5 항 내지 제 6 항 중에서 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  8. 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는 바이너리 코드들에 따라,
    연산을 수행하는 중 각 사이클마다 사용되는 레지스터 포트들을 스케줄링하고;
    상기 연산을 수행하는 중 최소 사용 빈도를 갖는 레지스터 포트를 결정하고, 상기 결정된 레지스터 포트의 스케줄을 하나 이상의 다른 레지스터 포트들로 재-스케줄링하고;
    상기 재-스케줄링의 결과에 따라 상기 레지스터 포트들의 데이터를 인코딩하되, 일부 사이클에서 스케줄이 없는 레지스터 포트의 데이터는 인접 사이클의 데이터와 동일하게 인코딩하도록 구성된, 디바이스.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 제 8 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 레지스터 포트들 중에서, 상기 연산을 수행하는 중 사용되지 않는 포트에 공급되는 전원을 차단하도록 구성된 디바이스.
  13. 제 8 항에 있어서,
    상기 연산은 CGA에서 수행되는 루프 연산인 것을 특징으로 하는 디바이스.
KR1020140028591A 2014-03-11 2014-03-11 레지스터 포트를 관리하는 방법 및 장치 KR102250089B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140028591A KR102250089B1 (ko) 2014-03-11 2014-03-11 레지스터 포트를 관리하는 방법 및 장치
US14/644,951 US9747224B2 (en) 2014-03-11 2015-03-11 Method and apparatus for managing register port

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140028591A KR102250089B1 (ko) 2014-03-11 2014-03-11 레지스터 포트를 관리하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20150106267A KR20150106267A (ko) 2015-09-21
KR102250089B1 true KR102250089B1 (ko) 2021-05-10

Family

ID=54069046

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140028591A KR102250089B1 (ko) 2014-03-11 2014-03-11 레지스터 포트를 관리하는 방법 및 장치

Country Status (2)

Country Link
US (1) US9747224B2 (ko)
KR (1) KR102250089B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102593320B1 (ko) * 2016-09-26 2023-10-25 삼성전자주식회사 전자 장치, 프로세서 및 그 제어 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090085919A1 (en) 2007-09-28 2009-04-02 Qualcomm Incorporated System and method of mapping shader variables into physical registers
US20090313460A1 (en) * 2008-06-12 2009-12-17 National Tsing Hua University Trace compression method for debug and trace interface of microprocessor
US20130024666A1 (en) * 2011-07-18 2013-01-24 National Tsing Hua University Method of scheduling a plurality of instructions for a processor
US20130086357A1 (en) 2011-09-29 2013-04-04 Jeffrey P. Rupley Staggered read operations for multiple operand instructions

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6564331B1 (en) 1999-09-24 2003-05-13 Intel Corporation Low power register file
US7617386B2 (en) * 2007-04-17 2009-11-10 Xmos Limited Scheduling thread upon ready signal set when port transfers data on trigger time activation
US20090013331A1 (en) * 2007-07-06 2009-01-08 Xmos Limited Token protocol
US8347312B2 (en) * 2007-07-06 2013-01-01 Xmos Limited Thread communications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090085919A1 (en) 2007-09-28 2009-04-02 Qualcomm Incorporated System and method of mapping shader variables into physical registers
US20090313460A1 (en) * 2008-06-12 2009-12-17 National Tsing Hua University Trace compression method for debug and trace interface of microprocessor
US20130024666A1 (en) * 2011-07-18 2013-01-24 National Tsing Hua University Method of scheduling a plurality of instructions for a processor
US20130086357A1 (en) 2011-09-29 2013-04-04 Jeffrey P. Rupley Staggered read operations for multiple operand instructions

Also Published As

Publication number Publication date
US20150261695A1 (en) 2015-09-17
KR20150106267A (ko) 2015-09-21
US9747224B2 (en) 2017-08-29

Similar Documents

Publication Publication Date Title
US10102102B2 (en) Characterizing device performance based on user-perceivable latency
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit
CN105468416A (zh) 一种应用程序清理的方法及终端
TW200511029A (en) File management method and data processing device
US10445131B2 (en) Core prioritization for heterogeneous on-chip networks
US20110072420A1 (en) Apparatus and method for controlling parallel programming
US10206618B2 (en) Optimized visibility for sleep sessions over time
CN103019726A (zh) 软件系统业务规则的管理方法和装置
CN104063495A (zh) 表单扩展方法与表单扩展装置
CN103364016A (zh) 传感器数据记录装置、方法和程序
US10643736B2 (en) Method, apparatus and electronic device for read/write speed testing
JP6042454B2 (ja) ユーザ生成によるデータセンターの省電力
CN103927215A (zh) 基于内存盘与SSD硬盘的kvm虚拟机调度的优化方法及系统
KR102250089B1 (ko) 레지스터 포트를 관리하는 방법 및 장치
CN110673935A (zh) 一种基于Kubernetes系统的作业调度方法、设备以及存储介质
CN104216834A (zh) 一种内存访问的方法、缓冲调度器和内存模块
KR101925720B1 (ko) 모바일 기기의 발열 관리 방법
KR101575369B1 (ko) 비휘발성 메모리에 기록 및 소거하기 위한 방법
US20140149057A1 (en) Estimating the battery life of a portable electronic device based on usage logs
US8578259B2 (en) Media portability and compatibility for different destination platforms
CN108399118B (zh) 文件系统测试数据处理方法、装置、存储介质及终端
KR101931126B1 (ko) 저전력을 위한 프로그램 리팩토링 방법
CN105404591A (zh) 处理器系统及其存储器控制方法
US9804968B2 (en) Storage system and data writing method
US9122474B2 (en) Apparatus and method for reducing overhead caused by communication between clusters

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant