KR101041777B1 - 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스 - Google Patents

멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스 Download PDF

Info

Publication number
KR101041777B1
KR101041777B1 KR1020090050385A KR20090050385A KR101041777B1 KR 101041777 B1 KR101041777 B1 KR 101041777B1 KR 1020090050385 A KR1020090050385 A KR 1020090050385A KR 20090050385 A KR20090050385 A KR 20090050385A KR 101041777 B1 KR101041777 B1 KR 101041777B1
Authority
KR
South Korea
Prior art keywords
threads
thread
synchronous
execution
marked
Prior art date
Application number
KR1020090050385A
Other languages
English (en)
Other versions
KR20100131672A (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 KR1020090050385A priority Critical patent/KR101041777B1/ko
Publication of KR20100131672A publication Critical patent/KR20100131672A/ko
Application granted granted Critical
Publication of KR101041777B1 publication Critical patent/KR101041777B1/ko

Links

Images

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스가 개시된다. 본 발명의 일 측면에 따르면, 멀티 스레드 프로세서가 미리 마크된 복수의 스레드에 대해 멀티 스레드를 처리하는 방법에 있어서, 마크된 모든 복수의 스레드가 동일한 프로세스를 수행하도록 분기하는 단계 및 마크된 스레드 중 하나의 스레드만 남기고 종료하는 단계를 포함하는 멀티 스레드 처리 방법은 스레드가 자신과 다른 스레드를 제어함에 있어서, 효율적으로 스레드를 관리할 수 있는 분기 구조를 가지며, 클러스터링 관리자 역할을 명령어로 대체시킴으로써 효율적으로 멀티 스레드를 관리할 수 있는 효과가 있다.
멀티 스레드, 프로세서, 디바이스, 분기, 종료.

Description

멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스{Method for processing multi thread and Processor device using the same}
본 발명은 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스에 관한 것이다.
멀티 스레드 프로세서 디바이스는 하나의 연산 집합의 코어가 다수의 스레드를 순차 또는 무작위로 실행하게 된다. 일반적으로 응용 프로그램은 스레드(thread)로 분해될 수 있다. 스레드는 컴퓨터의 중앙 처리 장치(CPU)에서 실행되는 일련의 명령어들로서, 실행 가능한 유닛들이다. 일반적으로 프로그램은 먼저 운영 체계에 의해 소프트웨어 스레드들로 분할된 다음에, 각 스레드가 중앙 처리 장치 내의 레지스터 집합인 대응 하드웨어 스레드에 맵핑된다. 이 스레드들을 더 빠른 속도로 처리하기 위해서 주어진 시간에 복수의 스레드를 동시에 수신하여 처리할 수 있는 멀티 스레드형 프로세서가 사용될 수 있다.
이때 복수의 스레드가 각각 독립된 작업을 수행하기도 하지만 대부분 한 가 지 커다란 작업을 다수의 스레드가 나누어 실행하게 된다. 이를 위해서 구현 가능한 방법은 크게 두 가지가 있다. 하나는 외부에서 각 스레드의 동작을 감시하는 별도의 프로세서가 존재하는 것과 또 하나는 스레드 스스로 자신과 다른 스레드를 제어하는 방법이다. 여기서 첫 번째 방법은 비용이 크게 소요되나 스레드를 제어하는 손쉬운 방법이며, nVidia CUDA의 'thread execution manager'나 IBM Cell processor의 'PPE(PowerPC Element)'가 이러한 역할을 담당하는 것으로서, 일반적인 방법이다.
nVidia의 CUDA나 IBM의 Cell processor는 다중 스레드 코어들을 통하여 클러스터링(clustering) 연산이 가능케 하는 고성능 프로세서이다. 클러스터링 연산을 이행하려면 크게 클러스터링 노드, 즉 다중스레드 코어와 클러스터링 관리자, 즉 별도의 스레드 관리 프로세서가 필요하게 된다. 이러한 기본 개념에 의해 설계된 CUDA와 Cell은 각각 thread execution manager와 PPE(Power Processing Element)를 통하여 다중 스레드들을 관리한다. 이 방법은 자원이 한정되지 않은 PC와 같은 상황에서 스레드들을 관리하는 가장 효율적인 방법이지만 모바일 환경에서는 별도의 관리 모듈을 탑재해야 하고 그만큼 전력이 소모된다.
종래 기술에 따른 두 번째 방법은 모든 스레드가 서로 다른 스레드들을 감시하고 제어해야 하기 때문에 첫 번째 방법에 비하여 하드웨어 비용은 적게 소요되나 각 스레드가 다른 스레드 관리에 추가적인 시간이 소요되어 성능을 하락시키는 원인이 된다. 즉, 별도의 클러스터링 관리자를 없애려면 각 스레드 코어가 클러스터링 노드와 클러스터링 관리자 역할을 동시에 해야 하는데, 이를 위해서는 스레드 관리가 명령어로 구현되어야 한다. 하지만 일반적인 방법으로는 추가되는 명령어 때문에 낭비되는 클럭 사이클이 많아져 성능을 저하시키는 원인이 된다.
도 1은 종래 기술에 따른 멀티 스레드 자가 관리 구조를 도시한 도면이다. 도 1을 참조하면, 하나의 스레드가 자신을 제어하기 위해 분기 명령(JMP)과 스레드 종료 명령(END)을 가지며 다른 스레드를 새로이 생성하기 위해 스레드 생성 명령(NEW)을 가진다. 이러한 방법을 통하여 동시 진행할 모든 스레드들을 생성하여 동시에 실행 시킬 수 있으나 작업이 전환되거나 종료될 때 문제가 된다. 즉, 작업을 전환시키기 위해서는 모든 스레드의 작업이 끝나고 마지막 스레드가 다음 작업을 위한 준비를 한 후 다시 모든 스레드를 생성해야 한다.
이러한 방법을 구현하기 위해서는 생성과 종료시 모든 스레드가 접근할 수 있는 특정한 관리 변수를 두어 자신이 몇 번째 생성 또는 종료 중인지 알아내는 방법의 제시가 필요하다. 이를 위해서는 그 특정한 관리 변수가 단일 클럭에 특정 값으로 갱신되거나 또는 크리티컬 색션을 설정하여 동시에 접근할 수 있는 스레드를 제한해야 한다. 이러한 과정에서는 명령어가 소모되므로 각 스레드 개수만큼 명령어 사이클이 추가로 소모된다. 따라서 스레드 개수가 많고 작업의 트랜잭션이 많을수록 소모되는 명령어 사이클은 증가되는 단점이 있다.
전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 발명은 스레드 스스로 멀티 스레드를 관리하는데 있어서, 효율적으로 스레드를 관리할 수 있는 분기 구조를 가지는 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스를 제공하기 위한 것이다.
또한, 본 발명은 클러스터링 관리자가 필요 없으며, 그 역할을 명령어로 대체시킴으로써 칩면적과 전력 소모면에서 효율적으로 멀티 스레드를 관리할 수 있는 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스를 제공하기 위한 것이다.
본 발명이 제시하는 이외의 기술적 과제들은 하기의 설명을 통해 쉽게 이해될 수 있을 것이다.
본 발명의 일 측면에 따르면, 멀티 스레드 프로세서가 미리 마크된 복수의 스레드에 대해 멀티 스레드를 처리하는 방법에 있어서, 마크된 모든 복수의 스레드가 동일한 프로세스를 수행하도록 분기하는 단계 및 마크된 스레드 중 하나의 스레드만 남기고 종료하는 단계를 포함하는 멀티 스레드 처리 방법이 제시된다.
여기서, 마크는 0 또는 1로서 각 스레드에 상응하여 저장되며, 각 스레드는 실행 또는 종료를 나타내는 실행 상태 변수를 포함할 수 있다.
또한, 종료 단계에서, 스레드 종료 명령 실행시 마크된 스레드 중 임의의 하 나의 스레드는 마크된 다른 모든 스레드의 실행 상태 변수가 종료를 나타내는 경우 종료되지 않을 수 있다.
또한, 종료되지 않은 스레드가 마크된 다른 모든 스레드가 동일한 프로세스를 수행하도록 분기할 수 있다.
여기서, 멀티 스레드는 순차 실행, 병렬 실행 및 이들의 조합 실행 중 어느 하나의 작업을 수행하며, 본 실시예는 분기 단계 전에, 마크되는 대상이 되는 스레드를 변경하는 단계를 더 포함할 수 있다.
또한, 멀티 스레드 처리 방법을 수행하는 호스트 중앙 처리 장치가 복수의 스레드에 마크하며, 마크되는 스레드의 선정 기준은 시스템 제어 관련도, 단순도, 런타임, 처리 속도 중 어느 하나 이상일 수 있다.
본 발명의 다른 측면에 따르면, 상술한 방법을 수행하기 위하여 디지털 처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며 디지털 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록매체가 제시된다.
또한, 본 발명의 또 다른 측면에 따르면, 제1 스레드 및 제2 스레드를 포함하되, 제1 스레드와 제2 스레드는 마크가 설정되며, 제1 스레드는 제2 스레드와 멀티 스레드 프로세스를 수행하도록 분기 명령을 실행하는 것을 특징으로 하는 멀티 스레드 프로세서 디바이스가 제시된다.
여기서, 스레드 종료 명령 실행시 제1 스레드가 실행되는 경우 제2 스레드를 종료할 수 있다.
또한, 본 실시예는 복수의 스레드에 마크를 설정하는 호스트 중앙 처리 장치 를 더 포함하며, 멀티 스레드 프로세스는 모바일 환경에서 수행될 수 있다.
전술한 것 외의 다른 측면, 특징, 이점이 이하의 도면, 특허청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.
본 발명에 따른 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스는 스레드 스스로 자신과 다른 스레드를 제어함에 있어서, 효율적으로 스레드를 관리할 수 있는 분기 구조를 가지며, 클러스터링 관리자 역할을 명령어로 대체시킴으로써 효율적으로 멀티 스레드를 관리할 수 있는 효과가 있다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이 다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한 다.
도 2는 본 발명의 실시예에 따른 멀티 스레드 처리 방법의 흐름도이다.
본 실시예는 멀티 스레드 프로세서 디바이스가 별도의 제어 유닛 없이 하나의 작업을 복수의 다른 스레드와 동시에 진행하기 위한 제어 방법을 제시하는 특징이 있다. 즉, 본 실시예는 멀티 스레드를 효율적으로 자가 관리하기 위해서, 별도의 제어 유닛이 필요 없고 크리티컬 섹션이 필요 없으며 단순한 구조로 작업을 빠르게 트랜잭션을 할 수 있는 구조를 제시한다. 여기서, 멀티 스레드 프로세서 디바이스는 멀티 스레딩 작업을 할 수 있는 장치, 예를 들면, 중앙 처리 장치 또는 이를 포함하는 컴퓨터가 될 수 있다.
본 실시예에 따른 멀티 스레드는 순차 실행, 병렬 실행 및 이들의 조합 실행 중 어느 하나의 작업을 수행한다. 즉, 복수의 스레드가 처리할 작업의 종류는 크게 상호 데이터 의존적인 순차 실행 부분과 서로 독립적인 데이터 처리 가능한 병렬 실행 부분으로 나뉜다. 본 실시예에 따라 멀티 스레드 프로세서를 이용하여 만들어진 프로그램은 순차실행 부와 병렬실행 부가 복합적으로 섞일 수 있으며, 이를 위해서 순차실행과 병렬실행 상호간의 전이(Transaction)가 용이한 장점이 있다.
본 실시예는 특정 명령어를 이용하여 복수의 스레드가 새로운 프로세서 작업을 동시에 진행하도록 하며, 또한, 복수의 스레드가 각각 작업을 하고 있을 때 동기 종료 명령에 접근하면 각 스레드가 종료하며 마지막 스레드는 종료하지 않고 계속 진행하도록 제어함으로써 새로운 작업으로 트랜잭션하거나 종료할 수 있도록 한 다. 후술할 각 단계는 진행순서가 부여된 부호로 정해지는 것은 아니며, 서로 혼합되거나 다른 순서로 진행될 수 있다.
단계 S210에서는, 본 실시예에 따른 스레드는 일반적인 스레드가 수행하는 개별 동작을 수행한다. 구체적으로, 스레드가 개별적으로 자신을 제어하기 위한 소정의 분기 명령을 통해 새로운 프로세스를 진행한다(단계 S213). 또한, 스레드는 개별적으로 소정의 스레드 종료 명령에 의해 진행 중이던 프로세스를 종료한다(단계 S215).
단계 S220에서는, 어느 하나의 스레드가 소정의 동기 분기 명령을 통하여 미리 마크(mark)된 모든 스레드가 새로운 프로세스를 진행하도록 한다. 이 경우 동기 분기 명령은 마크되지 않은 스레드에는 영향을 미치지 않는다.
여기서, 스레드를 마킹하는 주체는 컴퓨터의 중앙 처리 장치, 즉, 호스트 중앙 처리 장치(Host CPU)가 될 수 있다. 예를 들면, 멀티 스레드를 사용하는 그래픽 장치(GPU)에서는, 사용자 프로그램에서 GPU 구동 초기에 소정의 스레드에 마크를 설정할 수 있다.
이러한 마크는 특정 변수로서 각 스레드마다 저장된다. 예를 들면, 마크는 비트 0 또는 1로서 저장될 수 있다. 예를 들면, 특정 변수가 0이면 마크되지 않은 것이며, 1이면 마크된 것으로 판단될 수 있다. 여기서, 마크는 각 스레드에 상응하여 통상적으로 저장되는 방식으로 저장될 수 있다. 예를 들면, 상술한 마크는 레지스트리에 저장되거나 후술할 실행 상태 변수가 저장되는 영역에 저장될 수도 있다.
또한, 각 스레드는 상술한 마크 이외에도 자신의 실행 또는 종료 상태인 실 행 상태 여부를 나타내는 실행 상태 변수, 예를 들면, 실행 상태 비트를 가질 수 있다.
또한, 스레드 마크가 변경되는 시점은 멀티 스레드 동작을 요구하는 프로세스가 종료되고 다시 다른 프로세스가 실행되기 이전이 될 수 있으며, 이 경우에도 상술한 바와 같이 호스트 중앙 처리 장치, 즉, 외부로부터 그 변경이 조정될 수 있다.
여기서, 마크되는 스레드의 선정 기준은 특별히 정해지지 않을 수 있다. 예를 들면, 오디오 스트림 제어, WDT(watch dog timer)와 같은 시스템 제어군들의 집합, 비교적 단순하고 매우 긴 런타임을 요구하며 단일 스레드만을 수행하여도 문제가 되지 않는 프로세스 등이 아닌 멀티 스레드를 통한 고속 처리를 요하는 프로세스가 마크된 스레드에서 구동될 수 있도록 마크되는 스레드의 개수를 미리 설정할 수 있다. 즉, 시스템 제어 관련도, 단순도, 런타임, 처리 속도 등이 본 실시예에서 마크되는 스레드의 선정 기준이 될 수 있다.
단계 S230에서는, 소정의 동기 종료 명령에 의해 마크된 스레드 중 마지막 하나의 스레드만 남기고 종료한다. 여기서, 동기 종료 명령은 상술한 마크된 모든 스레드의 실행 상태 비트를 참조하여 계속 수행할지 현재 스레드를 종료할지를 결정한다. 예를 들면, 현재 스레드가 동기 종료 명령을 만나고 다른 마크된 스레드의 실행 상태 비트가 모두 실행하지 않는 상태를 표시하면 현재 스레드는 종료가 되지 않고 프로세스를 속행하거나 다음 명령어로 분기가 진행된다. 또한, 역으로 동기 종료 명령의 실행 시점에 다른 마크된 스레드 중 하나라도 그 실행 상태 비트가 실 행 중임을 나타내면 현재 스레드는 종료된다. 따라서 동기 종료 명령은 같은 작업을 하는 마크된 다른 모든 스레드가 종료된 상태를 보장할 수 있다.
도 3은 본 발명의 실시예에 따른 멀티 스레드 자가 관리 구조를 도시한 도면이다. 도 3을 참조하면, 개별 스레드 분기 과정(a), 개별 스레드 종료 과정(b), 복수의 스레드 동기 분기 과정(c), 복수의 스레드 동기 종료 과정(d)이 도시된다.
본 실시예를 구현하기 위한 명령은 크게 4가지로 구분되며, 이는, 예를 들면, 개별 스레드 분기 명령(JMP), 개별 스레드 종료 명령(END), 복수의 스레드 동기 분기 명령(ALL) 및 복수의 스레드 동기 종료 명령(SEQ)과 같다. 본 실시예에 따르면, 이러한 4가지 명령으로 병렬 처리할 작업과 순차 처리할 작업의 전환이 매우 쉬워진다. 각 명령어가 다른 명칭으로 구현될 수 있음은 당연하다.
이하에서 (1), (2) 등, 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
(a)를 참조하면, 하나의 스레드(스레드(1))가 자신을 제어하기 위한 분기 명령(JMP)을 통해 새로운 프로세스(프로세스B)를 진행한다. (b)를 참조하면, 스레드(2)는 스레드 종료 명령(END)에 의해 진행중이던 프로세스A를 종료한다.
(c)를 참조하면, 스레드(4)는 전체 분기 명령(ALL)을 통하여 마크된 모든 스레드(스레드(3) 내지 스레드(5))가 새로운 프로세스B를 진행하도록 한다. 이 경우 마크되지 않은 스레드(6)는 프로세스C를 계속 진행한다.
(d)를 참조하면, 동기 종료 명령(SEQ)에 의해 마크된 스레드(스레드(7) 내지 스레드(9)) 중 마지막 하나의 스레드(8)만 남기고 종료하고, 마크되지 않은 스레드(10)는 이와 관련없이 프로세스D를 계속 진행한다. 즉, 동기 종료 명령(SEQ)은 상술한 바와 같이 마크된 복수의 스레드의 실행 상태 비트를 참조하여 각 스레드의 작업 속행 여부를 결정한다. 예를 들면, 동기 종료 명령(SEQ) 실행시 각 스레드의 실행 상태 비트를 참조하여 다른 마크된 모든 스레드의 실행 상태 비트가 모두 disable 상태이면 현재 스레드는 종료가 되지 않으며, 역으로 동기 종료 명령(SEQ) 실행 시점에 다른 마크된 스레드 중 하나라도 실행 중이라면 현재 스레드는 종료된다.
여기서, 각각 작업이 진행되는 동안 끝나는 시점이 다르게 되지만, 동기 종료 명령(SEQ)이 같은 작업을 하는 마크된 다른 모든 스레드가 종료된 상태를 보장하므로, 이후 종료를 수행하거나 전체 분기 명령(ALL)을 통하여 새로운 작업으로 트랜잭션을 할 수 있다.
도 4는 본 발명의 실시예에 따른 멀티 스레드 처리 방법의 활용도이다. 도 4를 참조하면, 5개의 스레드가 상술한 분기 및/또는 종료 명령에 따라 작업을 수행하여 서로 작업을 공유하는 구간을 멀티 스레드 또는 싱글 스레드 구간으로 구분한 다.
본 실시예는 상술한 멀티 스레드의 응용예를 도시하였으나, 본 발명이 이러한 응용예에 한정되지 않음은 당연하다.
마크된 복수의 스레드(스레드(1) 내지 스레드(4))가 서로 다른 프로세스(프로세스A 내지 프로세스D) 작업을 수행하고 있을 때, 동기 종료 명령(SEQ)에 의해 스레드(1), 스레드(3) 및 스레드(4)는 종료하며, 마지막 스레드(2)는 종료하지 않고 계속 작업을 수행한다. 여기서, 도 4의 상단에서 스레드(2)의 동기 종료 명령(SEQ)까지의 구간은 멀티 스레드 구간으로서 멀티1 구간으로 지칭된다. 스레드(5)는 마크되지 않은 스레드로서 스레드(1) 내지 스레드(4)와는 다른 프로세스E를 진행한다.
이후 스레드(2)는 싱글1 구간에서 동기 분기 명령(ALL) 시까지 싱글 스레드 작업으로서, 순차 작업을 진행하여 다음 작업을 수행한다. 즉, 싱글1 구간은 동기 분기 명령(ALL)에 의해 스레드(2)가 새로운 프로세스를 진행하기 전까지 지속된다. 동기 분기 명령(ALL)에 의해 모든 마크된 스레드(스레드(1) 내지 스레드(4))가 새로운 프로세서 작업(프로세스F 작업)을 동시에 진행한다. 즉, 멀티2 구간은 마크된 복수의 스레드(스레드(1) 내지 스레드(4))가 하나의 프로세스(프로세스F)에 대해 멀티 스레드 작업을 수행하는 구간이다.
멀티2 구간은 다시 동기 종료 명령(SEQ)에 의해 종료되고, 동기 종료 명령(SEQ)에 의해 스레드(1), 스레드(2) 및 스레드(3)는 종료하며, 싱글2 구간에서 마지막 스레드(4)는 종료하지 않고 계속 작업을 수행한다. 이후 동기 분기 명 령(ALL)에 의해 모든 마크된 스레드(스레드(1) 내지 스레드(4))가 새로운 프로세서 작업(프로세스G 작업)을 동시에 진행한다.
동기 분기 명령(ALL)을 내리는 스레드에 대한 시간적 및/또는 위치적 제한은 없다. 즉, 모든 스레드가 동기 분기 명령(ALL)을 실행할 수 있다. 동기 분기 명령(ALL)의 동작 방식은 동기 종료 명령(SEQ)과 마찬가지로 마크된 스레드에 대해서만 영향을 준다. 동기 분기 명령(ALL)은 발하는 시점에서 마크된 스레드 중 종료 상태인 스레드를 지정하는 명령어 위치부터 실행되도록 하는 역할을 하는 기능을 수행한다.
이러한 기능을 동기 종료 명령(SEQ)과 적절히 사용한다면 상술한 바와 같이 멀티 스레드로 실행해야 하는 부분과 싱글 스레드로 실행해야 하는 부분을 다른 별도의 관리 프로세서 없이 스레드 스스로 제어하는 것이 가능해진다. 따라서, 본 실시예는 ATI의 CTM, nVidia 의 CUDA 그리고 IBM의 Cell과 같은 종래의 멀티 스레드 프로세서들이 다중의 스레드를 제어하기 위해 별도의 관리모듈이나 프로세서를 두는데 반해, 본 실시예에 따른 분기 명령 구조는 보다 간단한 제어가 가능하다는 장점이 있다. 또한, 본 실시예는 별도의 관리 모듈이 필요하지 않아서 전력이 절약되므로 통신 기능을 구비하는 휴대성(portability)을 가진 소형 디지털 기기의 환경, 즉, 모바일의 환경에서 구동되면 그 장점이 배가 될 수 있다.
즉, 종래 기술에 따르면, 멀티 스레드를 위해 각 스레드는 공유된 변수를 이용하여 스레드의 종료를 판단하기 때문에 추가적인 트랜잭션 비용이 소요되는 문제점이 있다. 예를 들면, 각 스레드는 상술한 공유 변수를 초기화하고, 공유 변수값 을 증감하여 이를 전체 스레드 개수와 비교하는 등 별도의 명령들이 존재하며, 이를 위해 트랜잭션이 최소 3클럭 이상 소요된다. 하지만, 본 실시예에 따르면, 각 단일 명령어로 동기 종료 또는 동기 분기가 가능하므로, 단일 클럭으로 상술한 과정을 수행할 수 있는 장점이 있다.
그 외 본 발명의 실시예에 따른 멀티 스레드 처리 방법에 대한 구체적인 중앙 처리 장치, 메모리, 스레드 등에 대한 구체적인 설명은 본 발명이 속하는 기술 분야의 통상의 지식을 가진 자에게 자명한 사항이므로 생략하기로 한다.
또한, 본 발명에 따른 멀티 스레드 처리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 즉, 기록 매체는 컴퓨터에 상술한 각 단계를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 될 수 있다.
상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합한 형태로 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM, DVD와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
상기한 바에서, 본 발명의 실시예에 따른 멀티 스레드 처리 방법은 명령어 및 스레드의 구성을 일 실시예에 따라 기술하였으나, 반드시 이에 한정될 필요는 없고, 상기 명령어 중 어느 하나가 변경, 치환, 추가되거나 다른 환경에서 실행되는 스레드라고 하더라도 전체적인 작용 및 효과에는 차이가 없다면 이러한 다른 구성은 본 발명의 권리범위에 포함될 수 있으며, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
도 1은 종래 기술에 따른 멀티 스레드 자가 관리 구조를 도시한 도면.
도 2는 본 발명의 실시예에 따른 멀티 스레드 처리 방법의 흐름도.
도 3은 본 발명의 실시예에 따른 멀티 스레드 자가 관리 구조를 도시한 도면.
도 4는 본 발명의 실시예에 따른 멀티 스레드 처리 방법의 활용도.

Claims (14)

  1. 멀티 스레드 프로세서가 미리 마크된 복수의 스레드에 대해 멀티 스레드를 처리하는 방법에 있어서,
    미리 마크된 복수의 스레드(thread) 중 어느 하나가 미리 지정된 작업을 실행하는 중에 복수의 스레드 동기 분기 명령(ALL)에 접근되면, 상기 마크된 모든 스레드가 모두 동일한 새로운 작업을 개시하도록 하기 위해 동기 분기 처리를 수행하는 단계 (a); 및
    동기 분리 처리된 스레드들 각각은 동기 종료 명령(SEQ)에 의해 작업이 종료되되, 동기 분리 처리된 스레드들 중 가장 나중에 상기 동기 종료 명령에 접근된 스레드는 작업이 종료되지 않고 실행 유지하는 단계 (b)를 포함하는 멀티 스레드 처리 방법.
  2. 제1항에 있어서,
    상기 마크는 0 또는 1로서 상기 각 스레드에 상응하여 저장되는 멀티 스레드 처리 방법.
  3. 제1항에 있어서,
    상기 각 스레드는 작업의 실행 또는 종료를 나타내는 실행 상태 변수를 포함하는 멀티 스레드 처리 방법.
  4. 제3항에 있어서,
    상기 단계 (b)에서,
    동기 분리 처리된 스레드들 각각은 동기 종료 명령(SEQ)에 접근된 때, 동기 분리 처리된 다른 스레드들 중 하나 이상에 대한 실행 상태 변수가 실행을 나타내는 경우에만 작업이 종료되는 것을 특징으로 하는 멀티 스레드 처리 방법.
  5. 제1항에 있어서,
    상기 단계 (b)에서 실행 유지된 스레드가 새로운 복수의 스레드 동기 분기 명령(ALL)에 접근된 경우, 상기 마크된 모든 스레드들은 다시 동기 분리 처리되는 것을 특징으로 하는 멀티 스레드 처리 방법.
  6. 제1항에 있어서,
    상기 멀티 스레드는 복수의 스레드들에 대한 순차 실행, 병렬 실행 및 이들의 조합 실행 중 어느 하나의 작업을 수행하는 멀티 스레드 처리 방법.
  7. 제1항에 있어서,
    상기 단계 (a) 이전에,
    상기 마크의 대상이 되는 스레드를 변경하는 단계를 더 포함하는 멀티 스레드 처리 방법.
  8. 제1항에 있어서,
    호스트 중앙 처리 장치가 상기 복수의 스레드에 대한 마크를 설정하는 것을 특징으로 하는 멀티 스레드 처리 방법.
  9. 제1항에 있어서,
    상기 마크되는 스레드의 선정 기준은 시스템 제어 관련도, 단순도, 런타임, 처리 속도 중 어느 하나 이상인 멀티 스레드 처리 방법.
  10. 제1항 내지 제9항 중 어느 하나에 기재된 멀티 스레드 처리 방법을 수행하기 위하여 디지털 처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며 디지털 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록매체.
  11. 복수의 스레드(thread)를 포함하되,
    상기 복수의 스레드 중 둘 이상은 마크가 설정되고, 마크가 설정된 둘 이상의 스레드 중 어느 하나가 미리 지정된 작업을 실행하는 중에 복수의 스레드 동기 분기 명령(ALL)에 접근되면 상기 마크가 설정된 모든 스레드가 모두 동일한 새로운 작업을 개시하도록 하기 위해 동기 분기 처리가 수행되는 것을 특징으로 하는 멀티 스레드 프로세서 디바이스.
  12. 제11항에 있어서,
    동기 분리 처리된 스레드들 각각은 동기 종료 명령(SEQ)에 의해 작업을 종료하되,
    동기 분리 처리된 스레드들 중 가장 나중에 상기 동기 종료 명령에 접근된 스레드는 작업을 종료하지 않고 실행 유지하는 것을 특징으로 하는 멀티 스레드 프로세서 디바이스.
  13. 제11항에 있어서,
    호스트 중앙 처리 장치에 의해 상기 둘 이상의 스레드에 마크가 설정되는 것을 특징으로 하는 멀티 스레드 프로세서 디바이스.
  14. 제12항에 있어서,
    각 스레드는 작업의 실행 또는 종료를 나타내는 실행 상태 변수를 포함하고,
    동기 분리 처리된 스레드들 각각은 동기 종료 명령(SEQ)에 접근된 때 동기 분리 처리된 다른 스레드들 중 하나 이상에 대한 실행 상태 변수가 실행을 나타내는 경우에만 작업이 종료되는 것을 특징으로 하는 멀티 스레드 프로세서 디바이스.
KR1020090050385A 2009-06-08 2009-06-08 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스 KR101041777B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090050385A KR101041777B1 (ko) 2009-06-08 2009-06-08 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090050385A KR101041777B1 (ko) 2009-06-08 2009-06-08 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스

Publications (2)

Publication Number Publication Date
KR20100131672A KR20100131672A (ko) 2010-12-16
KR101041777B1 true KR101041777B1 (ko) 2011-06-17

Family

ID=43507589

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090050385A KR101041777B1 (ko) 2009-06-08 2009-06-08 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스

Country Status (1)

Country Link
KR (1) KR101041777B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200077297A (ko) * 2018-12-20 2020-06-30 국방과학연구소 멀티 프로세스/멀티 스레드에서 사용하는 공유 메모리에 대한 원자성 위반 결함 탐지 방법 및 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102466273B1 (ko) * 2018-12-04 2022-11-14 한국전자통신연구원 암호 연산 멀티스레딩 장치 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040068721A (ko) * 2003-01-27 2004-08-02 삼성전자주식회사 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법
KR20040091538A (ko) * 2003-04-21 2004-10-28 인터내셔널 비지네스 머신즈 코포레이션 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로
US20060150184A1 (en) 2004-12-30 2006-07-06 Hankins Richard A Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
KR20070011434A (ko) * 2004-04-07 2007-01-24 샌드브리지 테크놀로지스, 인코포레이티드 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드프로세서

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040068721A (ko) * 2003-01-27 2004-08-02 삼성전자주식회사 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법
KR20040091538A (ko) * 2003-04-21 2004-10-28 인터내셔널 비지네스 머신즈 코포레이션 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로
KR20070011434A (ko) * 2004-04-07 2007-01-24 샌드브리지 테크놀로지스, 인코포레이티드 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드프로세서
US20060150184A1 (en) 2004-12-30 2006-07-06 Hankins Richard A Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200077297A (ko) * 2018-12-20 2020-06-30 국방과학연구소 멀티 프로세스/멀티 스레드에서 사용하는 공유 메모리에 대한 원자성 위반 결함 탐지 방법 및 장치
KR102141620B1 (ko) 2018-12-20 2020-08-06 국방과학연구소 멀티 프로세스/멀티 스레드에서 사용하는 공유 메모리에 대한 원자성 위반 결함 탐지 방법 및 장치

Also Published As

Publication number Publication date
KR20100131672A (ko) 2010-12-16

Similar Documents

Publication Publication Date Title
US7389440B2 (en) Method, system, and apparatus for improving multi-core processor performance
EP3140729B1 (en) Thread waiting in a multithreaded processor architecture
TWI266987B (en) Method for monitoring locks, processor, system for monitoring locks, and machine-readable medium
DE60029619T2 (de) Verfahren, vorrichtung, medium und programm zur aufnahme und zum verlassen von mehreren fäden in einem vielfadenprozessor
CA2663983C (en) Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
TWI512448B (zh) 用以啟用處理器等待狀態之指令
US7730340B2 (en) Method and apparatus for dynamic voltage and frequency scaling
TWI426452B (zh) Work processing device
JP4476267B2 (ja) プロセッサ及びデータ転送ユニット
EP1531390A2 (en) Method and apparatus for controlling the execution of multiple threads in a parallel processor
US20160132338A1 (en) Device and method for managing simd architecture based thread divergence
US20120166777A1 (en) Method and apparatus for switching threads
US20090249037A1 (en) Pipeline processors
JP2006039815A (ja) マルチスレッドプロセッサおよびレジスタ制御方法
US9910717B2 (en) Synchronization method
CN103324269A (zh) 一种降低多线程程序功耗的方法及系统
WO2017206151A1 (zh) 在单任务系统中实现多任务的方法、装置及单任务系统
KR101041777B1 (ko) 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스
US20140351828A1 (en) Apparatus and method for controlling multi-core system on chip
US7603673B2 (en) Method and system for reducing context switch times
JP5678347B2 (ja) Itシステムの構成方法、そのコンピュータプログラムおよびitシステム
KR102623397B1 (ko) 매니코어 시스템
KR102571234B1 (ko) 매니코어 시스템의 스레드 관리 방법 및 장치
KR102644719B1 (ko) 다중 스레드의 비동기적인 실행이 가능한 매니코어 시스템
KR101373699B1 (ko) 모바일 환경의 멀티 코어 멀티 스레드 시스템의 단일 프로세스 병렬화를 위한 분기 방법

Legal Events

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

Payment date: 20140528

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150526

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180528

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190527

Year of fee payment: 9