KR101375836B1 - 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치 - Google Patents

멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치 Download PDF

Info

Publication number
KR101375836B1
KR101375836B1 KR1020070063135A KR20070063135A KR101375836B1 KR 101375836 B1 KR101375836 B1 KR 101375836B1 KR 1020070063135 A KR1020070063135 A KR 1020070063135A KR 20070063135 A KR20070063135 A KR 20070063135A KR 101375836 B1 KR101375836 B1 KR 101375836B1
Authority
KR
South Korea
Prior art keywords
address
multicore processor
task
cores
tasks
Prior art date
Application number
KR1020070063135A
Other languages
English (en)
Other versions
KR20080114003A (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 KR1020070063135A priority Critical patent/KR101375836B1/ko
Priority to US11/967,633 priority patent/US8661440B2/en
Publication of KR20080114003A publication Critical patent/KR20080114003A/ko
Application granted granted Critical
Publication of KR101375836B1 publication Critical patent/KR101375836B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5012Processor sets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)

Abstract

본 발명은 멀티코어 프로세서 상에서 연관된 작업의 수행 방법 및 그 장치에 관한 것으로, 복수 개의 코어들을 포함하는 멀티코어 프로세서 상에서 적어도 하나의 연관된 작업들을 수행하는 방법에 있어서, 작업들의 수행에 요구되는 데이터 및 주소 정보가 멀티코어 프로세서내의 각각의 코어들로 로딩되었는지 여부를 판단하고, 판단 결과에 기초하여 상기 멀티코어 프로세서내의 각각의 코어들이 동시에 작업을 개시하도록 제어함으로써, 연관된 작업들이 수행되는 동안 주 메모리에 불필요하게 접근하는 것을 방지함으로써 시스템의 성능을 향상시킨다.
멀티코어 시스템, 동기화

Description

멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법 및 장치{Method and apparatus for performing related task on multi-core processor}
도 1은 종래 기술에 따른 대칭형 분산 시스템에서 연관된 작업의 수행에 관한 일 실시예를 도시한다.
도 2는 종래 기술에 따른 비대칭 멀티코어 프로세서 상에서 연관된 작업의 수행에 관한 일 실시예를 도시한다.
도 3은 본 발명에 따른 연관된 작업의 수행 방법에 관한 흐름도를 도시한다.
도 4는 도 3의 본 발명에 따른 연관된 작업의 수행 방법에 관한 구체적인 흐름도를 도시한다.
도 5은 본 발명에 따른 연관된 작업의 종료 방법의 일 실시예에 관한 흐름도를 도시한다.
도 6은 본 발명에 따른 API를 통하여 연관된 작업들을 수행하는 방법에 관한 흐름도를 도시한다.
도 7은 본 발명에 따른 연관된 작업의 수행에 필요한 API의 생성 방법의 일 실시예에 관한 흐름도를 도시한다.
도 8은 본 발명에 따른 연관된 작업을 수행하는 장치에 관한 블록도를 도시한다.
도 9는 본 발명에 따른 API를 통하여 연관된 작업들을 수행하는 장치에 관한 블록도를 도시한다.
본 발명은 작업 수행 방법 및 그 장치에 관한 것으로, 더욱 자세하게는 비대칭형 멀티코어 프로세서 상에서 연관된 작업의 수행 방법 및 그 장치에 관한 것이다.
오늘날 멀티미디어에 대한 수요가 급증함에 따라 비디오 코덱을 비롯한 멀티미디어 코덱의 실시간 처리에 대한 중요성이 증가하고 있다. 이러한 멀티미디어 코덱의 처리에는 많은 연산이 필요하므로, 프로세서의 성능 향상이 필수적이다.
그러나 종래에는 프로세서의 성능 향상을 위하여 중앙처리장치의 클록 속도 향상에 주력하였다. 그러나, 중앙처리장치의 클록 속도 향상은 그 한계가 존재하며, 따라서 차세대 프로세서 모델이 필요하다. 이러한 차세대 프로세서들 중 하나는 성능의 향상을 위해 복수개의 프로세서 코어를 한 칩에 내장하는 멀티코어 구조를 가진다.
특히 이 중에서 비 대칭형 멀티코어 구조는 일반적인 프로세싱을 담당하는 GPP(General Purpose Processor) 코어들과, 연산을 담당하는 DSP(Digital Signal Processor) 코어들로 구성되는 프로세서를 지칭한다. 이 중 DSP 코어에 해당하는 부분은 성능, 집적도, 전력 등을 고려하여 GPP보다 단순한 구조를 가지기 때문에, 한개의 칩(chip)에 복수개를 내장하는 것이 가능하다.
따라서 일반적으로 한개의 GPP코어와 복수개의 DSP코어를 가지는 구조가 선호된다. 이 때 각각의 DSP 코어들은 별도의 지역 메모리(local memory)를 가지고 있으며, 공유 데이터를 위해서는 주 메모리(main memory)와의 통신이 필요하다. 이와같은 지역 메모리와 주 메모리와의 통신은 DMA(Direct Memory Access)에 의하여 수행된다.
일반적으로 DSP에서 수행되는 작업들은 주로 제어보다는 복잡한 연산을 담당하는 경우가 많다. 예를 들면, 멀티미디어 처리를 위한 코덱이나, 3차원 입체 영상처리 등이 있다. 이러한 경우 메모리 요구량이나 컴퓨팅파워 요구량 등의 문제로 인해, 작업이 하나의 DSP 코어에서 수행되지 못하고 여러개의 DSP 코어에서 나누어 수행되어야 하는 경우가 생긴다.
예를 들면, H.264 디코더의 경우 하나의 프레임을 처리하기 위하여 두개의 DSP가 사용된다. 화면의 상/하를 각각 다른 DSP가 압축하는 등의 방식이다. 이러한 경우 각각의 DSP에서 수행될 작업들은 작업 수행중에 서로간에 긴밀한 통신을 해야 하는 경우가 많다. 따라서 이들 작업들은 시간적으로 항상 같은 시간에 함께 수행되는 것이 효과적이다.
이와 같이 연관된 작업들을 묶어서 항상 같은 시간에 수행되도록 스케줄링 하는 것이 필요하다. 이 경우 연관된 작업들의 집합을 갱(gang)이라 정의하고, 이들이 같은 시간에 수행되도록 스케줄링 하는 것을 갱 스케줄링(gang scheduling)로 정의한다.
도 1은 종래 기술에 따른 여러 개의 프로세싱 노드를 갖는 분산 시스템에서 연관된 작업을 임의로 개시하는 경우의 일 실시예를 도시한다.
도 1를 참조하면, 본 실시예에서 연관된 작업들은 8개로써, 8개의 DSP(111~118)에 의하여 수행된다. 8개의 DSP(111~118)는 작업을 임의의 시점에 개시한 후, 같은 양의 작업을 각각의 DSP(111~118)에서 처리하고, 동기화하여 다시 다음 단계의 작업을 수행한다.
이러한 경우 필연적으로 DSP(111~118)가 동작을 멈추는 구간(140)이 발생한다. 이러한 상황을 오버헤드(overhead)가 발생했다고 한다. 일 예로 가장 위에 도시된 DSP(111)의 경우 다른 DSP(112~118)보다 작업을 일찍 시작하였으므로, 작업의 종료 시점이 빠르다. 동기화하여 작업을 수행하기 위한 제 1 시점(132)에서 다시 작업을 시작하기 위해서는 다른 DSP(112~118)가 작업을 마칠때까지 기다려야 한다. 따라서 동작을 멈추는 구간(141)이 발생하게 된다.
이와 같이 일반적인 클러스터나 분산 시트템과 같은 대칭적인 멀티 프로세서 시스템의 경우에는 연관된 작업이 동기화 되어 개시되지 아니하면 오버헤드가 발생한다. 그러나 이러한 시스템에서는 복수개의 프로세서가 동일한 칩상에 존재하지 않으며, 프로세서같의 통신이 공유 메모리를 통하여 이루어지기 때문에 약간의 오버헤드가 발생하는 것 외에는 큰 문제가 없다.
도 2는 종래 기술에 따른 비대칭 멀티코어 프로세서 상에서 연관된 작업을 수행하는 경우의 일 실시예를 도시한다.
종래 기술에 따른 비대칭 멀티코어 프로세서는 PPE(210), OS(220), SPE(240) 을 포함한다.
PPE(210)는 본 발명의 GPE에 대응하는 것으로 주 프로세서를 나타낸다. PPE(210)는 OS(220)를 구동시키며, 시스템을 제어하는 등의 역할을 담당한다.
OS(220)는 PPE(210)의 제어를 받아 응용 프로그램(230)과 통신하거나, 후술할 SPE(240)에 대한 스케줄링 등을 담당한다.
OS(220)는 각종 디바이스 드라이버나 스프트웨어(222)를 구동시키며, 이는 PPE 모듈(232,234)를 통하여 응용 프로그램(230)과 정보를 주고 받는다. 또한 OS(220)는 API를 통하여 응용 프로그램(230)과 직접 정보를 주고 받을 수도 있다.
OS(220)는 스케줄러(224)를 통하여 SPE(240)을 제어한다.
SPE(240)는 본 발명의 DSP에 대응하는 것으로, 주로 연산등을 담당하는 프로세서이다. SPE(240)는 SPE 모듈(261~264)을 통하여 OS(220)로부터 정보를 전송받는다. SPE(240)는 OS(220)의 제어에 기초하여 전달받은 SPE 스레드(251~254)를 이용하여 작업을 수행한다. SPE 스레드(251~254)는 본 발명의 DSP 컨텍스트(DSP context)에 대응한다.
도 2를 참조하면, PPE(210)에서 작업의 수행에 필요한 수 만큼의 SPE(240)를 확보한 다음, 스케줄러(224)를 통하여 각각의 SPE(240)에 작업을 수행시킨다. 이 경우 모든 SPE(240)들이 하나의 코어 위에 있으므로, 각 작업들은 어느 정도 범위에서는 동시에 작업을 수행하게 된다. 그러나 아무리 동일한 칩상에 SPE(240)들이 존재한다 하더라도 스케줄링(224)에서 SPE 스레드(251~254)를 SPE(240)으로 배분하여 작업을 수행하므로 SPE 쓰레드(251~254)를 먼저 전달받은 SPE(240)가 먼저 작업 의 수행에 착후한다. 따라서, 먼저 작업의 수행을 개시하는 SPE(240)가 존재하게 된다.
예를 들면, 작업 A와 작업 B가 연관된 작업으로 동시에 수행되어야 하나 A 작업에 필요한 데이터가 먼저 SPE1(241)에 로드되고 뒤이어 B 작업에 필요한 데이터가 SPE2(242)에 로드되었다고 가정한다. 이 때 B 작업이 아직 로드되지 않은 상태에서 SPE1(241)이 SPE2(242)쪽으로 자료 혹은 신호를 전송하는 경우, SPE2(242)에 해당 자료가 없으므로 주 메모리내에 접근할 수 밖에 없다.
이러한 경우 데이터나 신호는 칩을 떠나 주 메모리에 전송되어야 하므로 효율성이 떨어지게 된다. 또한 뒤늦게 B 작업에 필요한 데이터가 SPE2(242)에 로드되어 수행된다면, 그 시점에서 SPE1(241)이 SPE2(242)와 통신하기 위하여 필요한 간접 주소 정보 및 맵핑 정보를 갱신하여야 하므로 A작업의 수행이 상당시간 멈추게 되는 문제점이 있다.
비대칭형 멀티코어 프로세서 상에서 SPE(240)는 동일한 칩상에 존재하므로, SPE(240)들간의 통신은 공유 메모리를 통하지 않고, 직접 지역 메모리에 접근함으로써 수행될 수 있으므로 빠르다. 그러나 상술한바데로 연관된 작업들의 작업 개시 시점을 일치시키지 못하면, 오버헤드의 발생은 물론 SPE(240)가 공유 메모리를 통하여 통신을 수행하여야 한다는 점에서 성능의 저하가 필연적으로 발생한다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 연관된 작업을 동시에 개시하도록 제어함으로써, 프로세서의 성능을 향상시키는 작업 수행 방법 및 그 장치를 제공하는 것이다.
상기와 같은 목적을 달성하기 위한 본 발명의 하나의 특징은, 복수 개의 코어들을 포함하는 멀티코어 프로세서 상에서 적어도 하나의 연관된 작업들을 수행하는 방법에 있어서, 상기 작업들의 수행에 요구되는 데이터 및 상기 주소 정보가 상기 멀티코어 프로세서내의 각각의 코어들로 로딩되었는지 여부를 판단하는 단계; 및 상기 판단 결과에 기초하여 상기 멀티코어 프로세서내의 각각의 코어들이 동시에 작업을 개시하도록 제어하는 단계를 포함하는 것이다.
바람직하게는, 상기 주소 정보는, 상기 멀티코어 프로세서 내의 저장공간에 관한 간접 주소를 의미하는 EA(Effect Address) 및 상기 EA와 상기 저장공간에 관한 실제 주소를 의미하는 RA(Real Address)간의 맵핑 정보인 것이다.
바람직하게는, 상기 작업 수행 중에 상기 맵핑 정보가 변경되지 않도록 제어하는 단계를 더 포함하는 것이다.
바람직하게는, 상기 작업들의 수행에 요구되는 데이터 및 상기 주소 정보는, 상기 멀티코어 프로세서내의 메모리 및 레지스터 중 적어도 하나에 로딩되는 것이다.
본 발명의 또 다른 특징은, 복수 개의 코어들을 포함하는 멀티코어 프로세서 상에서 적어도 하나의 연관된 작업들을 수행하는 방법에 있어서, 상기 연관된 작업들의 수행에 필요한 정보를 포함하는 API(Application Program Interface)를 생성하는 단계; 및 상기 생성된 API에 기초하여 상기 연관된 작업들을 수행하는 단계를 포함하는 것이다.
바람직하게는, 상기 API는, 상기 API를 통하여 수행될 연관된 작업들의 개수, 상기 연관된 작업들의 수행에 있어서 필요한 주소 정보를 포함하는 것이다.
바람직하게는, 상기 주소 정보는, 상기 연관된 작업들이 수행되는, 코어들의 저장공간에 관한 간접주소를 의미하는 EA(Effect Address)인 것이다.
본 발명의 또 다른 특징은, 복수 개의 코어들을 포함하는 멀티코어 프로세서 상에서 적어도 하나의 연관된 작업들을 수행하는 장치에 있어서, 상기 작업들의 수행에 요구되는 데이터 및 상기 주소 정보가 상기 멀티코어 프로세서내의 각각의 코어들로 로딩되었는지 여부를 판단하는 판단부; 및 상기 판단 결과에 기초하여 상기 멀티코어 프로세서내의 각각의 코어들이 동시에 작업을 개시하도록 제어하는 제어부를 포함하는 것이다.
본 발명의 또 다른 특징은, 복수 개의 코어들을 포함하는 멀티코어 프로세서 상에서 적어도 하나의 연관된 작업들을 수행하는 장치에 있어서, 상기 연관된 작업들의 수행에 필요한 정보를 포함하는 API(Application Program Interface)를 생성하는 API 생성부; 및 상기 생성된 API에 기초하여 상기 연관된 작업들을 수행하는 수행부를 포함하는 것이다.
이하에서는 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다.
도 3은 본 발명에 따른 연관된 작업의 수행 방법에 관한 흐름도를 도시한다.
단계 310에서는 연관된 작업들의 수행에 요구되는 데이터 및 주소 정보가 상 기 멀티코어 프로세서 내의 각각의 코어들로 로딩되었는지 여부를 판단한다.
이 경우 주소 정보는 멀티코어 프로세서 내의 저장공간에 관한 간접 주소를 의미하는 EA(Effect Address) 및 맵핑 정보일 수 있다. 맵핑 정보는 EA와 저장 공간의 실제 주소를 의미하는 RA(Real Address)간의 맵핑 정보를 의미한다. 멀티코어 프로세서로 EA를 전송함으로써, 코어는 다른 코어내의 저장공간에 관한 RA를 알 필요없이 EA를 아는 것만으로 데이터 및 신호의 전송이 가능해진다.
멀티코어 프로세서로 전송된 작업의 수행에 요구되는 데이터 및 주소 정보는 멀티코어 프로세서내의 메모리 및 레지스터 중 적어도 하나에 로딩될 수 있다.
단계 320에서는 단계 310에서의 판단 결과에 기초하여 멀티코어 프로세서내의 각각의 코어들이 동시에 작업을 개시하도록 제어한다.
흐름도에 되지는 않았으나, 멀티코어 프로세서로 로딩된 EA와 RA의 맵핑 정보가 작업이 완료되기 전에 변경되는 것을 막기 위하여 맵핑 정보를 변경할 수 없도록 제어하는 단계를 더 포함할 수도 있다.
도 4는 도 3의 본 발명에 따른 연관된 작업의 수행 방법에 관한 구체적인 흐름도를 도시한다.
단계 410에서는 연관된 작업의 수행에 필요한 만큼의 사용가능한 코어가 존재하는지를 판단한다.
단계 411에서는 단계 410에서 해당 작업을 수행하기에 충분한 코어가 존재하지 않는다고 판단되면, 해당 작업을 수행하지 않고 다음 작업을 수행한다.
단계 420에서는 단계 410에서 해당 작업을 수행하기에 충분한 코어가 존재한 다고 판단되면, 사용가능한 코어 중 하나를 선택한다. 이 경우 사용가능한 코어의 메모리 및 레지스터에 관한 실제 주소(RA)는 따로 저장할 수도 있다.
단계 430에서는 선택된 코어의 메모리 및 레지스터에 작업의 수행에 필요한 데이터를 로드한다.
단계 440에서는 모든 코어에 대하여 작업의 수행에 필요한 데이터가 로드되었는지를 판단한다. 작업의 수행에 필요한 데이터가 로드 되지 않은 코어가 존재한다면 해당 코어에 대하여 단계 420 및 단계 430을 수행함으로써 모든 코어에 작업의 수행에 필요한 데이터가 로드되도록 한다.
단계 450에서는 단계 440에서 모든 코어에 작업의 수행에 필요한 데이터가 로드 되었다고 판단하면, 주 메모리내의 주소 맵핑 정보가 저장된 데이터를 갱신한다. 작업의 수행에 필요한 데이터가 모든 코어로 전송된 상태에서 맵핑 정보가 갱신되면, 작업의 수행도중 하나의 코어가 다른 코어의 데이터를 필요로 하는 경우에도 더 이상 주 메모리에 접근할 필요가 없다.
데이터가 각각의 코어들로 전송되기 전에는 해당 데이터가 주 메모리내의 소정 부분에 존재하나 데이터가 각각의 코어들로 전송된 후에는 각각의 코어들의 메모리 및 레지스터에 존재한다. 따라서, 코어들의 메모리 및 레지스터의 EA 와 RA간의 맵핑 정보를 갱신한다.
단계 460에서는 단계 450에서 갱신된 맵핑 정보 중 작업의 수행에 필요한 부분만을 코어에 전송하여 코어내에 존재하는 맵핑 정보를 갱신한다. 단계 450에서 갱신된 맵핑 정보는 주 메모리내에 저장되고, 각각의 코어는 필요한 맵핑정보만을 소정의 레지스터에 저장하고 있다. 따라서, 작업의 수행에 필요한 맵핑 정보만을 주 메모리로부터 전달받는다.
단계 470에서는 맵핑 정보가 변경되지 않도록 제어한다. 코어들이 연관된 작업을 수행하는 도중 해당 맵핑 정보가 변경되면 코어들은 잘못된 데이터를 전달받거나 주 메모리에 접근하여야 하므로 코어들의 작업이 종료되기 전까지 맵핑 정보가 변경되지 않도록 제어한다.
단계 480에서는 모든 코어들에 대하여 단계 460 및 단계 470이 수행되었는지를 판단한다. 모든 코어들에 대하여 수행되지 아니한 경우에는 해당 코어에 대하여 단계 460 및 단계 470을 수행한다.
단계 490은 단계 480에서 모든 코어들에 대하여 주소 맵핑 정보가 업데이트 되었다고 판단된 경우에는 멀티코어 프로세서를 동작시킴으로써 작업을 수행한다.
단계 420 내지 단계 460 및 단계 480은 도 3의 단계 310에 대응한다.
또한 단계 490은 도 3의 단계 320에 대응한다.
도 5는 본 발명에 따른 연관된 작업의 종료 방법의 일 실시예에 관한 흐름도를 도시한다.
단계 510은 연관된 작업을 수행하고 있는 각 코어들의 수행을 정지시킨다.
단계 520에서는 해당 작업에 관하여 주 메모리에 저장된 맵핑 정보를 제거한다. 작업 수행에 필요한 데이터의 저장 위치는 실제 저장 공간을 나타내는 RA와 간접 주소를 나타내는 EA간의 맵핑 정보를 이용하여 표시된다.
단계 530에서는 코어의 지역 메모리 및 레지스터에 저장된 작업 수행에 관련 된 데이터를 주 메모리로 전송한다.
단계 540에서는 모든 코어내에 저장된 데이터가 주 메모리로 전송되었는지 여부를 판단하여 저장된 데이터가 주 메모리로 전송되지 아니한 코어에 대하여 단계 530을 수행한다.
단계 550에서는 주 메모리내의 맵핑 정보를 갱신한다. 이로써, 코어내의 지역 메모리를 지시하던 주소 정보는 주 메모리내의 소정의 위치를 지시한다. 즉 단계 530에서 코어의 메모리 및 레지스터로부터 전송된 데이터가 저장된 주 메모리내의 소정의 위치에 관한 주소 정보를 갱신한다. 이는 앞서 설명한바데로 간접 주소를 의미하는 EA 및 직접 주소를 의미하는 RA간의 맵핑 정보를 갱신함으로써 수행된다.
단계 560에서는 작업의 수행을 종료한 각각의 코어들을 사용할 수 있도록 제어함으로써, 다른 작업을 수행할 수 있도록 한다.
도 6은 본 발명에 따른 API를 통하여 연관된 작업들을 수행하는 방법에 관한 흐름도를 도시한다.
단계 610에서는 연관된 작업들의 수행에 필요한 정보를 포함하는 API(Application Program Interface)를 생성한다. 생성된 API는 API를 통하여 수행될 연관된 작업들의 개수, 연관된 작업들의 수행에 필요한 주소 정보등을 포함할 수 있다. 주소 정보는 연관된 작업들이 수행되는 코어들의 저장 공간에 관한 간접 주소를 의미하는 EA 일 수도 있다.
단계 620에서는 단계 610에서 생성된 API에 기초하여 연관된 작업들을 수 행한다. 연관된 작업을 수행하는 각각의 코어들은 단계 610에서 생성된 API가 포함하고 있는 정보를 이용하여 연관된 작업의 수행에 필요한 데이터가 저장된 저장 공간의 EA를 알 수 있게 된다. 저장 공간은 연관된 작업을 수행하는 코어들이 갖는 지역 메모리 및 레지스터를 의미하게 된다.
이와 같이 각각의 코어들이 지역 메모리의 EA를 공유함으로써, 서로간의 직접적인 자료 전달을 수행할 수 있게 된다. 또한 레지스터의 EA를 공유함으로써, 서로간의 직접적인 신호를 전달할 수 있게 된다.
도 7은 본 발명에 따른 연관된 작업의 수행에 필요한 API의 생성 방법의 일 실시예에 관한 흐름도를 도시한다.
단계 710에서는 API를 생성하기 위한 구조체를 생성한다. 구조체에는 연관된 작업의 수행에 필요한 코어의 수 등에 관한 정보가 저장될 수 있다.
단계 720에서는 각각의 작업의 수행에 필요한 데이터의 EA와 해당 데이터가 저장된 주 메모리 내의 소정의 위치에 관한 RA간의 맵핑 정보를 생성한다.
단계 730에서는 각각의 작업의 수행에 필요한 데이터의 EA를 단계 710에서 생성된 구조체에 채운다.
즉, 구조체가 처음 생성되면 EA가 가리키는 RA 값은 주 메모리내에 데이터가 저장된 위치를 가리키게 된다. 도 4와 같이 작업의 수행에 필요한 데이터가 각각의 코어내의 저장공간으로 로드되면, EA가 가리키는 RA는 코어내의 저장공간(메모리 및 레지스터)가 된다. 이 변환과정은 도 4 및 도 5에서 상술한 바이다.
도 8은 본 발명에 따른 연관된 작업을 수행하는 장치에 관한 블록도를 도시 한다.
본 발명에 따른 연관된 작업을 수행하는 장치(800)는 판단부(810) 및 제어부(820)를 포함한다.
판단부(810)는 연관된 작업들의 수행에 요구되는 데이터 및 주소 정보가 상기 멀티코어 프로세서 내의 각각의 코어들로 로딩되었는지 여부를 판단한다.
이 경우 주소 정보는 멀티코어 프로세서 내의 저장공간에 관한 간접 주소를 의미하는 EA(Effect Address) 및 맵핑 정보일 수 있다. 맵핑 정보는 EA와 저장 공간의 실제 주소를 의미하는 RA(Real Address)간의 맵핑 정보를 의미한다. 멀티코어 프로세서로 EA를 전송함으로써, 코어는 다른 코어의 RA를 알 필요없이 EA만으로 데이터 및 신호의 전송이 가능해진다.
멀티코어 프로세서로 전송된 작업의 수행에 요구되는 데이터 및 주소 정보는 멀티코어 프로세서내의 메모리 및 레지스터 중 적어도 하나에 로딩될 수 있다.
제어부(820)는 판단 결과에 기초하여 멀티코어 프로세서(830)내의 각각의 코어들이 동시에 작업을 개시하도록 제어한다.
도 9는 본 발명에 따른 API를 통하여 연관된 작업들을 수행하는 장치에 관한 블록도를 도시한다.
본 발명에 따른 API를 통하여 연관된 작업들을 수행하는 장치(900)는 API 생성부(910) 및 작업 수행부(920)을 포함한다.
API 생성부(910)는 연관된 작업들의 수행에 필요한 정보를 포함하는 API(Application Program Interface)를 생성한다. 생성된 API는 API를 통하여 수행 될 연관된 작업들의 개수, 연관된 작업들의 수행에 필요한 주소 정보등을 포함할 수 있다. 주소 정보는 연관된 작업들이 수행되는 코어들의 저장 공간에 관한 간접 주소를 의미하는 EA 일 수도 있다.
작업 수행부(920)는 생성된 API에 기초하여 연관된 작업들을 수행한다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
본 발명은 연관된 작업들이 동시에 수행을 개시하도록 동기화 함으로써, 연 관된 작업들이 수행되는 동안 주 메모리에 불필요하게 접근하는 것을 방지함으로써 시스템의 성능을 향상시키는 효과가 있다.
또한, 연관된 작업들이 동시에 수행을 개시하도록 동기화 함으로써 작업이 개시되는 시점에서 필요한 정보가 코어에 로드되는 것이 보장되고, 코어들간에 통신시 페이지폴트(page fault)를 없애는 효과가 있다.
연관된 작업의 수행중에 맵핑 정보가 수정되지 않도록 제어함으로써 맵핑 정보의 변경으로 인한 에러를 방지하는 효과가 있다.
또한, API를 통하여 연관된 작업들을 수행함으로써 연관된 작업이 수행에 요구되는 주소 정보가 코어들에 쉽게 전달되는 효과가 있다.

Claims (15)

  1. 복수 개의 코어들을 포함하는 멀티코어 프로세서 상에서 적어도 하나의 연관된 작업들을 수행하는 방법에 있어서,
    상기 작업들의 수행에 요구되는 데이터 및 주소 정보가 상기 멀티코어 프로세서내의 각각의 코어들로 로딩되었는지 여부를 판단하는 단계; 및
    상기 판단 결과에 기초하여 상기 멀티코어 프로세서 내의 각각의 코어들이 동시에 작업을 개시하도록 제어하는 단계를 포함하는 것을 특징으로 하는 작업 수행 방법.
  2. 제 1항에 있어서, 상기 주소 정보는,
    상기 멀티코어 프로세서 내의 저장공간에 관한 간접 주소를 의미하는 EA(Effect Address) 및 상기 EA와 상기 저장공간에 관한 실제 주소를 의미하는 RA(Real Address)간의 맵핑 정보인 것을 특징으로 하는 작업 수행 방법.
  3. 제 2항에 있어서,
    상기 작업 수행 중에 상기 맵핑 정보가 변경되지 않도록 제어하는 단계를 더 포함하는 것을 특징으로 하는 작업 수행 방법.
  4. 제 1항에 있어서, 상기 작업들의 수행에 요구되는 데이터 및 상기 주소 정보 는, 상기 멀티코어 프로세서내의 메모리 및 레지스터 중 적어도 하나에 로딩되는 것을 특징으로 하는 작업 수행 방법.
  5. 복수 개의 코어들을 포함하는 멀티코어 프로세서 상에서 적어도 하나의 연관된 작업들을 수행하는 방법에 있어서,
    상기 연관된 작업들을 수행하기 위해 필요한 정보를 포함하는 API(Application Program Interface)를 생성하는 단계; 및
    상기 생성된 API에 기초하여 상기 연관된 작업들을 수행하는 단계를 포함하는 것을 특징으로 하는 작업 수행 방법.
  6. 제 5항에 있어서, 상기 API는,
    상기 API를 통하여 수행될 연관된 작업들의 개수, 상기 연관된 작업들의 수행에 있어서 필요한 주소 정보를 포함하는 것을 특징으로 하는 작업 수행 방법.
  7. 제 6항에 있어서, 상기 주소 정보는,
    상기 연관된 작업들이 수행되는, 코어들의 저장공간에 관한 간접주소를 의미하는 EA(Effect Address)인 것을 특징으로 하는 작업 수행 장치.
  8. 복수 개의 코어들을 포함하는 멀티코어 프로세서 상에서 적어도 하나의 연관된 작업들을 수행하는 장치에 있어서,
    상기 작업들의 수행에 요구되는 데이터 및 주소 정보가 상기 멀티코어 프로세서내의 각각의 코어들로 로딩되었는지 여부를 판단하는 판단부; 및
    상기 판단 결과에 기초하여 상기 멀티코어 프로세서 내의 각각의 코어들이 동시에 작업을 개시하도록 제어하는 제어부를 포함하는 것을 특징으로 하는 작업 수행 장치.
  9. 제 8항에 있어서, 상기 주소 정보는,
    상기 멀티코어 프로세서 내의 저장공간에 관한 간접 주소를 의미하는 EA(Effect Address) 및 상기 EA와 상기 저장공간에 관한 실제 주소를 의미하는 RA(Real Address)간의 맵핑 정보인 것을 특징으로 하는 작업 수행 장치.
  10. 제 9항에 있어서, 제어부는,
    상기 작업 수행 중에 상기 맵핑 정보가 변경되지 않도록 제어하는 것을 특징으로 하는 작업 수행 장치.
  11. 제 8항에 있어서, 상기 작업들의 수행에 요구되는 데이터 및 상기 주소 정보는,
    상기 멀티코어 프로세서내의 메모리 및 레지스터 중 적어도 하나에 로딩되는 것을 특징으로 하는 작업 수행 장치.
  12. 복수 개의 코어들을 포함하는 멀티코어 프로세서 상에서 적어도 하나의 연관된 작업들을 수행하는 장치에 있어서,
    상기 연관된 작업들을 수행하기 위해 필요한 정보를 포함하는 API(Application Program Interface)를 생성하는 API 생성부; 및
    상기 생성된 API에 기초하여 상기 연관된 작업들을 수행하는 수행부를 포함하는 것을 특징으로 하는 작업 수행 장치.
  13. 제 12항에 있어서, 상기 API는,
    상기 API를 통하여 수행될 연관된 작업들의 개수, 상기 연관된 작업들의 수행에 있어서 필요한 주소 정보를 포함하는 것을 특징으로 하는 작업 수행 장치.
  14. 제 13항에 있어서, 상기 주소 정보는,
    상기 연관된 작업들이 수행되는, 코어들의 저장공간에 관한 간접주소를 의미하는 EA(Effect Address)인 것을 특징으로 하는 작업 수행 장치.
  15. 제 1항 내지 제 7항 중 어느 한 항에 기재된 방법을 구현하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020070063135A 2007-06-26 2007-06-26 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치 KR101375836B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070063135A KR101375836B1 (ko) 2007-06-26 2007-06-26 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치
US11/967,633 US8661440B2 (en) 2007-06-26 2007-12-31 Method and apparatus for performing related tasks on multi-core processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070063135A KR101375836B1 (ko) 2007-06-26 2007-06-26 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치

Publications (2)

Publication Number Publication Date
KR20080114003A KR20080114003A (ko) 2008-12-31
KR101375836B1 true KR101375836B1 (ko) 2014-04-01

Family

ID=40162375

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070063135A KR101375836B1 (ko) 2007-06-26 2007-06-26 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치

Country Status (2)

Country Link
US (1) US8661440B2 (ko)
KR (1) KR101375836B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11093441B2 (en) 2017-11-20 2021-08-17 Samsung Electronics Co., Ltd. Multi-core control system that detects process dependencies and selectively reassigns processes

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101651871B1 (ko) * 2009-12-28 2016-09-09 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
WO2011118012A1 (ja) * 2010-03-25 2011-09-29 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法
JP5776688B2 (ja) * 2010-04-30 2015-09-09 日本電気株式会社 情報処理装置及びタスク切り替え方法
KR101233664B1 (ko) * 2010-12-17 2013-02-15 황준일 멀티 코어 시스템에서 메모리 셔플링을 이용한 메모리 해킹 방지 방법 및 장치
CN103797235B (zh) * 2011-09-12 2017-02-15 丰田自动车株式会社 内燃机的控制装置
JP6028355B2 (ja) * 2012-03-22 2016-11-16 日本電気株式会社 運用管理装置、方法、及び、プログラム
US9063796B2 (en) 2012-08-02 2015-06-23 GM Global Technology Operations LLC Method and apparatus for improving processing performance of a multi-core processor
TWI478055B (zh) * 2012-12-11 2015-03-21 Gemtek Technology Co Ltd 非對稱式處理之多核心系統與其網路設備
KR101504877B1 (ko) * 2014-10-23 2015-03-30 (주)누스코 매니 코어를 이용한 프로그램 처리 장치 및 방법
DE102017100655A1 (de) * 2017-01-13 2018-07-19 Beckhoff Automation Gmbh Steuerung eines technischen Prozesses auf einer Mehr-Rechenkern-Anlage
KR102301020B1 (ko) * 2019-12-27 2021-09-09 현대오트론 주식회사 멀티 코어 마이크로컨트롤러를 이용한 차량용 전자 제어 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09185540A (ja) * 1996-01-08 1997-07-15 Canon Inc マルチプロセスシステム
KR20030084553A (ko) * 2002-04-26 2003-11-01 후지쯔 가부시끼가이샤 멀티프로세서 장치
JP2004220581A (ja) * 2003-01-09 2004-08-05 Internatl Business Mach Corp <Ibm> 入出力(i/o)通信のハードウェア・アクセラレーションを実現するデータ処理システム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2723339B2 (ja) 1989-04-28 1998-03-09 株式会社東芝 ヒートポンプ暖房装置
JPH06230985A (ja) 1993-02-02 1994-08-19 Hitachi Ltd タスク制御回路、及びマイクロプロセッサ
JP3557947B2 (ja) 1999-05-24 2004-08-25 日本電気株式会社 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
US6665708B1 (en) * 1999-11-12 2003-12-16 Telefonaktiebolaget Lm Ericsson (Publ) Coarse grained determination of data dependence between parallel executed jobs in an information processing system
US6961804B2 (en) * 2001-07-20 2005-11-01 International Business Machines Corporation Flexible techniques for associating cache memories with processors and main memory
US7093077B2 (en) * 2001-11-30 2006-08-15 Intel Corporation Method and apparatus for next-line prefetching from a predicted memory address
US7577822B2 (en) * 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
KR100988395B1 (ko) 2003-02-18 2010-10-18 마이크로소프트 코포레이션 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체
US7269718B2 (en) * 2004-04-29 2007-09-11 International Business Machines Corporation Method and apparatus for verifying data types to be used for instructions and casting data types if needed
US7685354B1 (en) * 2004-06-30 2010-03-23 Sun Microsystems, Inc. Multiple-core processor with flexible mapping of processor cores to cache banks
US7200734B2 (en) * 2004-07-31 2007-04-03 Hewlett-Packard Development Company, L.P. Operating-system-transparent distributed memory
US7689784B2 (en) * 2005-03-18 2010-03-30 Sony Computer Entertainment Inc. Methods and apparatus for dynamic linking program overlay
US7461238B2 (en) * 2006-06-07 2008-12-02 International Business Machines Corporation Simple load and store disambiguation and scheduling at predecode

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09185540A (ja) * 1996-01-08 1997-07-15 Canon Inc マルチプロセスシステム
KR20030084553A (ko) * 2002-04-26 2003-11-01 후지쯔 가부시끼가이샤 멀티프로세서 장치
JP2004220581A (ja) * 2003-01-09 2004-08-05 Internatl Business Mach Corp <Ibm> 入出力(i/o)通信のハードウェア・アクセラレーションを実現するデータ処理システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11093441B2 (en) 2017-11-20 2021-08-17 Samsung Electronics Co., Ltd. Multi-core control system that detects process dependencies and selectively reassigns processes

Also Published As

Publication number Publication date
US20090007117A1 (en) 2009-01-01
US8661440B2 (en) 2014-02-25
KR20080114003A (ko) 2008-12-31

Similar Documents

Publication Publication Date Title
KR101375836B1 (ko) 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치
TWI585680B (zh) 用於執行緒佇列安排之方法、裝置與系統(二)
US6507809B1 (en) Method and system for simulating performance of a computer system
US20070180161A1 (en) DMA transfer apparatus
KR101639853B1 (ko) 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당
US20190340722A1 (en) Data processing systems
CN106991071B (zh) 内核调度方法及***
KR20170125881A (ko) 공유 셰이더 코어에서의 비동기 디스플레이 셰이더 기능 제공
CN104182283A (zh) 一种任务同步方法
WO2006123547A1 (ja) 情報処理装置、システム、方法およびプロセッサ
US9304772B2 (en) Ordering thread wavefronts instruction operations based on wavefront priority, operation counter, and ordering scheme
US20160188340A1 (en) System and method for performing parallel operations using a plurality of nodes
US20160026741A1 (en) Calculating device, calculation method, and calculation program
KR101639854B1 (ko) 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
TW202107408A (zh) 波槽管理之方法及裝置
US20130162658A1 (en) Synchronization with semaphores in a multi-engine gpu
US9690619B2 (en) Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory
US11954534B2 (en) Scheduling in a container orchestration system utilizing hardware topology hints
JP2007133493A (ja) 情報処理装置、グラフィックプロセッサ、制御用プロセッサおよび情報処理方法
JP4734348B2 (ja) 共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法、非同期遠隔手続き呼び出しプログラムおよび記録媒体
US20140281381A1 (en) System-on-chip and method of operating the same
US9710359B2 (en) Executing debug program instructions on a target apparatus processing pipeline
WO2021036421A1 (zh) 多核架构的同步信号产生电路、芯片和同步方法及装置
US20120096245A1 (en) Computing device, parallel computer system, and method of controlling computer device
JP2008276322A (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
FPAY Annual fee payment
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170221

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180220

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190221

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200225

Year of fee payment: 7