KR102651127B1 - 처리 장치 및 데이터를 처리하는 방법 - Google Patents

처리 장치 및 데이터를 처리하는 방법 Download PDF

Info

Publication number
KR102651127B1
KR102651127B1 KR1020160171664A KR20160171664A KR102651127B1 KR 102651127 B1 KR102651127 B1 KR 102651127B1 KR 1020160171664 A KR1020160171664 A KR 1020160171664A KR 20160171664 A KR20160171664 A KR 20160171664A KR 102651127 B1 KR102651127 B1 KR 102651127B1
Authority
KR
South Korea
Prior art keywords
task
processing device
packets
data
packet
Prior art date
Application number
KR1020160171664A
Other languages
English (en)
Other versions
KR20180069460A (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 KR1020160171664A priority Critical patent/KR102651127B1/ko
Priority to US15/635,699 priority patent/US10432485B2/en
Publication of KR20180069460A publication Critical patent/KR20180069460A/ko
Application granted granted Critical
Publication of KR102651127B1 publication Critical patent/KR102651127B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/70Routing based on monitoring results
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/028Capturing of monitoring data by filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

복수의 모듈들 중 전송 모듈 및 수신 모듈 간에 교환되는 패킷들을 모니터링하고, 모니터링된 패킷들에 기초하여 처리 장치에 의해 실행되고 있는 작업이 전환되었는지를 판단하며, 처리 장치에 의해 실행되고 있는 작업이 전환된 경우, 전환된 작업에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션(transition)을 고려하여 인코딩된 패킷 레이아웃을 획득하고, 획득된 패킷 레이아웃이 적용된 데이터 패킷들을 이용하여 전환된 작업을 실행함으로써 처리 장치 내 복수의 모듈들 간에 데이터를 처리하는 방법 및 처리 장치를 제공할 수 있다.

Description

처리 장치 및 데이터를 처리하는 방법{Processing device and method for processing data}
처리 장치 및 처리 장치 내 복수의 모듈들 간에 데이터를 처리하는 방법에 관한 것이다.
시스템 온 칩(System On Chip, SOC)은 프로세서, 하드웨어 가속기, 메모리 등과 같은 다양한 모듈들을 통합한 것으로서, 각 모듈들 간에 서로 데이터를 주고 받기 위하여는 온-칩 통신 매개체가 필요하게 된다. 네트워크-온-칩(NOC)의 시스템은 칩 내부에 데이터 전송을 중계하는 라우터(Router)들을 배치시켜 모듈들 간에 분산적인 데이터 전송을 가능하게 하는 기술이다.
네트워크-온-칩 시스템에서 하나의 모듈은 복수의 다른 모듈들과 동시다발적으로 데이터를 교환하므로, 하나의 모듈에 의해 수신될 데이터의 순서는 예측되기 어렵다. 따라서, 직전 데이터와 직후 데이터를 비교하여 비트 간 트랜지션(transition) 수를 줄이는 종래의 버스 인코딩(Bus encoding) 기술은 네트워크-온-칩 시스템에 적용되는 것이 어려울 수 있다. 네트워크-온-칩 시스템에서 데이터 패킷들의 처리에 의해 발생될 트랜지션의 수를 감소시킴으로써 전력 소모를 줄이는 방법이 요구된다.
다양한 실시예들은 처리 장치 및 처리 장치 내 복수의 모듈들 간에 데이터를 처리하는 방법을 제공하는데 있다. 본 개시가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
상술한 기술적 과제를 해결하기 위한 수단으로서, 일 측면에 따른 처리 장치 내 복수의 모듈들 간에 데이터를 처리하는 방법은, 상기 복수의 모듈들 중 전송 모듈 및 수신 모듈 간에 교환되는 패킷들을 모니터링하는 단계; 상기 모니터링된 패킷들에 기초하여 상기 처리 장치에 의해 실행되고 있는 작업이 전환되었는지를 판단하는 단계; 상기 처리 장치에 의해 실행되고 있는 작업이 전환된 경우, 상기 전환된 작업에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션(transition)을 고려하여 인코딩된 패킷 레이아웃을 획득하는 단계; 및 상기 획득된 패킷 레이아웃이 적용된 데이터 패킷들을 이용하여 상기 전환된 작업을 실행하는 단계를 포함할 수 있다.
또한, 다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 기록매체를 포함할 수 있다.
또한, 또 다른 측면에 따른 처리 장치는, 상황에 따라 전송 모듈 또는 수신 모듈로 동작 가능한 복수의 모듈들; 및 상기 복수의 모듈들 중 전송 모듈 및 수신 모듈 간에 교환되는 패킷들을 모니터링하고, 상기 모니터링된 패킷들에 기초하여 상기 처리 장치에 의해 실행되고 있는 작업이 전환되었는지를 판단하며, 상기 처리 장치에 의해 실행되고 있는 작업이 전환된 경우, 상기 전환된 작업에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션을 고려하여 인코딩된 패킷 레이아웃을 획득하고, 상기 획득된 패킷 레이아웃이 적용된 데이터 패킷들을 이용하여 상기 전환된 작업을 실행하는 제어 모듈을 포함할 수 있다.
도 1은 일 실시예에 따른 네트워크-온-칩 시스템의 예시를 나타내는 도면이다.
도 2는 일 실시예에 따른 패킷 인코딩에 따른 패킷들의 처리에 의해 발생될 트랜지션 수의 변화를 나타내는 도면이다.
도 3은 일 실시예에 따른 처리 장치 내 복수의 모듈들 간에 데이터를 처리하는 방법의 흐름도이다.
도 4는 일 실시예에 따른 특정 작업에 최적화된 패킷 레이아웃을 정의하는 방법의 흐름도이다.
도 5는 일 실시예에 따른 패킷 인코딩의 예시를 나타내는 도면이다.
도 6은 일 실시예에 따른 처리 장치의 구성을 나타내는 블록도이다.
도 7은 일 실시예에 따른 처리 장치의 구성을 나타내는 도면이다.
도 8은 일 실시예에 따른 GPU의 구성을 나타내는 블록도이다.
도 9는 일 실시예에 따른 드로우콜의 유형 별로 최적화된 패킷 레이아웃을 적용하는 방법의 예시를 나타내는 도면이다.
이하 첨부된 도면을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다. 하기 설명은 실시예들을 구체화하기 위한 것일 뿐 발명의 권리 범위를 제한하거나 한정하는 것이 아님은 물론이다. 상세한 설명 및 실시예로부터 당해 기술분야의 전문가가 용이하게 유추할 수 있는 것은 권리범위에 속하는 것으로 해석된다.
본 명세서에서 사용되는 '구성된다' 또는 '포함한다' 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 또한, 명세서에 기재된 “...부”, “모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
본 실시예들은 처리 장치 내 복수의 모듈들 간에 데이터를 처리하는 방법 및 장치에 관한 것으로서 이하의 실시예들이 속하는 기술 분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서는 자세한 설명을 생략한다.
도 1은 일 실시예에 따른 네트워크-온-칩 시스템의 예시를 나타내는 도면이다.
도 1을 참조하면, 네트워크-온-칩 시스템(10)은 복수의 모듈들 및 복수의 라우터들을 포함할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 네트워크-온-칩 시스템(10)은 모듈 A1 내지 A4, 모듈 B1 내지 B4, 모듈 C1 내지 C4 및 모듈 D1 내지 D4의 총 16개의 모듈들을 포함할 수 있고, 16개의 라우터들을 포함할 수 있다. 도 1에서 R로 표시된 구성이 라우터일 수 있다. 도 1의 네트워크-온-칩 시스템(10)의 구조는 예시에 불과하며, 본 실시예들은 네트워크-온-칩을 이용하는 시스템이라면 모두 적용될 수 있다.
네트워크-온-칩 시스템(10)은 처리 장치 내 하드웨어 컴포넌트들 간에 데이터를 송수신할 수 있도록 하드웨어 컴포넌트들을 연결시켜 주는 커뮤니케이션 시스템이다. 다시 말하면, 네트워크-온-칩은 칩 내에 다수의 IP(Intellectual Property) 모듈 간에 라우터를 통해 네트워킹함으로써 데이터를 처리할 수 있는 기술로써 구현된 것을 의미할 수 있다.
모듈은 네트워크-온-칩을 이용하여 데이터를 전송 또는 수신하는 하드웨어일 수 있다. 모듈은 네트워크-온-칩 시스템(10)의 IP 모듈일 수 있다. 예를 들어, 모듈들 각각은 프로세서, 하드웨어 가속기, 메모리, 스케줄러 등에 해당될 수 있다. 또한, 모듈들 각각은 프로세서 단위, 메모리 단위 등을 의미할 수도 있다.
모듈은 상황에 따라 전송 모듈 또는 수신 모듈이 될 수 있다. 예를 들어, 모듈이 데이터를 전송하는 경우 전송 모듈이 될 수 있고, 모듈이 데이터를 수신하는 경우 수신 모듈이 될 수 있다.
라우터는 네트워크-온-칩 시스템(10)에서 각 모듈 간에 데이터의 송수신을 제어하는 하드웨어일 수 있다. 예를 들어, 모듈 A1이 모듈 C3에게 데이터 패킷을 전송하고자 할 때, 라우터들은 데이터 패킷에 기록된 목적지 정보에 기초하여 데이터 패킷을 모듈 A1에서 모듈 C3로 전달할 수 있다.
도 1에 도시된 바와 같이 네트워크-온-칩 시스템(10)에는 복수의 모듈들이 포함되고, 복수의 모듈들 간에 동시다발적으로 데이터가 교환되므로, 임의의 수신 모듈에 의해 수신될 데이터의 순서는 예측되기 어렵다. 예를 들어, 모듈 A1이 모듈 C3에게 데이터를 전송할 때, 모듈 A2도 모듈 C3에게 데이터를 전송하는 경우를 가정해볼 수 있다. 모듈 A1이 전송한 데이터 및 모듈 A2가 전송한 데이터 중 어느 데이터를 모듈 C3가 먼저 수신할지는 상황에 따라 달라질 수 있다.
네트워크-온-칩 시스템(10)에서는 처리될 데이터의 순서 예측이 어려우므로, 데이터 패킷들의 처리에 의해 발생될 트랜지션(transition)의 수를 감소시키기 위해서는 통계적인 방법이 선호될 수 있다. 트랜지션이란, 디지털 신호의 상태가 논리 1에서 0으로 또는 그 역으로 변화하는 것을 의미할 수 있다. 아래에서는 데이터 패킷들의 처리에 의해 발생될 트랜지션의 수를 감소시킴으로써 처리 장치의 전력 소모를 감소시키는 실시예들에 대해 설명하도록 한다.
도 2는 일 실시예에 따른 패킷 인코딩에 따른 패킷들의 처리에 의해 발생될 트랜지션 수의 변화를 나타내는 도면이다.
도 2를 참조하면, 패킷 레이아웃(200)이 적용된 패킷들인 Packet 0, Packet 1 및 Packet 2와 패킷 레이아웃(250)이 적용된 패킷들인 Packet 0’, Packet 1’및 Packet 2’이 도시되어 있다.
패킷 레이아웃(packet layout)이란 패킷에 포함되는 데이터 비트들의 배치를 의미할 수 있다. 패킷 레이아웃은 패킷 정의(packet definition)에 의해 결정될 수 있다. 예를 들어, 패킷 레이아웃(200)이 적용된 패킷들 중 Packet 0는 목적지 정보를 나타내는 데이터(201), 제어 정보를 나타내는 데이터(202), 패킷 구성 정보를 나타내는 데이터(203) 및 모듈 특성 정보를 나타내는 데이터(204)의 순서로 배치되도록 정의될 수 있다.
한편, 패킷에 포함되는 데이터 비트들은 복수 개의 채널들을 통해 병렬적으로 전송될 수 있다. 예를 들어, Packet 0에 포함된 22개의 데이터 비트들인 1011000001001001101101은 22개의 채널들을 통해 병렬적으로 전송될 수 있다.
또한, 서로 다른 패킷들에서 동일한 위치의 데이터 비트들은 동일한 채널을 통해 전송될 수 있다. 예를 들어, Packet 0 다음에 Packet 1이 전송되는 경우, Packet 1의 첫 번째 비트인 0은 Packet 0의 첫 번째 비트인 1 과 동일한 채널을 통해 전송될 수 있다.
따라서, 서로 다른 패킷들에 포함되는 데이터 비트들이 각각의 채널을 통해 전송됨에 따라 데이터 비트들의 각 위치에서 트랜지션이 발생될 수 있다. 예를 들어, Packet 0 다음에 Packet 1이 전송되는 경우, Packet 0의 첫 번째 비트인 1이 전송된 후 Packet 1의 첫 번째 비트인 0이 전송되므로 1에서 0으로의 트랜지션이 발생된다.
표(205)는 Packet 0, Packet 1 및 Packet 2의 순서로 패킷들이 전송될 때, 데이터 비트들의 모든 위치들에서 발생될 트랜지션의 수를 나타낸다. 예를 들어, Packet 0, Packet 1 및 Packet 2의 첫 번째 비트 위치를 살펴보면, 데이터 비트들이 1, 0, 0 순서로 전송되므로, 1에서 0으로의 1번의 트랜지션이 발생된다. Packet 0, Packet 1 및 Packet 2의 세 번째 비트 위치를 살펴보면, 데이터 비트들이 1, 0, 1 순서로 전송되므로, 1에서 0으로의 트랜지션 및 0에서 1로의 트랜지션을 포함하는 2번의 트랜지션이 발생된다.
표(205)를 살펴보면, 패킷 레이아웃(200)이 적용된 패킷들이 전송됨에 따라 첫 번째 비트 위치에서 1번의 트랜지션, 두 번째 비트 위치에서 0번의 트랜지션, 세 번째 비트 위치에서 2번의 트랜지션 등을 포함하여 총 30번의 트랜지션이 발생될 수 있다.
한편, 패킷들에 적용되는 패킷 레이아웃이 변경됨에 따라 패킷들의 처리에 의해 발생될 트랜지션의 수는 변할 수 있다. 패킷들에 적용되는 패킷 레이아웃의 변경은 패킷 인코딩(Packet encoding) 또는 패킷 재정의(Packet redefinition)에 의해 수행될 수 있다. 예를 들어, 패킷 인코딩 또는 패킷 재정의는 패킷의 크기를 변경하지 않으면서 패킷들에 포함되는 데이터 비트들의 배치를 변경하는 과정일 수 있다.
패킷 레이아웃(250)이 적용된 패킷들은 패킷 레이아웃(200) 적용된 패킷들이 기 설정된 기준에 따라 인코딩된 것일 수 있다. 예를 들어, 패킷 레이아웃(250)이 적용된 패킷들 중 Packet 0’는 Packet 0와는 달리 제어 정보를 나타내는 데이터(202), 목적지 정보를 나타내는 데이터(201), 모듈 특성 정보를 나타내는 데이터(204) 및 패킷 구성 정보를 나타내는 데이터(203)의 순서로 배치되도록 인코딩된 것일 수 있다.
표(255)는 Packet 0’, Packet 1’ 및 Packet 2’의 순서로 패킷들이 전송될 때, 데이터 비트들의 모든 위치들에서 발생될 트랜지션의 수를 나타낸다. 표(255)를 살펴보면, 패킷 레이아웃(250)이 적용된 패킷들이 전송됨에 따라 첫 번째 비트 위치에서 0번의 트랜지션, 두 번째 비트 위치에서 2번의 트랜지션, 세 번째 비트 위치에서 2번의 트랜지션 등을 포함하여 총 20번의 트랜지션이 발생될 수 있다.
패킷 레이아웃(200)이 패킷 레이아웃(250)으로 변경됨에 따라 패킷들의 처리에 의해 발생될 트랜지션의 총합은 30개에서 20개로 감소될 수 있다. 데이터 비트가 그 값을 1 또는 0으로 유지하는 경우보다 트랜지션이 발생되는 경우에 데이터의 처리에 의해 발생되는 전력 소모가 더 클 수 있다. 따라서, 처리 장치의 전력 소모를 줄이기 위해서는, 데이터 패킷들의 처리에 의해 발생될 트랜지션의 수를 감소시킬 필요가 있다.
도 3은 일 실시예에 따른 처리 장치 내 복수의 모듈들 간에 데이터를 처리하는 방법의 흐름도이다.
도 3을 참조하면, 단계 310에서, 처리 장치는 복수의 모듈들 중 전송 모듈 및 수신 모듈 간에 교환되는 패킷들을 모니터링할 수 있다. 복수의 모듈들 중 데이터를 전송하는 모듈은 전송 모듈일 수 있고, 데이터를 수신하는 모듈은 수신 모듈일 수 있다. 복수의 모듈들은 패킷들을 교환함으로써 데이터를 처리하고, 어플리케이션을 실행에 필요한 동작을 수행할 수 있다.
처리 장치는 전송 모듈 및 수신 모듈 간에 교환되는 패킷들을 모니터링할 수 있다. 예를 들어, 처리 장치는 하나 이상의 전송 모듈이 전송하는 패킷들을 모니터링할 수 있다. 또한, 처리 장치는 하나 이상의 수신 모듈이 수신하는 패킷들을 모니터링할 수 있다. 특정한 작업이 처리 장치에 의해 실행될 때, 특정한 전송 모듈 또는 특정한 수신 모듈에 의해 처리되는 데이터 패킷들의 수가 급격하게 증가할 수 있다. 이 경우, 처리 장치는 그 특정한 전송 모듈 또는 특정한 수신 모듈에 의해 처리되는 패킷들을 모니터링할 수 있다.
단계 320에서, 처리 장치는 모니터링된 패킷들에 기초하여 처리 장치에 의해 실행되고 있는 작업이 전환되었는지를 판단할 수 있다. 처리 장치에 의해 실행되고 있는 작업은 어플리케이션에 대응할 수 있다. 예를 들어, 처리 장치는 처리 장치에 의해 실행되고 있는 작업이 게임 어플리케이션에서 사무용 어플리케이션으로 전환되었는지를 판단할 수 있다.
또한, 처리 장치에 의해 실행되고 있는 작업은 어플리케이션의 실행에 수반되는 하위 작업에 대응할 수 있다. 예를 들어, 처리 장치가 사무용 어플리케이션을 실행하고 있을 때, 처리 장치는 글자를 입력하는 작업에서 도형을 삽입하는 작업으로 전환되었는지를 판단할 수 있다.
처리 장치가 GPU(Graphic Processing Unit)인 경우, 처리 장치에 의해 실행되고 있는 작업은 그래픽스 파이프라인들에 의해 처리되는 오브젝트에 대응하는 드로우콜(drawcall)일 수 있다. 드로우콜은 오브젝트를 렌더링하기 위한 요청을 의미할 수 있다. CPU(Central Processing Unit)는 GPU에게 드로우콜을 전송하여 특정한 오브젝트를 렌더링할 것을 요청할 수 있다. GPU는 모니터링된 패킷들에 기초하여 드로우콜이 전환되었는지를 판단할 수 있다.
한편, 처리 장치는 모니터링된 패킷들에 포함되는 데이터 비트들의 특성 변화에 기초하여 처리 장치에 의해 실행되고 있는 작업이 전환되었는지를 판단할 수 있다. 예를 들어, 처리 장치는 모니터링된 패킷들에 포함되는 데이터 비트들 중 미리 정의된 위치의 데이터 비트의 값이 1일 확률이 기 설정된 확률을 초과하는 경우 처리 장치에 의해 실행되고 있는 작업이 전환된 것으로 판단할 수 있다.
미리 정의된 위치의 데이터 비트는 처리 장치의 사용환경에 따라 달라질 수 있다. 예를 들어, 미리 정의된 위치의 데이터 비트는 데이터 패킷의 상위 5개 비트일 수 있고, 데이터 패킷의 최상위 비트일 수도 있다. 미리 정의된 위치는 처리 장치에 의해 실행되고 있는 작업이 전환되었을 때 특성이 급격하게 변화하는 데이터 비트들에 대응하는 위치일 수 있다. 미리 정의된 위치는 실험적으로 결정될 수 있고, 사용자 입력에 의해 결정될 수도 있다.
기 설정된 확률은 처리 장치에 의해 실행되고 있는 작업이 전환된 것으로 판단하기 위한 임계값일 수 있다. 예를 들어, 처리 장치는 모니터링된 패킷들에 포함되는 최상위 비트가 1일 확률이 90%로 초과하는 경우, 처리 장치에 의해 실행되고 있는 작업이 게임 어플리케이션에서 사무용 어플리케이션으로 전환되었다고 판단할 수 있다. 기 설정된 확률은 실험적으로 결정될 수 있고, 사용자 입력에 의해 결정될 수도 있다.
또한, 처리 장치는 모니터링된 패킷들에 포함되는 데이터 비트들 중 미리 정의된 위치의 데이터 비트의 값이 0일 확률이 기 설정된 확률을 초과하는 경우 처리 장치에 의해 실행되고 있는 작업이 전환된 것으로 판단할 수 있다. 예를 들어, 처리 장치는 모니터링된 패킷들에 포함되는 최상위 비트가 0일 확률이 90%를 초과하는 경우, 처리 장치에 의해 실행되고 있는 작업이 사무용 어플리케이션에서 게임 어플리케이션으로 전환되었다고 판단할 수 있다.
어플리케이션마다 어플리케이션이 실행될 때 처리 장치 내 복수의 모듈들 간에 교환되는 패킷들의 특성이 다르므로, 처리 장치는 패킷들을 모니터링함으로써 처리 장치에 의해 실행되고 있는 작업이 전환되었는지를 판단할 수 있다.
단계 330에서, 처리 장치는 처리 장치에 의해 실행되고 있는 작업이 전환된 경우, 전환된 작업에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션을 고려하여 인코딩된 패킷 레이아웃을 획득할 수 있다. 획득된 패킷 레이아웃은, 전환된 작업이 실행되는 동안 획득된 패킷 레이아웃이 적용된 서로 다른 패킷들에 포함되는 동일한 위치의 데이터 비트들 간의 트랜지션이 최소화되도록 결정된 것일 수 있다.
처리 장치는 복수의 기 정의된 패킷 레이아웃들 중에 전환된 작업에 대응하는 패킷 레이아웃을 선택할 수 있다. 복수의 기 정의된 패킷 레이아웃들은, 처리 장치에 의해 실행 가능한 작업들마다, 작업에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션을 고려하여 미리 정의된 것일 수 있다.
예를 들어, 게임 어플리케이션에 대한 데이터 패킷들의 처리에 의해 발생된 트랜지션을 고려하여 패킷 레이아웃 A가 미리 정의되어 있을 수 있다. 처리 장치는 처리 장치에 의해 실행되고 있는 작업이 게임 어플리케이션으로 전환되었다고 판단함에 따라 패킷 레이아웃 A를 획득할 수 있다. 패킷 레이아웃 A는 게임 어플리케이션이 실행되는 동안 처리되는 패킷들에 포함되는 데이터 비트들 간의 트랜지션이 최소화되도록 미리 결정된 것일 수 있다.
처리 장치에 의해 실행 가능한 작업들은 기 설정된 기준에 따라 그룹들로 구분될 수 있다. 복수의 기 설정된 패킷 레이아웃들은, 구분된 그룹들 각각에 대응되도록 미리 정의된 것일 수 있다. 예를 들어, 게임 어플리케이션 1 내지 4는 그룹 1로, 게임 어플리케이션 5 내지 8은 그룹 2로 구분될 수 있다. 또한, 그룹 1의 어플리케이션들에 대응되도록 패킷 레이아웃 A가 미리 정의되고, 그룹 2의 어플리케이션들에 대응되도록 패킷 레이아웃 B가 미리 정의될 수 있다. 각 그룹에 포함되는 어플리케이션들은 처리 장치에 의해 실행될 때 복수의 모듈들 간에 교환되는 패킷들의 특성이 유사한 어플리케이션들일 수 있다.
복수의 기 정의된 패킷 레이아웃들 각각을 정의하는 방법은 도 4를 참조하여 아래에서 상세히 설명될 것이다.
단계 340에서, 처리 장치는 획득된 패킷 레이아웃이 적용된 데이터 패킷들을 이용하여 전환된 작업을 실행할 수 있다. 처리 장치는 전환된 작업에 대응하는 데이터 패킷들의 패킷 레이아웃을 단계 330에서 획득된 패킷 레이아웃으로 변경할 수 있다.
획득된 패킷 레이아웃은 전환된 작업이 실행되는 동안 획득된 패킷 레이아웃이 적용된 서로 다른 패킷들에 포함되는 동일한 위치의 데이터 비트들 간의 트랜지션이 최소화되도록 결정된 것이므로, 처리 장치는 전환된 작업에 대한 데이터의 처리에 의해 발생될 트랜지션을 감소시킬 수 있다.
처리 장치는 전환된 작업에 최적화된 패킷 레이아웃을 선택함으로써, 데이터 패킷들의 처리에 의해 발생될 트랜지션의 수를 감소시키고, 전력 소모를 줄일 수 있다.
도 4는 일 실시예에 따른 특정 작업에 최적화된 패킷 레이아웃을 정의하는 방법의 흐름도이다.
도 4를 참조하면, 단계 410에서, 처리 장치는 제 1 작업을 기 설정된 기간 동안 실행시킬 수 있다. 제 1 작업은 최적화된 패킷 레이아웃이 적용될 필요가 있는 임의의 작업을 의미할 수 있다. 제 1 작업은 임의의 어플리케이션에 대응하거나, 또는 어플리케이션의 실행에 수반되는 임의의 하위 작업에 대응할 수 있다.
단계 420에서, 처리 장치는 제 1 작업이 실행되는 동안 복수의 모듈들에 의해 처리되는 패킷들을 수집할 수 있다. 복수의 모듈들에 의해 처리되는 패킷들은 복수의 모듈들 중 하나 이상의 전송 모듈이 전송하는 패킷들 및/또는 복수의 모듈들 중 하나 이상의 수신 모듈이 수신하는 패킷들을 포함할 수 있다.
처리 장치는 제 1 작업이 실행되는 기 설정된 기간 동안 패킷들을 수집할 수 있다. 예를 들어, 처리 장치는 제 1 작업을 실행시키고, 10초 동안 패킷들을 수집할 수 있다. 처리 장치는 최적화된 패킷 레이아웃을 정의하기에 충분한 시간 동안 패킷들을 수집할 수 있다.
단계 430에서, 처리 장치는 수집된 패킷들에서 데이터 비트들의 위치들마다 비트 값이 1인 횟수를 카운트할 수 있다. 예를 들어, 처리 장치는 수집된 패킷들에서 첫 번째 위치의 비트들의 비트 값이 1인 횟수를 카운트할 수 있고, 계속해서 나머지 위치의 비트들의 비트 값이 1인 횟수를 카운트할 수 있다. 한편, 처리 장치는 수집된 패킷들에서 데이터 비트들의 위치들마다 비트 값이 0인 횟수를 카운트할 수도 있다.
단계 440에서, 처리 장치는 카운트된 횟수에 기초하여 데이터 비트들의 위치들의 순서를 재구성할 수 있다. 처리 장치는 카운트된 횟수에 따라 오름차순 또는 내림차순으로 데이터 비트들의 위치들을 정렬할 수 있다. 예를 들어, 처리 장치가 3개의 데이터 비트들을 포함하는 패킷들 10개를 수집하였고, 첫 번째 위치의 비트들의 비트 값이 1인 횟수가 7개, 두 번째 위치의 비트들의 비트 값이 1인 횟수가 9개, 세 번째 위치의 비트들의 비트값이 1인 횟수가 8개인 경우를 생각해볼 수 있다. 처리 장치는 두 번째 위치의 비트들, 세 번째 위치의 비트들 및 첫 번째 위치의 비트들 순서로 데이터 비트들의 위치들의 순서를 재구성할 수 있다.
한편, 처리 장치는 카운트된 횟수에 기초하여 데이터 비트들의 위치들마다 비트 값이 1일 확률을 계산하고, 계산된 확률에 기초하여 데이터 비트들의 위치들의 순서를 재구성할 수 있다. 앞선 예에서, 첫 번째 위치의 비트들의 비트 값이 1인 횟수가 10개 중 7개이므로, 첫 번째 위치의 비트들의 비트 값이 1일 확률은 70%로 계산될 수 있다. 같은 방식으로, 두 번째 위치의 비트들의 비트 값이 1 일 확률은 90%로 계산될 수 있고, 세 번째 위치의 비트들의 비트 값이 1일 확률은 80%로 계산될 수 있다. 처리 장치는 계산된 확률에 기초하여 두 번째 위치의 비트들, 세 번째 위치의 비트들 및 첫 번째 위치의 비트들 순서로 데이터 비트들의 위치들의 순서를 재구성할 수 있다.
단계 450에서, 처리 장치는 재구성된 위치들의 순서에 기초하여 제 1 작업에 대응하는 패킷 레이아웃을 정의할 수 있다. 단계 440을 통해 정의된 패킷 레이아웃이 적용된 패킷들에 포함되는 데이터 비트들 중 최상위 비트는 그 값이 1일 확률이 가장 높은 비트일 수 있다. 또한, 최하위 비트는 그 값이 1일 확률이 가장 낮은 비트일 수 있다.
따라서, 처리 장치에 의해 처리되는 모든 패킷들에게 도 4의 방법에 의해 정의된 패킷 레이아웃이 적용되면, 모든 패킷들에 포함되는 데이터 비트들 중 최상위 비트는 높은 확률로 1일 것이고, 최상위 비트들이 전송되면서 발생되는 트랜지션의 수는 최소화될 수 있다. 또한, 최하위 비트는 높은 확률로 0일 것이고, 최하위 비트들이 전송되면서 발생되는 트랜지션의 수도 최소화될 수 있다.
처리 장치는 특정 작업이 실행되는 동안 서로 다른 패킷들에 포함되는 동일한 위치의 데이터 비트들 간의 트랜지션이 최소화되도록 패킷 레이아웃을 결정할 수 있다. 따라서, 처리 장치가 특정 작업을 실행할 때 발생되는 전력 소모는 감소될 수 있다.
한편, 도 4의 방법을 수행하는 처리 장치는 도 3의 방법을 수행하는 처리 장치와 동일할 수 있다. 예를 들어, 처리 장치는 특정 작업에 최적화된 패킷 레이아웃을 미리 정의할 수 있고, 처리 장치에 의해 실행되는 작업이 그 특정 작업으로 전환되었다고 판단하면 미리 정의된 패킷 레이아웃을 선택할 수 있다.
또한, 도 4의 방법을 수행하는 처리 장치는 도 3의 방법을 수행하는 처리 장치와 별도의 다른 장치일 수도 있다. 예를 들어, 도 4의 방법을 수행하는 별도의 처리 장치는 특정 작업에 최적화된 패킷 레이아웃을 정의하는 작업만을 수행하는 장치일 수 있다. 이 후, 도 3의 방법을 수행하는 처리 장치는 별도의 처리 장치에 의해 기 정의된 패킷 레이아웃들 중 특정 작업에 최적화된 패킷 레이아웃을 선택하는 동작만을 수행하는 장치일 수 있다.
도 5는 일 실시예에 따른 패킷 인코딩의 예시를 나타내는 도면이다.
도 5를 참조하면, 처리 장치가 도 4의 방법을 이용하여 패킷을 인코딩하는 과정의 예시가 도시되어 있다.
처리 장치는 제 1 작업이 실행되는 동안 복수의 모듈들에 의해 처리되는 패킷들을 수집할 수 있다. 예를 들어, 도 5에 도시된 것과 같이, 처리 장치는 기 설정된 기간 동안 10개의 패킷들(500)을 수집할 수 있다.
처리 장치는 수집된 패킷들(500)에서 데이터 비트들의 위치들마다 비트 값이 1인 횟수를 카운트할 수 있다. 예를 들어, 처리 장치는 첫 번째 위치의 비트들의 비트 값이 1인 횟수를 4개로 카운트할 수 있고, 두 번째 위치의 비트들의 비트 값이 1인 횟수를 5개로 카운트할 수 있다. 또한, 처리 장치는 계속해서 나머지 위치의 비트들의 비트 값이 1인 횟수를 카운트할 수 있다.
처리 장치는 카운트된 횟수에 기초하여 데이터 비트들의 위치들마다 비트 값이 1일 확률을 계산할 수 있다. 예를 들어, 도 5에 도시된 것과 같이, 처리 장치는 첫 번째 위치의 비트들부터 열 번째 위치의 비트들까지 비트 값이 1일 확률을 각각 40%, 50%, 70%, 0%, 30%, 80%, 90%, 60%, 20% 및 10%로 계산할 수 있다.
처리 장치는 카운트된 횟수에 기초하여 데이터 비트들의 위치들의 순서를 재구성할 수 있다. 처리 장치는 카운트된 횟수에 따라 오름차순 또는 내림차순으로 데이터 비트들의 위치들을 정렬할 수 있다. 예를 들어, 도 5에 도시된 것과 같이, 일곱 번째 위치의 비트들(505)의 비트 값이 1일 확률이 90%로 가장 높은 경우, 일곱 번째 위치의 비트들(505)이 첫 번째 위치로 오도록 정렬할 수 있다. 이 경우, 처리 장치는 카운트된 횟수에 따라 내림차순으로 데이터 비트들의 위치를 정렬한 것일 수 있다.
처리 장치는 재구성된 위치들의 순서에 기초하여 제 1 작업에 대응하는 패킷 레이아웃을 정의할 수 있다. 새롭게 정의된 패킷 레이아웃이 적용된 패킷들(550)을 살펴보면, 데이터 비트들의 비트 값이 1일 확률이 높은 순서대로 데이터 비트들이 정렬된 것을 알 수 있다.
따라서, 처리 장치에 의해 처리되는 모든 패킷들이 도 5와 같이 인코딩되면, 모든 패킷들에 포함되는 데이터 비트들 중 최상위 비트는 높은 확률로 1일 것이고, 최상위 비트들이 전송되면서 발생되는 트랜지션의 수는 최소화될 수 있다. 또한, 최하위 비트는 높은 확률로 0일 것이고, 최하위 비트들이 전송되면서 발생되는 트랜지션의 수도 최소화될 수 있다.
도 6은 일 실시예에 따른 처리 장치의 구성을 나타내는 블록도이다.
도 6에 도시된 바와 같이, 처리 장치(60)는 제어 모듈(610), 라우터들(620) 및 복수의 모듈들(630)을 포함할 수 있다. 복수의 모듈들(630)은 전송 모듈들(632) 및 수신 모듈들(634)을 포함할 수 있다.
복수의 모듈들(630)은 네트워크-온-칩을 이용하여 데이터를 전송 또는 수신하는 하드웨어일 수 있다. 복수의 모듈들(630)은 네트워크-온-칩 시스템(도 1의 10)의 IP 모듈들에 대응할 수 있다. 예를 들어, 복수의 모듈들(630) 각각은 프로세서, 하드웨어 가속기, 메모리, 스케줄러 등에 해당될 수 있다. 또한, 복수의 모듈들(630) 각각은 프로세서 단위, 메모리 단위 등을 의미할 수도 있다.
전송 모듈들(632)은 복수의 모듈들(630) 중 데이터를 전송하는 모듈들을 의미할 수 있다. 또한, 수신 모듈들(634)은 복수의 모듈들(630) 중 데이터를 수신하는 모듈들을 의미할 수 있다. 복수의 모듈들(630) 각각은 상황에 따라 전송 모듈 또는 수신 모듈로 동작할 수 있다. 라우터들(620)는 네트워크-온-칩 시스템(도 1의 10)에서 각 모듈 간에 데이터의 송수신이 이루어지도록 제어하는 하드웨어일 수 있다.
제어 모듈(610)은 하나 또는 복수 개의 프로세서에 의하여 구현될 수 있다. 예를 들어, 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수 있고, 범용적인 마이크로 프로세서와 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 제어 모듈(610)은 처리 장치(60)를 제어하기 위한 전반적인 역할을 할 수 있다.
제어 모듈(610)은 처리 장치(60)에 의해 실행되고 있는 작업이 전환됨에 따라 전환된 작업에 최적화된 패킷 레이아웃을 선택할 수 있다. 제어 모듈(610)은 전송 모듈 및 수신 모듈 간에 교환되는 패킷들을 모니터링할 수 있다. 예를 들어, 제어 모듈(610)은 하나 이상의 전송 모듈이 전송하는 패킷들을 모니터링할 수 있다. 또한, 제어 모듈(610)은 하나 이상의 수신 모듈이 수신하는 패킷들을 모니터링할 수 있다.
제어 모듈(610)은 모니터링된 패킷들에 기초하여 처리 장치(60)에 의해 실행되고 있는 작업이 전환되었는지를 판단할 수 있다. 처리 장치(60)에 의해 실행되고 있는 작업은 어플리케이션에 대응할 수 있다. 또한, 처리 장치(60)에 의해 실행되고 있는 작업은 어플리케이션의 실행에 수반되는 하위 작업에 대응할 수 있다.
한편, 제어 모듈(610)은 모니터링된 패킷들에 포함되는 데이터 비트들의 특성 변화에 기초하여 처리 장치(60)에 의해 실행되고 있는 작업이 전환되었는지를 판단할 수 있다. 예를 들어, 제어 모듈(610)은 모니터링된 패킷들에 포함되는 데이터 비트들 중 미리 정의된 위치의 데이터 비트의 값이 1일 확률이 기 설정된 확률을 초과하는 경우 처리 장치(60)에 의해 실행되고 있는 작업이 전환된 것으로 판단할 수 있다.
제어 모듈(610)은 처리 장치(60)에 의해 실행되고 있는 작업이 전환된 경우, 전환된 작업에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션을 고려하여 인코딩된 패킷 레이아웃을 획득할 수 있다. 획득된 패킷 레이아웃은, 전환된 작업이 실행되는 동안 획득된 패킷 레이아웃이 적용된 서로 다른 패킷들에 포함되는 동일한 위치의 데이터 비트들 간의 트랜지션이 최소화되도록 결정된 것일 수 있다.
제어 모듈(610)은 복수의 기 정의된 패킷 레이아웃들 중에 전환된 작업에 대응하는 패킷 레이아웃을 선택할 수 있다. 복수의 기 정의된 패킷 레이아웃들은, 처리 장치(60)에 의해 실행 가능한 작업들마다, 작업에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션을 고려하여 미리 정의된 것일 수 있다.
한편, 처리 장치(60)에 의해 실행 가능한 작업들은 기 설정된 기준에 따라 그룹들로 구분될 수 있다. 복수의 기 설정된 패킷 레이아웃들은, 구분된 그룹들 각각에 대응되도록 미리 정의된 것일 수 있다.
제어 모듈(610)은 획득된 패킷 레이아웃이 적용된 데이터 패킷들을 이용하여 전환된 작업을 실행할 수 있다. 획득된 패킷 레이아웃은 전환된 작업이 실행되는 동안 획득된 패킷 레이아웃이 적용된 서로 다른 패킷들에 포함되는 동일한 위치의 데이터 비트들 간의 트랜지션이 최소화되도록 결정된 것이므로, 제어 모듈(610)은 전환된 작업에 대한 데이터의 처리에 의해 발생될 트랜지션을 감소시킬 수 있다.
한편, 제어 모듈(610)은 특정 작업에 최적화된 패킷 레이아웃을 정의할 수 있다. 제어 모듈(610)은 제 1 작업을 기 설정된 기간 동안 실행시킬 수 있다. 제 1 작업은 임의의 어플리케이션에 대응하거나, 또는 어플리케이션의 실행에 수반되는 임의의 하위 작업에 대응할 수 있다.
제어 모듈(610)은 제 1 작업이 실행되는 동안 복수의 모듈들에 의해 처리되는 패킷들을 수집할 수 있다. 복수의 모듈들에 의해 처리되는 패킷들은 복수의 모듈들 중 하나 이상의 전송 모듈이 전송하는 패킷들 및/또는 복수의 모듈들 중 하나 이상의 수신 모듈이 수신하는 패킷들을 포함할 수 있다.
제어 모듈(610)은 수집된 패킷들에서 데이터 비트들의 위치들마다 비트 값이 1인 횟수를 카운트할 수 있다. 한편, 제어 모듈(610)은 수집된 패킷들에서 데이터 비트들의 위치들마다 비트 값이 0인 횟수를 카운트할 수도 있다.
제어 모듈(610)은 카운트된 횟수에 기초하여 데이터 비트들의 위치들의 순서를 재구성할 수 있다. 제어 모듈(610)은 카운트된 횟수에 따라 오름차순 또는 내림차순으로 데이터 비트들의 위치들을 정렬할 수 있다. 한편, 제어 모듈(610)은 카운트된 횟수에 기초하여 데이터 비트들의 위치들마다 비트 값이 1일 확률을 계산하고, 계산된 확률에 기초하여 데이터 비트들의 위치들의 순서를 재구성할 수 있다.
제어 모듈(610)은 재구성된 위치들의 순서에 기초하여 제 1 작업에 대응하는 패킷 레이아웃을 정의할 수 있다. 제어 모듈(610)은 특정 작업이 실행되는 동안 서로 다른 패킷들에 포함되는 동일한 위치의 데이터 비트들 간의 트랜지션이 최소화되도록 패킷 레이아웃을 결정할 수 있다. 따라서, 제어 모듈(610)이 특정 작업을 실행할 때 발생되는 전력 소모는 감소될 수 있다.
앞서 설명된 바와 같이, 특정 작업에 최적화된 패킷 레이아웃을 정의하는 제어 모듈은 처리 장치에 의해 실행되고 있는 작업이 전환됨에 따라 전환된 작업에 최적화된 패킷 레이아웃을 선택하는 제어 모듈을 포함하는 처리 장치와는 다른, 별도의 처리 장치에 포함될 수 있다. 예를 들어, 별도의 처리 장치에 포함된 제어 모듈이 특정 작업에 최적화된 패킷 레이아웃을 정의하는 동작만을 수행할 수 있다. 이 후, 처리 장치에 포함된 제어 모듈은 별도의 처리 장치에 포함된 제어 모듈에 의해 기 정의된 패킷 레이아웃들 중 특정 작업에 최적화된 패킷 레이아웃을 선택할 수 있다.
도 7은 일 실시예에 따른 처리 장치의 구성을 나타내는 도면이다.
도 7에 도시된 바와 같이, 처리 장치(70)는 제어 모듈(710), 라우터들(720), 전송 모듈(732) 및 수신 모듈(734) 이외에 멀티플렉서(Multiplexer)(740) 및 디멀티플렉서(Demultiplexer)(750)를 더 포함할 수 있다.
도 7의 제어 모듈(710), 라우터들(720), 전송 모듈(732) 및 수신 모듈(734)은 각각 도 6의 제어 모듈(610), 라우터들(620), 전송 모듈들(632) 및 수신 모듈들(634)와 동일한 구성일 수 있으므로, 중복되는 설명은 생략한다.
한편, 도 7의 처리 장치(70)에 의해 처리되는 데이터 패킷들은 3개의 비트들로 이루어질 수 있다. 3개라는 숫자는 예시에 불과하며, 처리 장치(70)에 의해 처리되는 데이터 패킷들의 크기는 임의의 수의 비트들을 포함 수 있다. 데이터 패킷들의 크기는 처리 장치(70)의 하드웨어 설계 시에 결정될 수 있다.
또한, 데이터 패킷들을 위한 패킷 레이아웃은 기 정의되어 있을 수 있다. 예를 들어, 도 7에 도시된 바와 같이, 비트 A, 비트 B, 비트 C의 배치 순서에 따라 ABC 순서로 배치된 패킷 레이아웃(701), CBA 순서로 배치된 패킷 레이아웃(702) 및 ACB 순서로 배치된 패킷 레이아웃(703)이 기 정의되어 있을 수 있다.
멀티 플렉서(740)는 여러 개의 입력선 중에서 하나를 선택하여 단일 출력선으로 연결하는 조합회로를 의미할 수 있다. 도 7에 도시된 바와 같이, 멀티플렉서(740)는 제어 모듈(710)의 제어에 의해 패킷 레이아웃(701), 패킷 레이아웃(702) 및 패킷 레이아웃(703) 중 하나를 선택할 수 있다. 멀티플렉서(740)에 의한 패킷 레이아웃의 선택은 패킷 인코딩에 대응할 수 있다.
예를 들어, 전송 모듈(732)이 데이터 비트들 ABC를 수신 모듈(734)에게 전송하려고 할 때, 멀티플렉서(740)는 패킷 레이아웃(702)를 선택할 수 있다. 멀티플렉서(740)가 패킷 레이아웃(702)를 선택하면, CBA의 순서로 배치된 데이터 비트들이 라우터들(720)을 통해 수신 모듈(734)로 전송될 수 있다. 다르게 말하면, 멀티플렉서(740)는 ABC의 데이터 비트들을 CBA로 인코딩할 수 있다.
디멀티플렉서(750)는 멀티플렉서(740)와 정반대의 기능을 수행하는 조합회로로써, 여러 개의 출력선 중에서 하나를 선택하여 입력선과 연결할 수 있다. 도 7에 도시된 바와 같이, 디멀티플렉서(740)는 제어 모듈(710)의 제어에 의해 패킷 레이아웃(701), 패킷 레이아웃(702) 및 패킷 레이아웃(703) 중 하나를 선택할 수 있다. 앞선 예에서, 수신 모듈(734)이 CBA의 순서로 배치된 데이터 비트들을 수신하면, 디멀티플렉서(740)는 패킷 레이아웃(702)을 선택함으로써 수신된 데이터 비트들을 ABC로 디코딩할 수 있다.
제어 모듈(710)은 멀티플렉서(740) 및 디멀티플렉서(750)를 제어할 수 있다. 제어 모듈(710)은 전송 모듈(732) 및 수신 모듈(734) 간의 데이터 교환이 올바르게 이루어지게 하기 위해, 멀티플렉서(740) 및 디멀티플렉서(750)가 동일한 패킷 레이아웃을 선택하도록 제어할 수 있다.
제어 모듈(710)은 처리 장치(70)에 의해 실행되고 있는 작업이 전환되었는지를 판단할 수 있고, 처리 장치(70)에 의해 실행되고 있는 작업이 전환된 경우, 복수의 기 정의된 패킷 레이아웃들 중에 전환된 작업에 대응하는 패킷 레이아웃을 멀티플렉서(740) 및 디멀티플렉서(750)를 이용하여 선택할 수 있다.
처리 장치(70)는 멀티플렉서(740) 및 디멀티플렉서(750)와 같은 간단한 구성를 더 포함함으로써, 기존의 하드웨어 구성을 크게 변경하지 않으면서도 복수의 패킷 레이아웃들 중 하나를 선택하는 동작을 수행할 수 있다.
도 8은 일 실시예에 따른 GPU의 구성을 나타내는 블록도이다.
도 8을 참조하면, GPU(80)는 프로세서(그래픽스 파이프라인들)(810), 버퍼들(820) 및 메모리(830)를 포함할 수 있다. 또한, 도 8에 도시하지는 않았지만, GPU(80)는 압축기, 텍스처 캐쉬, 압축 해제기 및 텍스처 유닛 등의 다양한 하드웨어 컴포넌트들을 포함할 수 있다.
GPU(80)는 그래픽스 파이프라인(graphics pipeline)을 수행하는 장치로서, 그래픽 전용 프로세서에 해당될 수 있다. GPU(80)는 3차원 이미지 상의 3차원 객체들을 디스플레이용의 2차원 이미지로 렌더링하기 위해 3차원 그래픽스 파이프라인을 실행하도록 구현된 하드웨어일 수 있다. 예를 들면, GPU(80)는 쉐이딩, 블렌딩, 일루미네이팅과 같은 다양한 기능들 및 디스플레이될 픽셀들에 대한 픽셀 값들을 생성하기 위한 다양한 기능들을 수행할 수도 있다. 한편, GPU(80)는 타일 기반 렌더링(tile-based rendering, TBR)을 위한 타일 기반(tile-based) 그래픽스 파이프라인도 수행할 수 있다.
버퍼들(820)은 GPU(80) 내의 하드웨어 컴포넌트들 사이에서 교환되는 데이터를 임시로 저장했다가 전달하는 하드웨어일 수 있다. 버퍼들(820)은 GPU(80) 내의 하드웨어 컴포넌트들 간의 데이터의 전송속도나 처리속도의 차이를 보상할 수 있다.
메모리(830)는 GPU(80) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(830)는 GPU(80)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(830)는 GPU(80)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 메모리(830)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다.
프로세서(810)는 GPU(80)가 그래픽스 파이프라인(graphics pipeline)을 수행하도록 하는 모든 동작들을 제어할 수 있다. 또한, 프로세서(810)는 GPU 드라이버의 역할을 수행할 수도 있다.
한편, GPU(80)는 도 6의 처리 장치(60)에 대응될 수 있다. 예를 들어, GPU(80)의 프로세서(그래픽스 파이프라인들)(810)은 도 6의 제어 모듈(610)에 대응될 수 있다. 또한, 프로세서(그래픽스 파이프라인들)(810), 버퍼들(820) 및 메모리(830)는 라우터들(620)을 통해 데이터를 송수신할 수 있고, 상황에 따라 전송 모듈 또는 수신 모듈로 동작할 수 있다. 따라서, 데이터의 처리에 의해 발생될 트랜지션(transition)의 수를 감소시키기 위한 도 1 내지 도 7의 방법들은 GPU(80)에도 적용될 수 있다.
프로세서(810)는 CPU로부터 특정한 오브젝트를 렌더링할 것을 요청하기 위한 드로우콜들을 수신할 수 있다. 프로세서(810)는 드로우콜들에 포함되는 데이터 패킷들을 모니터링할 수 있다. 프로세서(810)는 모니터링된 패킷들에 기초하여 드로우콜 유형이 전환되었는지 판단할 수 있다. 예를 들어, 렌더링될 오브젝트가 변경된 경우 드로우콜 유형이 전환될 수 있다.
프로세서(810)는 드로우콜 유형이 전환된 경우, 전환된 드로우콜 유형에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션을 고려하여 인코딩된 패킷 레이아웃을 획득할 수 있다. 프로세서(810)는 복수의 기 정의된 패킷 레이아웃들 중에 전환된 드로우콜 유형에 대응하는 패킷 레이아웃을 선택할 수 있다.
프로세서(810)는 획득된 패킷 레이아웃이 적용된 데이터 패킷들을 이용하여 전환된 드로우콜을 실행할 수 있다. 획득된 패킷 레이아웃은 전환된 드로우콜 유형이 실행되는 동안 획득된 패킷 레이아웃이 적용된 서로 다른 패킷들에 포함되는 동일한 위치의 데이터 비트들 간의 트랜지션이 최소화되도록 결정된 것이므로, 프로세서(810)는 전환된 드로우콜 유형에 대한 데이터의 처리에 의해 발생될 트랜지션을 감소시킬 수 있다.
한편, 프로세서(810)는 제 1 드로우콜을 기 설정된 기간 동안 실행시킬 수 있다. 프로세서(810)는 제 1 드로우콜이 실행되는 동안 GPU(80) 내 하드웨어 컴포넌트들에 의해 처리되는 패킷들을 수집할 수 있다. 프로세서(810)는 수집된 패킷들에서 데이터 비트들의 위치들마다 비트 값이 1인 횟수를 카운트할 수 있다.
프로세서(810)는 카운트된 횟수에 기초하여 데이터 비트들의 위치들의 순서를 재구성할 수 있다. 프로세서(810)는 재구성된 위치들의 순서에 기초하여 제 1 드로우콜에 대응하는 패킷 레이아웃을 정의할 수 있다.
도 9는 일 실시예에 따른 드로우콜의 유형 별로 최적화된 패킷 레이아웃을 적용하는 과정의 예시를 나타내는 도면이다.
도 9를 참조하면, 2가지 드로우콜 유형인 Drawcall 0와 Drawcall 1이 도시되어 있다. Drawcall 0와 Drawcall 1은 서로 다른 오브젝트를 렌더링하기 위한 요청을 의미할 수 있다.
도 9에 도시된 바와 같이, GPU는 Drawcall 0를 실행하기 위해 패킷 레이아웃(900)을 데이터 패킷들에 적용할 수 있다. 패킷 레이아웃(900)이 적용됨에 따라, Drawcall 0에 포함되는 패킷들인 Packet a, Packet b 및 Packet c의 데이터 비트들의 위치가 결정될 수 있다. 예를 들어, Packet a에서 1A, 1B, 1C 및 1D의 순서로 데이터 비트들이 배치될 수 있다.
패킷 레이아웃(900)은 Drawcall 0가 실행되는 동안 패킷 레이아웃(900)이 적용된 서로 다른 패킷들에 포함되는 동일한 위치의 데이터 비트들 간의 트랜지션이 최소화되도록 결정된 것일 수 있다.
한편, GPU는 Drawcall 1을 실행하기 위해 패킷 레이아웃(900)이 아닌 패킷 레이아웃(950)을 데이터 패킷들에 적용할 수 있다. 패킷 레이아웃(950)이 적용됨에 따라, Drawcall 1에 포함되는 패킷들인 Packet a’, Packet b’ 및 Packet c’의 데이터 비트들의 위치가 결정될 수 있다. 예를 들어, Packet a’에서 1B, 1A, 1D 및 1C의 순서로 데이터 비트들이 배치될 수 있다.
패킷 레이아웃(950)은 Drawcall 1이 실행되는 동안 패킷 레이아웃(950)이 적용된 서로 다른 패킷들에 포함되는 동일한 위치의 데이터 비트들 간의 트랜지션이 최소화되도록 결정된 것일 수 있다.
도 9에 도시된 바와 같이, GPU는 드로우콜 단위로 최적화된 패킷 레이아웃을 적용함으로써, 드로우콜을 실행하는 과정에서 데이터 처리에 의해 발생되는 전력 소모를 감소시킬 수 있다.
한편, 처리 장치(60), 처리 장치(70) 및 GPU(80)의 동작 방법은 그 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체에 기록될 수 있다. 컴퓨터로 읽을 수 있는 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서 실시예들에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.

Claims (19)

  1. 처리 장치 내 복수의 모듈들 간에 데이터를 처리하는 방법에 있어서,
    상기 복수의 모듈들 중 전송 모듈 및 수신 모듈 간에 교환되는 패킷들을 모니터링하는 단계;
    상기 모니터링된 패킷들에 기초하여 상기 처리 장치에 의해 실행되고 있는 작업이 전환되었는지를 판단하는 단계;
    상기 처리 장치에 의해 실행되고 있는 작업이 전환된 경우, 상기 전환된 작업에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션(transition)을 고려하여 인코딩된 패킷 레이아웃을 획득하는 단계; 및
    상기 획득된 패킷 레이아웃이 적용된 데이터 패킷들을 이용하여 상기 전환된 작업을 실행하는 단계를 포함하고,
    상기 판단하는 단계는,
    상기 모니터링된 패킷들에 포함되는 데이터 비트들 중 미리 정의된 위치의 데이터 비트의 값이 1일 확률이 기 설정된 확률을 초과하는 경우 상기 처리 장치에 의해 실행되고 있는 작업이 전환된 것으로 판단하는 단계를 포함하는 방법.
  2. 제 1항에 있어서,
    상기 획득하는 단계는,
    복수의 기 정의된 패킷 레이아웃들 중에 상기 전환된 작업에 대응하는 패킷 레이아웃을 선택하는 단계를 포함하는 방법.
  3. 제 2항에 있어서,
    상기 복수의 기 정의된 패킷 레이아웃들은,
    상기 처리 장치에 의해 실행 가능한 작업들마다, 작업에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션을 고려하여 미리 정의된 것인, 방법.
  4. 제 1항에 있어서,
    상기 획득된 패킷 레이아웃은,
    상기 전환된 작업이 실행되는 동안 상기 획득된 패킷 레이아웃이 적용된 서로 다른 패킷들에 포함되는 동일한 위치의 데이터 비트들 간의 트랜지션이 최소화되도록 결정된 것인 방법.
  5. 처리 장치 내 복수의 모듈들 간에 데이터를 처리하는 방법에 있어서,
    상기 복수의 모듈들 중 전송 모듈 및 수신 모듈 간에 교환되는 패킷들을 모니터링하는 단계;
    상기 모니터링된 패킷들에 기초하여 상기 처리 장치에 의해 실행되고 있는 작업이 전환되었는지를 판단하는 단계;
    상기 처리 장치에 의해 실행되고 있는 작업이 전환된 경우, 상기 전환된 작업에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션을 고려하여 인코딩된 패킷 레이아웃을 획득하는 단계; 및
    상기 획득된 패킷 레이아웃이 적용된 데이터 패킷들을 이용하여 상기 전환된 작업을 실행하는 단계를 포함하고,
    상기 방법은,
    제 1 작업을 기 설정된 기간 동안 실행시키는 단계;
    상기 제 1 작업이 실행되는 동안 상기 복수의 모듈들에 의해 처리되는 패킷들을 수집하는 단계;
    상기 수집된 패킷들에서 데이터 비트들의 위치들마다 비트 값이 1인 횟수를 카운트하는 단계;
    상기 카운트된 횟수에 기초하여 상기 데이터 비트들의 상기 위치들의 순서를 재구성하는 단계; 및
    상기 재구성된 위치들의 순서에 기초하여 상기 제 1 작업에 대응하는 패킷 레이아웃을 정의하는 단계를 더 포함하는 방법.
  6. 제 3항에 있어서,
    상기 처리 장치에 의해 실행 가능한 작업들은 기 설정된 기준에 따라 그룹들로 구분되고,
    상기 복수의 기 정의된 패킷 레이아웃들은 상기 구분된 그룹들 각각에 대응되도록 미리 정의된 것인, 방법.
  7. 제 1항에 있어서,
    상기 처리 장치에 의해 실행되고 있는 작업은 어플리케이션에 대응하거나, 또는 어플리케이션의 실행에 수반되는 하위 작업에 대응하는 것인 방법.
  8. 삭제
  9. 제 1항에 있어서,
    상기 처리 장치에 의해 실행되고 있는 작업은 그래픽스 파이프라인들에 의해 처리되는 오브젝트에 대응하는 드로우콜(drawcall)인 것인, 방법.
  10. 처리 장치에 있어서,
    전송 모듈 또는 수신 모듈로 동작 가능한 복수의 모듈들; 및
    상기 복수의 모듈들 중 전송 모듈 및 수신 모듈 간에 교환되는 패킷들을 모니터링하고, 상기 모니터링된 패킷들에 기초하여 상기 처리 장치에 의해 실행되고 있는 작업이 전환되었는지를 판단하며, 상기 처리 장치에 의해 실행되고 있는 작업이 전환된 경우, 상기 전환된 작업에 대한 데이터 패킷들의 처리에 의해 발생될 트랜지션을 고려하여 인코딩된 패킷 레이아웃을 획득하고, 상기 획득된 패킷 레이아웃이 적용된 데이터 패킷들을 이용하여 상기 전환된 작업을 실행하는 제어 모듈을 포함하고,
    상기 제어 모듈은,
    상기 모니터링된 패킷들에 포함되는 데이터 비트들 중 미리 정의된 위치의 데이터 비트의 값이 1일 확률이 기 설정된 확률을 초과하는 경우 상기 처리 장치에 의해 실행되고 있는 작업이 전환된 것으로 판단하는 처리 장치.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
KR1020160171664A 2016-12-15 2016-12-15 처리 장치 및 데이터를 처리하는 방법 KR102651127B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160171664A KR102651127B1 (ko) 2016-12-15 2016-12-15 처리 장치 및 데이터를 처리하는 방법
US15/635,699 US10432485B2 (en) 2016-12-15 2017-06-28 Method and apparatus for processing data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160171664A KR102651127B1 (ko) 2016-12-15 2016-12-15 처리 장치 및 데이터를 처리하는 방법

Publications (2)

Publication Number Publication Date
KR20180069460A KR20180069460A (ko) 2018-06-25
KR102651127B1 true KR102651127B1 (ko) 2024-03-26

Family

ID=62562792

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160171664A KR102651127B1 (ko) 2016-12-15 2016-12-15 처리 장치 및 데이터를 처리하는 방법

Country Status (2)

Country Link
US (1) US10432485B2 (ko)
KR (1) KR102651127B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130293546A1 (en) * 2012-05-03 2013-11-07 Samsung Electronics Co., Ltd. Dynamic load balancing apparatus and method for graphic processing unit (gpu)
US20140050082A1 (en) * 2012-08-17 2014-02-20 General Instrument Corporation Devices, systems, and methods for adaptive switching of multicast content delivery to optimize bandwidth usage

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100259092B1 (ko) 1998-03-26 2000-06-15 김영환 데이터 전송 회로
US6909743B1 (en) 1999-04-14 2005-06-21 Sarnoff Corporation Method for generating and processing transition streams
KR100872429B1 (ko) 2002-07-05 2008-12-08 엘지전자 주식회사 수신신호코드전력 측정을 위한 적응형 큐 포인트 매핑 방법
KR100482995B1 (ko) 2002-09-06 2005-04-15 주식회사 하이닉스반도체 불휘발성 강유전체 메모리 장치
KR20050076136A (ko) 2004-01-19 2005-07-26 엘지전자 주식회사 로컬 대역폭 부족시의 라인 메모리를 이용한 대응방법
US20080012569A1 (en) * 2005-05-21 2008-01-17 Hall David R Downhole Coils
KR100737943B1 (ko) * 2006-09-13 2007-07-13 삼성전자주식회사 네트워크-온-칩 응답 신호 제어 장치 및 그 방법
KR100946177B1 (ko) 2008-01-11 2010-03-08 한국과학기술원 데이터 송수신 장치 및 방법
US9252802B2 (en) 2014-02-07 2016-02-02 Qualcomm Incorporated Encoding for partitioned data bus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130293546A1 (en) * 2012-05-03 2013-11-07 Samsung Electronics Co., Ltd. Dynamic load balancing apparatus and method for graphic processing unit (gpu)
US20140050082A1 (en) * 2012-08-17 2014-02-20 General Instrument Corporation Devices, systems, and methods for adaptive switching of multicast content delivery to optimize bandwidth usage

Also Published As

Publication number Publication date
US20180176109A1 (en) 2018-06-21
US10432485B2 (en) 2019-10-01
KR20180069460A (ko) 2018-06-25

Similar Documents

Publication Publication Date Title
JP7000643B2 (ja) 異種3次元回路スタック、システム、方法および装置
US11269690B2 (en) Dynamic thread status retrieval using inter-thread communication
US8020168B2 (en) Dynamic virtual software pipelining on a network on chip
EP2854037B1 (en) Cache memory system and operating method for the same
US8726295B2 (en) Network on chip with an I/O accelerator
US20090282227A1 (en) Monitoring Software Pipeline Performance On A Network On Chip
US20130160026A1 (en) Indirect inter-thread communication using a shared pool of inboxes
US20140184622A1 (en) Adaptive OpenGL 3D graphics in Virtual Desktop Infrastructure
CN106251392A (zh) 用于执行交织的方法和设备
US8704838B2 (en) Load balancing in multiple processor rendering systems
US9218039B2 (en) Chip level power reduction using encoded communications
US8522254B2 (en) Programmable integrated processor blocks
KR102594657B1 (ko) 비순차적 리소스 할당을 구현하는 방법 및 장치
HUE027044T2 (en) Performing graphical and non-graphic applications with a graphical processing unit
CN103116517B (zh) 虚拟化平台下i/o通道的调整方法和调整装置
US10116943B2 (en) Adaptive video compression for latency control
JP2013120438A (ja) グラフィックスコマンド生成装置およびグラフィックスコマンド生成方法
CN107155093A (zh) 一种视频预览方法、装置及设备
US10204060B2 (en) Determining memory access categories to use to assign tasks to processor cores to execute
US8108661B2 (en) Data processing apparatus and method of controlling the data processing apparatus
KR102651127B1 (ko) 처리 장치 및 데이터를 처리하는 방법
JP2023505783A (ja) Gpuパケット集約システム
US9282041B2 (en) Congestion profiling of computer network devices
JP2016071886A (ja) スケジューラコンピューティング装置、それを含む分散コンピューティングシステムのデータノード、及びその方法
CN106302259B (zh) 片上网络中处理报文的方法和路由器

Legal Events

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