KR20170094911A - 반도체 장치의 동작 방법 및 반도체 시스템 - Google Patents

반도체 장치의 동작 방법 및 반도체 시스템 Download PDF

Info

Publication number
KR20170094911A
KR20170094911A KR1020160016229A KR20160016229A KR20170094911A KR 20170094911 A KR20170094911 A KR 20170094911A KR 1020160016229 A KR1020160016229 A KR 1020160016229A KR 20160016229 A KR20160016229 A KR 20160016229A KR 20170094911 A KR20170094911 A KR 20170094911A
Authority
KR
South Korea
Prior art keywords
task
node
tasks
control group
intensive
Prior art date
Application number
KR1020160016229A
Other languages
English (en)
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 KR1020160016229A priority Critical patent/KR20170094911A/ko
Priority to US15/340,138 priority patent/US20170235607A1/en
Publication of KR20170094911A publication Critical patent/KR20170094911A/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/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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and 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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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
    • G06F9/4806Task transfer initiation or dispatching
    • 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
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5044Allocation 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 hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/502Proximity

Abstract

반도체 장치의 동작 방법 및 반도체 시스템이 제공된다. 반도체 장치의 동작 방법은 다중 프로세서 시스템(multiprocessor system)에서 처리되는 태스크(task)에 대한 태스크 구조 정보를 획득하고, 상기 다중 프로세서 시스템은 각각 하나 이상의 프로세싱 유닛 및 상기 프로세싱 유닛과 직접(directly) 연결된 메모리를 포함하는 복수의 노드(node)를 포함하고, 상기 복수의 노드는 I/O 디바이스가 직접 연결된 로컬 노드 및 I/O 디바이스가 직접 연결되지 않은 리모트 노드를 포함하고, 상기 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크(I/O intensive task)에 해당되는지 여부를 결정하고, 상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 상기 태스크를 상기 로컬 노드에 할당하는 것을 포함한다.

Description

반도체 장치의 동작 방법 및 반도체 시스템{METHOD FOR OPERATING SEMICONDUCTOR DEVICE AND SEMICONDUCTOR SYSTEM}
본 발명은 반도체 장치의 동작 방법 및 반도체 시스템에 관한 것이다.
다중 프로세서 시스템(multiprocessor system)의 아키텍처(architecture)는 다양한 방법으로 구현될 수 있다. 그 중 공통 자원(common resource), 즉 공유 버스 또는 공유 메모리를 사용하는 아키텍처는, 다중 프로세서 시스템에서 프로세서(또는 프로세싱 유닛)의 수가 증가함에 따라 성능 저하를 일으킬 수 있다.
이러한 점을 극복하기 위해, 일반적으로 프로세서들을 소정의 클러스터(cluster)로 나누고 이들 클러스터를 인터커넥션(interconnection)으로 연결하는 방식의 아키텍처를 채택할 수 있다. 이러한 경우 다중 프로세서 시스템의 메모리 역시 소정의 클러스터에 따라 분리되고 이들 분리된 메모리들은 인터커넥션에 의해 연결되는 방식, 소위 분산 메모리 시스템(distributed memory system)으로서 구현될 수 있다.
분산 메모리 시스템은, 모든 프로세서가 메모리에 대한 동일한 액세스 시간을 가지게 되는 UMA(Uniform Memory Access) 아키텍처 또는, 로컬 메모리(local memory)/리모트 메모리(remote memory)의 개념을 가지며 프로세서의 로컬 메모리에 대한 액세스 시간과 리모트 메모리에 대한 액세스 시간에 차이가 발생하는 NUMA(Non-Uniform Memory Access) 아키텍처 등으로 구현될 수 있다.
본 발명이 해결하고자 하는 기술적 과제는 특히 NUMA 아키텍처를 이용하는 다중 프로세서 시스템에서 I/O 집중적 태스크(I/O intensive task)를 효율적으로 처리할 수 있는 반도체 장치의 동작 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 특히 NUMA 아키텍처를 이용하는 다중 프로세서 시스템에서 I/O 집중적 태스크를 효율적으로 처리할 수 있는 컴퓨터로 판독 가능한 기록 매체를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 특히 NUMA 아키텍처를 이용하는 다중 프로세서 시스템에서 I/O 집중적 태스크를 효율적으로 처리할 수 있는 반도체 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 특히 NUMA 아키텍처를 이용하는 다중 프로세서 시스템에서 I/O 집중적 태스크를 효율적으로 처리할 수 있는 반도체 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 해당 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법은, 다중 프로세서 시스템(multiprocessor system)에서 처리되는 태스크(task)에 대한 태스크 구조 정보를 획득하고, 상기 다중 프로세서 시스템은 각각 하나 이상의 프로세싱 유닛 및 상기 프로세싱 유닛과 직접(directly) 연결된 메모리를 포함하는 복수의 노드(node)를 포함하고, 상기 복수의 노드는 I/O 디바이스가 직접 연결된 로컬 노드 및 I/O 디바이스가 직접 연결되지 않은 리모트 노드를 포함하고, 상기 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크(I/O intensive task)에 해당되는지 여부를 결정하고, 상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 상기 태스크를 상기 로컬 노드에 할당하는 것을 포함한다.
본 발명의 몇몇의 실시예에서, 상기 방법은, 상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우, 상기 태스크를 상기 리모트 노드에 할당하는 것을 더 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 방법은, 상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우, 상기 태스크를 상기 복수의 노드 중 아이들(idle) 프로세싱 유닛이 존재하는 노드에 할당하는 것을 더 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 태스크 구조 정보는 task_struct 구조체를 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 I/O 집중적 태스크는 상기 I/O 디바이스를 액세스하는 태스크를 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 다중 프로세서 시스템은 NUMA(Non-Uniform Memory Access) 아키텍처로 구현될 수 있다.
본 발명의 몇몇의 실시예에서, 상기 I/O 디바이스는 스토리지 디바이스를 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 스토리지 디바이스는 SSD(Solid State Drive) 및 HDD(Hard Disk Drive)를 적어도 하나 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 태스크를 상기 로컬 노드에 할당하는 것은, 상기 로컬 노드의 하나 이상의 프로세싱 유닛 중 아이들(idle) 프로세싱 유닛이 존재하는지 여부를 판단하고, 상기 로컬 노드에 상기 아이들 프로세싱 유닛이 존재하지 않는 경우, 상기 태스크를 상기 리모트 노드에 할당하는 것을 더 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 방법은, 상기 태스크 구조 정보에 상기 태스크에 대한 선호 노드 정보(preferred node information)가 포함되어 있는지 여부를 결정하고, 상기 태스크 구조 정보에 상기 선호 노드 정보가 포함된 경우, 상기 태스크를 상기 복수의 노드 중 상기 선호 노드 정보에 의해 지시되는 선호 노드에 할당하는 것을 더 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 태스크를 상기 선호 노드에 할당하는 것은, 상기 선호 노드의 하나 이상의 프로세싱 유닛 중 아이들(idle) 프로세싱 유닛이 존재하는지 여부를 판단하고, 상기 선호 노드에 상기 아이들 프로세싱 유닛이 존재하지 않는 경우, 상기 태스크 구조 정보를 추가로 분석하는 것을 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 선호 노드 정보는, 상기 태스크가 상기 복수의 노드 중 특정 노드에 할당된 과거 이력에 기반하여 생성될 수 있다.
본 발명의 몇몇의 실시예에서, 상기 선호 노드 정보는, 상기 다중 프로세서 시스템에서 동작하는 운영체제(operating system)를 통해 입력 또는 변경될 수 있다.
본 발명의 몇몇의 실시예에서, 상기 태스크는 제1 컨트롤 그룹에 포함되는 복수의 태스크 및 상기 제1 컨트롤 그룹과 다른 제2 컨트롤 그룹에 포함되는 복수의 태스크를 포함하고, 상기 태스크를 상기 로컬 노드에 할당하는 것은, 상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 태스크를 상기 로컬 노드 및 상기 리모트 노드에 분배하는 것을 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 태스크를 상기 로컬 노드 및 상기 리모트 노드에 분배하는 것은, 상기 제1 컨트롤 그룹에 포함된 복수의 태스크 중 일부 태스크와 상기 제2 컨트롤 그룹에 포함된 복수의 태스크 중 일부 태스크를 상기 로컬 노드에 할당하고, 상기 제1 컨트롤 그룹에 포함된 복수의 태스크 중 다른 일부 태스크와 상기 제2 컨트롤 그룹에 포함된 복수의 태스크 중 다른 일부 태스크를 상기 리모트 노드에 할당하는 것을 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 태스크를 상기 로컬 노드 및 상기 리모트 노드에 분배하는 것은, 상기 로컬 노드에 분배된 상기 제1 컨트롤 그룹의 태스크의 개수와 상기 제2 컨트롤 그룹의 태스크의 개수가 동일하도록 상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 태스크를 분배하는 것을 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 반도체 장치의 동작 방법은, 다중 프로세서 시스템(multiprocessor system)에서 처리되는 복수의 태스크(task)의 리스트를 획득하고, 상기 다중 프로세서 시스템에 포함된 복수의 노드의 리스트를 획득하고, 상기 복수의 태스크를 I/O 집중적 태스크(I/O intensive task) 및 일반 태스크 중 어느 하나로 분류하고, 상기 복수의 노드 리스트를 탐색하면서 상기 I/O 집중적 태스크를 I/O 디바이스가 직접(directly) 연결된 로컬 노드에 할당하고, 상기 일반 태스크를 I/O 디바이스가 직접 연결되지 않은 리모트 노드에 할당하는 것을 포함한다.
본 발명의 몇몇의 실시예에서, 상기 I/O 집중적 태스크를 상기 로컬 노드에 할당하는 것은, 상기 로컬 노드에 포함된 하나 이상의 프로세싱 유닛 중 아이들(idle) 프로세싱 유닛이 존재하는지 여부를 판단하고, 상기 로컬 노드에 상기 아이들 프로세싱 유닛이 존재하지 않는 경우, 상기 I/O 집중적 태스크를 상기 리모트 노드에 할당하는 것을 더 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 I/O 집중적 태스크는 제1 컨트롤 그룹에 포함되는 복수의 I/O 집중적 태스크 및 상기 제1 컨트롤 그룹과 다른 제2 컨트롤 그룹에 포함되는 복수의 I/O 집중적 태스크를 포함하고, 상기 I/O 집중적 태스크를 상기 로컬 노드에 할당하는 것은, 상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 I/O 집중적 태스크를 상기 로컬 노드 및 상기 리모트 노드에 분배하는 것을 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 I/O 집중적 태스크를 상기 로컬 노드 및 상기 리모트 노드에 분배하는 것은, 상기 제1 컨트롤 그룹에 포함된 복수의 I/O 집중적 태스크 중 일부와 상기 제2 컨트롤 그룹에 포함된 복수의 I/O 집중적 태스크 중 일부를 상기 로컬 노드에 할당하고, 상기 제1 컨트롤 그룹에 포함된 복수의 I/O 집중적 태스크 중 다른 일부와 상기 제2 컨트롤 그룹에 포함된 복수의 I/O 집중적 태스크 중 다른 일부를 상기 리모트 노드에 할당하는 것을 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 I/O 집중적 태스크를 상기 로컬 노드 및 상기 리모트 노드에 분배하는 것은, 상기 로컬 노드에 분배된 상기 제1 컨트롤 그룹의 I/O 집중적 태스크의 개수와 상기 제2 컨트롤 그룹의 I/O 집중적 태스크의 개수가 동일하도록 상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 I/O 집중적 태스크를 분배하는 것을 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 컴퓨터로 판독 가능한 기록 매체는, 프로세서로 하여금, 다중 프로세서 시스템(multiprocessor system)에서 처리되는 태스크(task)에 대한 태스크 구조 정보를 획득하고, 상기 다중 프로세서 시스템은 각각 하나 이상의 프로세싱 유닛 및 상기 프로세싱 유닛과 직접(directly) 연결된 메모리를 포함하는 복수의 노드(node)를 포함하고, 상기 복수의 노드는 I/O 디바이스가 직접 연결된 로컬 노드 및 I/O 디바이스가 직접 연결되지 않은 리모트 노드를 포함하고, 상기 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크(I/O intensive task)에 해당되는지 여부를 결정하고, 상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 상기 태스크를 상기 로컬 노드에 할당하는 것을 포함하는 동작을 수행하도록 하는 인스트럭션(insrtuction)을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 반도체 장치는, 컴퓨터로 판독 가능한 인스트럭션(instruction)을 포함하는 메모리; 및 상기 컴퓨터로 판독 가능한 인스트럭션을 실행하는 하나 이상의 프로세서를 포함하고, 상기 컴퓨터로 판독 가능한 인스트럭션은, 다중 프로세서 시스템(multiprocessor system)에서 처리되는 태스크(task)에 대한 태스크 구조 정보를 획득하고, 상기 다중 프로세서 시스템은 각각 하나 이상의 프로세싱 유닛 및 상기 프로세싱 유닛과 직접(directly) 연결된 메모리를 포함하는 복수의 노드(node)를 포함하고, 상기 복수의 노드는 I/O 디바이스가 직접 연결된 로컬 노드 및 I/O 디바이스가 직접 연결되지 않은 리모트 노드를 포함하고, 상기 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크(I/O intensive task)에 해당되는지 여부를 결정하고, 상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 상기 태스크를 상기 로컬 노드에 할당하는 것을 포함하는 동작을 수행하도록 한다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 반도체 시스템은, 다중 프로세서 시스템(multiprocessor system)에서 처리되는 태스크(task)에 대한 태스크 구조 정보 및 상기 다중 프로세서 시스템에 포함된 복수의 노드의 리스트를 획득하고, 상기 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크(I/O intensive task)에 해당되는지 여부를 결정하는 태스크 분석 유닛; 상기 태스크가 I/O 집중적 태스크에 해당되는지 여부에 따라, 상기 복수의 노드 리스트를 탐색하여 상기 태스크를 할당할 노드를 I/O 디바이스가 직접(directly) 연결된 로컬 노드 또는 I/O 디바이스가 직접 연결되지 않은 리모트 노드 중에서 선정하는 노드 선정 유닛; 및 상기 선정된 노드에 상기 태스크를 할당하는 태스크 할당 유닛을 포함한다.
본 발명의 몇몇의 실시예에서, 상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 상기 노드 선정 유닛은 상기 태스크를 할당할 노드로 상기 로컬 노드를 선정할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우, 상기 노드 선정 유닛은 상기 태스크를 할당할 노드로 상기 리모트 노드를 선정할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우, 상기 노드 선정 유닛은 상기 태스크를 할당할 노드로 상기 복수의 노드 중 아이들(idle) 프로세싱 유닛이 존재하는 노드를 선정할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 태스크 구조 정보는 task_struct 구조체를 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 상기 노드 선정 유닛은, 상기 로컬 노드의 하나 이상의 프로세싱 유닛 중 아이들(idle) 프로세싱 유닛이 존재하는지 여부를 판단하고, 상기 로컬 노드에 상기 아이들 프로세싱 유닛이 존재하지 않는 경우, 상기 태스크를 할당할 노드로 상기 리모트 노드를 선정할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 태스크 분석 유닛은 상기 태스크 구조 정보에 상기 태스크에 대한 선호 노드 정보(preferred node information)가 포함되어 있는지 여부를 결정하고, 상기 태스크 구조 정보에 상기 선호 노드 정보가 포함된 경우, 상기 노드 선정 유닛은 상기 태스크를 할당할 노드로 상기 복수의 노드 중 상기 선호 노드 정보에 의해 지시되는 선호 노드를 선정할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 선호 노드 정보는, 상기 태스크가 상기 복수의 노드 중 특정 노드에 할당된 과거 이력에 기반하여 생성될 수 있다.
본 발명의 몇몇의 실시예에서, 상기 선호 노드 정보는, 상기 다중 프로세서 시스템에서 동작하는 운영체제(operating system)를 통해 입력 또는 변경될 수 있다.
본 발명의 몇몇의 실시예에서, 상기 태스크는 제1 컨트롤 그룹에 포함되는 복수의 태스크 및 상기 제1 컨트롤 그룹과 다른 제2 컨트롤 그룹에 포함되는 복수의 태스크를 포함하고, 상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 상기 노드 선정 유닛은, 상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 태스크를 상기 로컬 노드 및 상기 리모트 노드에 분배할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 노드 선정 유닛은, 상기 제1 컨트롤 그룹에 포함된 복수의 태스크 중 일부 태스크와 상기 제2 컨트롤 그룹에 포함된 복수의 태스크 중 일부 태스크를 할당할 노드로 상기 로컬 노드를 선정하고, 상기 제1 컨트롤 그룹에 포함된 복수의 태스크 중 다른 일부 태스크와 상기 제2 컨트롤 그룹에 포함된 복수의 태스크 중 다른 일부 태스크를 할당할 노드로 상기 리모트 노드를 선정할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 노드 선정 유닛은, 상기 로컬 노드에 분배된 상기 제1 컨트롤 그룹의 태스크의 개수와 상기 제2 컨트롤 그룹의 태스크의 개수가 동일하도록 상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 태스크를 분배할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 반도체 시스템의 동작 환경을 설명하기 위한 개략도이다.
도 2는 본 발명의 일 실시예에 따른 반도체 시스템의 구현 환경을 설명하기 위한 개략도이다.
도 3은 본 발명의 일 실시예에 따른 반도체 시스템을 설명하기 위한 개략도이다.
도 4는 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 순서도이다.
도 5는 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 6은 본 발명의 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 순서도이다.
도 7은 본 발명의 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 8은 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 순서도이다.
도 9는 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 10은 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 11은 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 순서도이다.
도 12는 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 13은 본 발명의 실시예에 따른 반도체 장치의 동작 방법 및 반도체 시스템이 적용될 수 있는 전자 시스템의 블록도이다.
도 14 내지 도 16은 본 발명의 몇몇 실시예들에 따른 반도체 장치의 동작 방법을 적용할 수 있는 예시적인 반도체 시스템들이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 층 및 영역들의 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 반도체 시스템의 동작 환경을 설명하기 위한 개략도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 반도체 시스템의 동작 환경(1)은 복수의 노드(100, 200, 300, 400) 및 이들 복수의 노드(100, 200, 300, 400)를 상호 연결하는 인터커넥션(500)을 포함할 수 있다. 도 1에서는 4 개의 노드만을 도시하였으나, 본 발명의 범위는 이에 제한되지 않는다.
노드(100, 200, 300, 400) 각각은 하나 이상의 프로세싱 유닛을 포함할 수 있다. 노드(100, 200, 300, 400)에 포함된 하나 이상의 프로세싱 유닛은 클러스터(cluster)를 형성할 수 있다. 하나의 클러스터를 이루는 프로세싱 유닛의 개수는 시스템의 구현 목적에 따라 각각의 노드(100, 200, 300, 400) 별로 다양할 수 있다.
각각의 노드(100, 200, 300, 400)는 하나 이상의 프로세싱 유닛을 포함하는 클러스터와, 상기 클러스터와 직접(directly) 연결된 메모리를 포함한다. 또한 일부 노드(100)는 I/O 디바이스(150)와 데이터를 주고 받기 위한 I/O 포트를 포함할 수 있다. 이와 같은 각각의 노드(100, 200, 300, 400)의 세부적인 구성에 대해서는 도 5와 관련하여 후술하도록 한다.
본 발명의 다양한 실시예에서, 동작 환경(1)은 NUMA(Non-Uniform Memory Access) 아키텍처에 해당될 수 있다. 이에 따라, 각각의 노드(100, 200, 300, 400)에 포함된 프로세싱 유닛은, 해당 노드에 직접 연결된 메모리를 액세스하거나, 다른 노드에 직접 연결된 메모리를 액세스할 수 있다. 예를 들어, 노드(100)에 포함된 프로세싱 유닛은 노드(100)에 직접 연결된 메모리(즉, 로컬 메모리)를 액세스할 수도 있고, 노드(200)에 직접 연결된 메모리(즉, 리모트 메모리)를 액세스할 수도 있다. 물론 이와 같은 경우 노드(100)에 포함된 프로세싱 유닛이 로컬 메모리를 액세스하기 위해 소요되는 시간과 리모트 메모리를 액세스하기 위해 소요되는 시간에 차이가 발생한다.
주목할 점은, 상술한 것과 유사하게, 각각의 노드(100, 200, 300, 400)에 포함된 프로세싱 유닛은, 해당 노드에 직접 연결된 I/O 디바이스를 액세스하거나, 다른 노드에 직접 연결된 I/O 디바이스를 액세스할 수 있다는 점이다. 예를 들어, 노드(100)에 포함된 프로세싱 유닛이 노드(100)에 직접 연결된 I/O 디바이스(150)(즉, 로컬 I/O 디바이스)를 액세스할 수도 있고, 노드(200)에 포함된 프로세싱 유닛이 노드(100)에 직접 연결된 I/O 디바이스(150)(즉, 리모트 I/O 디바이스)를 액세스할 수도 있다. 이와 같은 경우 노드(100)에 포함된 프로세싱 유닛이 로컬 I/O 디바이스(150)를 액세스하는 태스크를 처리하기 위해 소요되는 시간과 노드(200)에 포함된 프로세싱 유닛이 리모트 I/O 디바이스(150)를 액세스하는 태스크를 처리하기 위해 소요되는 시간에 차이가 발생한다.
이하에서는, 상술한 바와 같이, 특정 프로세서가 자신이 속한 노드에 직접 연결된 로컬 메모리, 로컬 I/O 디바이스 등을 액세스하는 경우, 로컬 메모리, 로컬 I/O 디바이스 등이 포함되거나 연결된 노드를 로컬 노드로 명명하도록 한다. 이와 다르게 특정 프로세서가 자신이 속하지 않은 노드에 직접 연결된 리모트 메모리, 리모트 I/O 디바이스 등을 액세스하는 경우, 리모트 메모리, 리모트 I/O 디바이스 등이 포함되거나 연결된 노드를 리모트 노드로 명명하도록 한다.
한편, I/O 디바이스를 액세스하는 태스크 또는 작업의 상당한 부분을 I/O 디바이스를 액세스하는 태스크를 I/O 집중적 태스크(I/O intensive task)라고 명명하여, 그렇지 않은 일반 태스크(normal task)와 구분하도록 한다.
본 발명의 몇몇의 실시예에서, I/O 디바이스는 스토리지 디바이스를 포함할 수 있다. 예를 들어, 스토리지 디바이스는 SSD(Solid State Drive) 및 HDD(Hard Disk Drive)를 적어도 하나 포함할 수 있다. 그러나, 본 발명의 범위는 이에 제한되지 않고, I/O 작업을 수행하는 임의의 장치 및 시스템을 포함할 수 있다.
인터커넥션(500)은 복수의 노드(100, 200, 300, 400) 각각을 상호 연결하는 버스(bus) 또는 스위치(switch)일 수 있으며, 그 토폴로지(topology)는 특정한 형태에 한정되지 않고 임의의 형태로 형성될 수 있다.
도 2는 본 발명의 일 실시예에 따른 반도체 시스템의 구현 환경을 설명하기 위한 개략도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 반도체 시스템의 구현 환경(2)은 하드웨어(10), 운영체제(20) 및 어플리케이션(30)을 포함할 수 있다.
운영체제(20)는 하드웨어(10)를 제어하고 및 어플리케이션(30)의 실행을 지원하는 등 컴퓨팅 시스템(1)을 전반적으로 운용한다. 예를 들어, 운영체제(20)는 어플리케이션(30)으로부터 작업 요청을 수신하고, 요청받은 작업을 처리하기 위한 일련의 작업들을 설정하고, 하드웨어(10)에 이들 작업을 할당할 수 있다. 또한, 운영체제(20)는 하드웨어(10)를 이용하여 처리한 일련의 작업들의 결과를 어플리케이션(30)에 전달할 수 있다.
본 발명의 몇몇의 실시예에서, 운영체제(20)는 애플(Apple, Inc)사의 MacOS, 마이크로소프트(Microsoft)사의 윈도우즈(Windows), 유닉스(UNIX), 리눅스(Linux) 등의 운영체제일 수도 있고, 애플(Apple, Inc)사의 iOS, 구글(Google)사의 안드로이드(Android) 등 모바일 장치에 특화된 운영체제일 수도 있으나, 본 발명의 범위는 이러한 예들에 한정되지 않는다.
한편, 본 발명의 몇몇의 실시예에서, 하드웨어(10)는 하나 이상의 CPU(Central Processing Unit), GPU(Graphic Processing Unit), AP(Application Processor), CP(Cellular Processor), DSP(Digital Signal Processor) 등을 비롯한 프로세싱 유닛, ROM(Read Only Memory), RAM(Random Access Memory) 등을 비롯한 메모리 장치, HDD(Hard Disk Drive), SSD(Solid State Drive) 등을 비롯한 스토리지 장치 및 기타 주변 장치들을 포함할 수 있으며, 이러한 예들에 한정되지 않는다. 특히, 본 발명의 몇몇의 실시예에서, 하드웨어(10)는 다중 프로세서 또는 다중 프로세싱 유닛을 포함할 수 있다.
도 1을 계속 참조하면, 어플리케이션(30)은 사용자로부터 데이터 입출력 작업을 비롯한 요청들을 수신하고, 운영체제(20)는 상기 요청들을 처리하기 위한 태스크를 생성 및 실행시킬 수 있다. 특히, 운영체제(20)는 생성된 태스크를 하드웨어(10)에 적절히 할당하는 스케줄러(21)를 포함할 수 있다. 본 발명의 다양한 실시예에 따른 반도체 장치의 동작 방법들은 스케줄러(21)와 같이 운영체제(20)의 일부에 해당되는 소프트웨어로 구현될 수 있다. 그러나 본 발명의 범위는 이에 제한되지 않으며, 본 명세서에서 설명하는 동작을 하는 회로, 예컨대, ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 또는 SoC(System on Chip)의 일부 회로 등으로 구현될 수도 있다.
도 3은 본 발명의 일 실시예에 따른 반도체 시스템을 설명하기 위한 개략도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 반도체 시스템(22)은 태스크 분석 유닛(22a), 노드 선정 유닛(22b) 및 태스크 할당 유닛(22c)을 포함한다.
태스크 분석 유닛(22a)은 다중 프로세서 시스템에서 처리되는 태스크에 대한 정보, 즉 태스크 구조 정보를 획득한다. 그리고 태스크 분석 유닛(22a)은 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크에 해당되는지 여부를 결정한다.
본 발명의 몇몇의 실시예에서, 태스크 구조 정보는 task_struct 구조체를 포함할 수 있다. 예를 들어, task_struct 구조체의 내부 구조는 구현되는 시스템에 따라 달라질 수 있으나, 일반적으로 태스크를 식별하기 위한 정보(예컨대 변수 pid), 태스크에 대한 사용자 접근 권한에 관한 정보(예컨대 변수 uid), 태스크의 상태에 관한 정보(예컨대, 실행 상태, 인터럽트 가능 상태, 인터럽트 불가능 상태, 중단 상태 등), 태스크들간의 관계(relationship)에 관한 정보(예컨대 부모/자식에 관한 정보), 스케줄링 관련 정보(예컨대, 스케줄링 정책), 태스크에게 제공되는 시그널에 관한 정보, 태스크가 액세스하는 파일에 관한 정보, 컨텍스트 스위칭을 구현하기 위한 정보 등의 다양한 정보를 포함할 수 있다. 태스크 분석 유닛(22a)은 이와 같은 다양한 정보에 기반하여, 태스크가 I/O 집중적 태스크에 해당되는지 여부를 결정할 수 있다.
한편, 본 발명의 몇몇의 실시예에서, 태스크 분석 유닛(22a)은 다중 프로세서 시스템에 포함된 복수의 노드(100, 200, 300, 400)의 리스트를 획득할 수도 있다. 복수의 노드(100, 200, 300, 400)의 리스트는 특정한 데이터 구조에 한정되지 않고, 임의의 다양한 데이터 구조로 구현될 수 있다.
노드 선정 유닛(22b)은 태스크가 I/O 집중적 태스크에 해당되는지 여부에 따라 상기 태스크를 할당할 노드, 즉 타겟 노드를 선정한다.
구체적으로, 상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 노드 선정 유닛(22b)은 상기 태스크를 할당할 노드로 I/O 디바이스가 직접 연결된 로컬 노드를 선정할 수 있다. 이와 다르게, 상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우, 노드 선정 유닛(22b)은 상기 태스크를 할당할 노드로 I/O 디바이스가 직접 연결되지 않은 리모트 노드를 선정할 수 있다. 한편, 본 발명의 다른 몇몇의 실시예에서, 상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우, 노드 선정 유닛(22b)은 상기 태스크를 할당할 노드로 I/O 디바이스가 직접 연결되어 있는지 여부와는 무관하게 아이들(idle) 프로세싱 유닛이 존재하는 노드(아이들 노드)를 선정할 수도 있다.
본 발명의 몇몇의 실시예에서, 노드 선정 유닛(22b)은 복수의 노드(100, 200, 300, 400)의 리스트를 탐색할 수 있다. 예를 들어, 노드 선정 유닛(22b)은 복수의 노드(100, 200, 300, 400)의 리스트를 탐색하면서, 상기 태스크를 할당할 노드를 로컬 노드 또는 리모트 노드 중에서 선정할 수 있다.
태스크 할당 유닛(22c)은 노드 선정 유닛(22b)에 의해 선정된 타겟 노드에 상기 태스크를 할당한다. 그러면 타겟 노드에 포함된 하나 이상의 프로세싱 유닛이 상기 태스크를 처리하게 된다.
이와 같이, 본 발명의 일 실시예에 따른 반도체 시스템(22)은 태스크가 I/O 집중적 태스크에 해당하는지 여부를 판단하고, I/O 집중적 태스크를 로컬 노드에 할당한다. 이에 따라 I/O 디바이스를 액세스하는 태스크를 처리하는 시간을 단축시킬 수 있어, I/O 비중이 높은 태스크들을 신속하게 처리할 수 있다.
특히, 반도체 시스템(22)은, 과거의 히스토리를 분석하여 I/O 디바이스를 액세스하는 태스크를 처리하는 시간을 단축시키는 개념이 아니라, 운영체제(20)(또는 커널(kernel)) 단에서 태스크 구조 정보만을 분석하여 태스크가 I/O 집중적 태스크에 해당하는지 여부를 판단하기 때문에, 신규 태스크에 대해서도 별도의 히스토리 정보를 유지할 필요 없이 태스크를 어떤 노드에서 처리하게 할 지 신속하게 결정을 내릴 수 있고, 추가적인 정보(예컨대, 히스토리 정보)를 유지할 필요가 없게 된다.
이하에서는 본 발명의 다양한 실시예에 따른 반도체 장치의 동작 방법을 구체적인 예를 들어 설명하도록 한다.
도 4는 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 순서도이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법은 다중 프로세서 시스템에서 처리되는 태스크에 대한 태스크 구조 정보를 획득(S401)하는 것을 포함한다. 앞서 설명한 바와 같이 태스크 구조 정보는 task_struct 구조체를 포함할 수 있다.
다음으로, 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크에 해당되는지 여부를 결정(S403)한다. 상기 태스크가 I/O 집중적 태스크에 해당되는 경우(S403, Y), 상기 태스크를 할당할 타겟 노드로서 로컬 노드를 선정(S405)한다.
이와 다르게, 상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우(S403, N), 상기 태스크를 할당할 타겟 노드로서 아이들 노드를 선정(S405)한다. 여기서 아이들 노드는, 앞서 설명한 바와 같이, I/O 디바이스가 직접 연결되어 있는지 여부와는 무관하게 아이들 프로세싱 유닛이 존재하는 노드를 말한다.
이후, 상기 태스크를 상기 타겟 노드, 즉, I/O 집중적 태스크에 해당되는지 여부에 따라 선정된 노드에 할당(S409)한다.
도 5는 본 발명의 일 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 5를 참조하면, 각각의 노드(100, 200, 300, 400)는 하나 이상의 프로세싱 유닛을 포함하는 클러스터(110, 210, 310, 410) 및 클러스터(110, 210, 310, 410)와 직접 연결된 메모리(120, 220, 320, 420)를 각각 포함한다. 그리고 각각의 노드(100, 200, 300, 400)는 인터커넥션(500)을 통해 서로 연결될 수 있다.
예를 들어, 노드(100)는 프로세싱 유닛(112a 내지 112f)을 포함하는 클러스터(110)를 포함하며, 프로세싱 유닛(112a 내지 112f)은 프로세싱 유닛 버스(114)를 통해 서로 연결된다. 도시되지는 않았지만, 클러스터(110)는 각각의 프로세싱 유닛(112a 내지 112f) 별로 지정된 캐시 메모리(cache memory)를 더 포함할 수도 있다. 한편, 클러스터(110)와 메모리(120)는 버스(130)를 통해 서로 연결된다. 본 실시예에서는 하나의 클러스터에 6 개의 프로세싱 유닛이 포함된 것으로 도시하였으나, 이는 설명을 하기 위한 목적에 불과하고, 하나의 클러스터에 포함되는 프로세싱 유닛의 개수는 시스템의 구현 목적에 따라 달라질 수 있음은 물론이다. 노드(200, 300, 400) 역시 노드(100)과 유사한 구성을 가질 수 있고, 이에 대해 노드(100)과 중복되는 설명은 생략하도록 한다.
주목할 점은, 노드(100)는 다른 노드(200, 300, 400)와는 다르게 I/O 디바이스, 즉 SSD(152)와 직접 연결을 위한 I/O 포트(151)를 구비한다는 점이다. 본 발명의 몇몇의 실시예에서, I/O 포트(150)는 PCIe(PCI Express), SATA(Serial AT Attachment), USB(Universal Serial Bus) 등의 인터페이스를 지원할 수 있으나, 본 발명의 범위는 이에 제한되지 않는다.
이에 따라, I/O 집중적 태스크를 처리하는 경우 SSD(152)와 직접 연결된 노드(100)는 로컬 노드가 되고, SSD(152)가 연결되지 않은 노드(200, 300, 400)는 리모트 노드가 된다. 이하에서는 이와 같은 개념 하에 다양한 예들을 설명하도록 한다.
도 5를 계속하여 참조하면, 노드(100)의 프로세싱 유닛(112a, 112b)에는 I/O 집중적 태스크가 할당된 상태이고, 프로세싱 유닛(112c 내지 112f)은 아이들 상태이다. 한편, 노드(200)의 프로세싱 유닛(212a), 노드(300)의 프로세싱 유닛(312b, 312c) 및 노드(400)의 프로세싱 유닛(412c, 412f)에는 일반 태스크가 할당된 상태이다.
도 4와 관련하여 설명한 바에 따라, 태스크(50)가 I/O 집중적 태스크에 해당되는 것으로 결정된 경우, 태스크(50)는 로컬 노드, 즉, 노드(100)에 할당된다. 구체적으로, 태스크(50)는 노드(100)에서 아이들 프로세싱 유닛(112c)에 할당될 수 있다.
이와 다르게, 태스크(60)가 I/O 집중적 태스크에 해당되지 않는 것으로 결정된 경우, 태스크(60)는 아이들 노드, 예컨대, 노드(200)에 할당된다. 구체적으로, 태스크(60)는 노드(200)에서 아이들 프로세싱 유닛(212b)에 할당될 수 있다.
이와 같은 본 실시예에 따른 반도체 장치의 동작 방법에 따라, 별도의 히스토리 정보를 유지할 필요 없이 태스크가 I/O 집중적 태스크에 해당하는지 여부를 신속하게 결정하고, I/O 집중적 태스크로 결정된 태스크를 로컬 노드에서 처리함으로써, I/O 비중이 높은 태스크들을 신속하게 처리할 수 있다.
도 6은 본 발명의 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 순서도이다.
도 6을 참조하면, 본 발명의 다른 실시예에 따른 반도체 장치의 동작 방법은 다중 프로세서 시스템에서 처리되는 태스크에 대한 태스크 구조 정보를 획득(S601)하는 것을 포함한다. 앞서 설명한 바와 같이 태스크 구조 정보는 task_struct 구조체를 포함할 수 있다.
다음으로, 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크에 해당되는지 여부를 결정(S603)한다. 상기 태스크가 I/O 집중적 태스크에 해당되는 경우(S603, Y), 임시 노드로서 로컬 노드를 선정(S605)한다.
다음으로, 임시 노드로 선정된 로컬 노드에 아이들 프로세싱 유닛이 존재하는지 여부를 판단(S607)한다. 임시 노드로 선정된 로컬 노드에 아이들 프로세싱 유닛이 존재하는 경우(S607, Y), 상기 태스크를 할당할 타겟 노드로서 임시 노드를 지정(S609)한다. 이에 따라 타겟 노드로 로컬 노드가 선정된다.
이와 다르게, 임시 노드로 선정된 로컬 노드에 아이들 프로세싱 유닛이 존재하지 않는 경우(S607, N), 상기 태스크를 할당할 타겟 노드로서 리모트 노드를 선정(S611)한다.
한편, 상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우(S603, N), 상기 태스크를 할당할 타겟 노드로서 아이들 노드를 선정(S613)한다. 여기서 아이들 노드는, 앞서 설명한 바와 같이, I/O 디바이스가 직접 연결되어 있는지 여부와는 무관하게 아이들 프로세싱 유닛이 존재하는 노드를 말한다.
이후, 상기 태스크를 상기 타겟 노드, 즉, I/O 집중적 태스크에 해당되는지 여부에 따라 선정된 노드에 할당(S615)한다.
도 7은 본 발명의 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 7을 참조하면, 노드(100)의 프로세싱 유닛(112a, 112b, 112d, 112e, 112f)에는 I/O 집중적 태스크가 할당된 상태이고, 프로세싱 유닛(112c)은 아이들 상태이다. 한편, 노드(200)의 프로세싱 유닛(212a), 노드(300)의 프로세싱 유닛(312b, 312c) 및 노드(400)의 프로세싱 유닛(412c, 412f)에는 일반 태스크가 할당된 상태이다.
도 6과 관련하여 설명한 바에 따라, 태스크(50a)가 I/O 집중적 태스크에 해당되는 것으로 결정된 경우, 태스크(50a)는 로컬 노드, 즉, 노드(100)에 할당된다. 구체적으로, 태스크(50)는 노드(100)에서 아이들 프로세싱 유닛(112c)에 할당될 수 있다.
이후, 태스크(50b)도 I/O 집중적 태스크에 해당되는 것으로 결정된 경우, 태스크(50b)는 로컬 노드, 즉, 노드(100)에 할당되어야 하지만, 노드(100)에는 아이들 프로세싱 유닛이 존재하지 않는다. 이와 같은 경우, 태스크(50b)는 노드(100)에서 처리되기 위해 대기(wait)하지 않고, 리모트 노드, 예컨대, 노드(400)에 할당된다. 구체적으로, 태스크(50b)는 노드(400)에서 아이들 프로세싱 유닛(412b)에 할당될 수 있다.
한편, 태스크(60)가 I/O 집중적 태스크에 해당되지 않는 것으로 결정된 경우, 태스크(60)는 아이들 노드, 예컨대, 노드(200)에 할당된다. 구체적으로, 태스크(60)는 노드(200)에서 아이들 프로세싱 유닛(212b)에 할당될 수 있다.
이와 같은 본 실시예에 따른 반도체 장치의 동작 방법에 따라, 별도의 히스토리 정보를 유지할 필요 없이 태스크가 I/O 집중적 태스크에 해당하는지 여부를 신속하게 결정하고, I/O 집중적 태스크로 결정된 태스크를 로컬 노드에서 처리함으로써, I/O 비중이 높은 태스크들을 신속하게 처리할 수 있다. 또한, 로컬 노드에 아이들 프로세싱 유닛이 존재하지 않는 경우, I/O 집중적 태스크를 대기시키지 않고 리모트 노드를 통해 처리함으로써, I/O 비중이 높은 태스크들을 신속하게 처리할 수 있다.
도 8은 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 순서도이다.
도 8을 참조하면, 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법은 다중 프로세서 시스템에서 처리되는 태스크에 대한 태스크 구조 정보를 획득(S801)하는 것을 포함한다. 앞서 설명한 바와 같이 태스크 구조 정보는 task_struct 구조체를 포함할 수 있다.
다음으로, 태스크 구조 정보에 상기 태스크에 대한 선호 노드 정보(preferred node information)가 포함되어 있는지 여부를 결정(S803)한다. 본 발명의 몇몇의 실시예에서, 이와 같은 선호 노드 정보는 task_struct 구조체 내에 포함될 수 있다.
본 발명의 몇몇의 실시예에서, 선호 노드 정보는 상기 태스크가 다중 프로세서 시스템의 복수의 노드 중 특정 노드에 할당된 과거 이력에 기반하여 생성될 수 있다. 구체적으로, 상기 태스크가 특정 노드에 할당된 과거 이력을 가지고 있는 경우, 동일한 태스크가 다중 프로세서 시스템에서 다시 스케줄링되어야 할 필요가 있을 때, 우선적으로 상기 특정 노드에 할당될 수 있다.
본 발명의 몇몇의 실시예에서, 선호 노드 정보는 다중 프로세서 시스템에서 동작하는 운영체제(20)를 통해 입력 또는 변경될 수도 있다. 즉, 필요에 따라 운영체제(20)를 통해, 예컨대 관리자의 의도 혹은 사용자의 의도에 따라 우선적으로 특정 노드에 할당되도록 할 수도 있다.
태스크 구조 정보에 상기 태스크에 대한 선호 노드 정보가 포함된 경우(S803, Y), 선호 노드에 아이들 프로세싱 유닛이 존재하는지 여부를 판단(S807)한다. 선호 노드에 아이들 프로세싱 유닛이 존재하는 경우(S807, Y), 상기 태스크를 할당할 타겟 노드로서 선호 노드를 선정(S813)한다.
이와 다르게, 태스크 구조 정보에 상기 태스크에 대한 선호 노드 정보가 포함되지 않은 경우(S803, N)나, 태스크 구조 정보에 상기 태스크에 대한 선호 노드 정보가 포함되었지만 선호 노드에 아이들 프로세싱 유닛이 존재하지 않는 경우(S807, N), 태스크 구조 정보를 추가로 분석하여 상기 태스크가 I/O 집중적 태스크에 해당되는지 여부를 결정(S805)한다. 상기 태스크가 I/O 집중적 태스크에 해당되는 경우(S805, Y), 임시 노드로서 로컬 노드를 선정(S809)한다.
다음으로, 임시 노드로 선정된 로컬 노드에 아이들 프로세싱 유닛이 존재하는지 여부를 판단(S811)한다. 임시 노드로 선정된 로컬 노드에 아이들 프로세싱 유닛이 존재하는 경우(S811, Y), 상기 태스크를 할당할 타겟 노드로서 임시 노드를 지정(S815)한다. 이에 따라 타겟 노드로 로컬 노드가 선정된다.
이와 다르게, 임시 노드로 선정된 로컬 노드에 아이들 프로세싱 유닛이 존재하지 않는 경우(S81, N), 상기 태스크를 할당할 타겟 노드로서 리모트 노드를 선정(S817)한다.
한편, 상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우(S805, N), 상기 태스크를 할당할 타겟 노드로서 아이들 노드를 선정(S819)한다. 여기서 아이들 노드는, 앞서 설명한 바와 같이, I/O 디바이스가 직접 연결되어 있는지 여부와는 무관하게 아이들 프로세싱 유닛이 존재하는 노드를 말한다.
이후, 상기 태스크를 상기 타겟 노드, 즉, I/O 집중적 태스크에 해당되는지 여부에 따라 선정된 노드에 할당(S821)한다.
도 9는 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 9를 참조하면, 노드(100)의 프로세싱 유닛(112a, 112b, 112d, 112e, 112f)에는 I/O 집중적 태스크가 할당된 상태이고, 프로세싱 유닛(112c)은 아이들 상태이다. 한편, 노드(200)의 프로세싱 유닛(212a), 노드(300)의 프로세싱 유닛(312b 내지 312f) 및 노드(400)의 프로세싱 유닛(412c, 412f)에는 일반 태스크가 할당된 상태이다.
도 8과 관련하여 설명한 바에 따라, 태스크(40a)에 대한 태스크 구조 정보에 선호 노드 정보가 노드(300)으로 포함되어 있는 것으로 결정된 경우, 태스크(40a)는 선호 노드, 즉, 노드(300)에 할당된다. 구체적으로, 태스크(40a)는 노드(300)에서 아이들 프로세싱 유닛(312a)에 할당될 수 있다.
이후, 태스크(40b)도 태스크 구조 정보에 선호 노드 정보가 노드(300)으로 포함되어 있는 것으로 결정된 경우, 태스크(40b)는 선호 노드, 즉, 노드(300)에 할당되어야 하지만, 노드(300)에는 아이들 프로세싱 유닛이 존재하지 않는다.
이와 같은 경우, 태스크(40b)에 대한 태스크 구조 정보를 추가로 분석하여 태스크(40b)가 I/O 집중적 태스크에 해당되는 것으로 결정된 경우, 태스크(40b)는 로컬 노드, 즉, 노드(100)에 할당된다. 구체적으로, 태스크(40b)는 노드(100)에서 아이들 프로세싱 유닛(112c)에 할당될 수 있다.
이후, 태스크(40c)도 태스크 구조 정보에 선호 노드 정보가 노드(300)으로 포함되어 있는 것으로 결정된 경우, 태스크(40c)는 선호 노드, 즉, 노드(300)에 할당되어야 하지만, 노드(300)에는 아이들 프로세싱 유닛이 존재하지 않는다.
이와 같은 경우, 태스크(40c)에 대한 태스크 구조 정보를 추가로 분석하여 태스크(40c)가 I/O 집중적 태스크에 해당되는 것으로 결정된 경우, 태스크(40c)는 로컬 노드, 즉, 노드(100)에 할당되어야 하지만, 노드(100)에는 아이들 프로세싱 유닛이 존재하지 않는다.
이 때, 태스크(40c)는 노드(100)에서 처리되기 위해 대기(wait)하지 않고, 리모트 노드, 예컨대, 노드(400)에 할당된다. 구체적으로, 태스크(40c)는 노드(400)에서 아이들 프로세싱 유닛(412b)에 할당될 수 있다.
한편, 태스크(40d)는 선호 노드 정보를 가지고 있지 않고 I/O 집중적 태스크에도 해당되지 않는 것으로 결정된 경우, 태스크(40d)는 아이들 노드, 예컨대, 노드(200)에 할당된다. 구체적으로, 태스크(40d)는 노드(200)에서 아이들 프로세싱 유닛(212b)에 할당될 수 있다.
이와 같은 본 실시예에 따른 반도체 장치의 동작 방법에 따라, 별도의 히스토리 정보를 유지할 필요 없이 태스크가 I/O 집중적 태스크에 해당하는지 여부를 신속하게 결정하고, I/O 집중적 태스크로 결정된 태스크를 로컬 노드에서 처리함으로써, I/O 비중이 높은 태스크들을 신속하게 처리할 수 있다. 또한, 태스크가 특정 노드에 우선적으로 할당될 수 있도록 함으로써, 다중 프로세서 시스템에서의 태스크 처리 방법을 다양화할 수 있다.
도 10은 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이고, 도 11은 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 순서도이다.
도 10을 참조하면, 운영체제(20) 상에서 지원하는 컨트롤 그룹(control group) 중 제1 컨트롤 그룹(cgroup A)은 I/O 집중적 태스크(A1 내지 A4)를 포함하고, 제2 컨트롤 그룹(cgroup B)은 I/O 집중적 태스크(B1 내지 B4)를 포함하고, 제3 컨트롤 그룹(cgroup C)은 I/O 집중적 태스크(C1 내지 C4)를 포함할 수 있다.
도 11을 참조하면, 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법은 다중 프로세서 시스템에서 처리되는 태스크에 대한 태스크 구조 정보를 획득(S1101)하는 것을 포함한다. 앞서 설명한 바와 같이 태스크 구조 정보는 task_struct 구조체를 포함할 수 있다.
다음으로, 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크에 해당되는지 여부를 결정(S1103)한다. 여기서, 태스크는 도 10에 도시된 태스크들로서 모두 I/O 집중적 태스크에 해당(S1103, Y)되는 것으로 가정한다.
이후, 제1 컨트롤 그룹(cgroup A)에 포함된 복수의 태스크(A1 내지 A4)를 로컬 노드 및 리모트 노드에 분배(S1105)하고, 제2 컨트롤 그룹(cgroup B)에 포함된 복수의 태스크(B1 내지 B4)를 로컬 노드 및 리모트 노드에 분배(S1107)하고, 제3 컨트롤 그룹(cgroup C)에 포함된 복수의 태스크(C1 내지 C4)를 로컬 노드 및 리모트 노드에 분배(S1109)한다.
구체적으로, 제1 컨트롤 그룹(cgroup A) 내지 제3 컨트롤 그룹(cgroup C)에 각각 포함된 복수의 태스크 중 일부 태스크를 로컬 노드에 할당하고, 제1 컨트롤 그룹(cgroup A) 내지 제3 컨트롤 그룹(cgroup C)에 각각 포함된 복수의 태스크 중 다른 일부 태스크를 리모트 노드에 할당한다.
본 발명의 몇몇의 실시예에서, 제1 컨트롤 그룹(cgroup A) 내지 제3 컨트롤 그룹(cgroup C)에 각각 포함된 복수의 태스크는, 로컬 노드에 분배된 제1 컨트롤 그룹(cgroup A)의 태스크의 개수, 제2 컨트롤 그룹(cgroup B)의 태스크의 개수 및 제3 컨트롤 그룹(cgroup C)의 태스크의 개수가 서로 동일하도록 분배될 수 있다.
도 12는 본 발명의 또 다른 실시예에 따른 반도체 장치의 동작 방법을 설명하기 위한 개략도이다.
도 12를 참조하면, 노드(200)의 프로세싱 유닛(212a), 노드(300)의 프로세싱 유닛(312b, 312c) 및 노드(400)의 프로세싱 유닛(412c, 412f)에는 일반 태스크가 할당된 상태이다.
도 11과 관련하여 설명한 바에 따라, 제1 컨트롤 그룹(cgroup A)에 포함된 복수의 태스크 중 일부 태스크(A1, A2)는 로컬 노드, 즉 노드(100)에 할당된다. 구체적으로, 태스크(A1, A2)는 노드(100)의 프로세싱 유닛(112a, 112d)에 할당될 수 있다. 한편, 제1 컨트롤 그룹(cgroup A)에 포함된 복수의 태스크 중 다른 일부 태스크(A3, A4)는 노드(300)에 할당될 수 있다.
제2 컨트롤 그룹(cgroup B)에 포함된 복수의 태스크 중 일부 태스크(B1, B2)도 로컬 노드, 즉 노드(100)에 할당된다. 구체적으로, 태스크(B1, B2)는 노드(100)의 프로세싱 유닛(112b, 112e)에 할당될 수 있다. 한편, 제2 컨트롤 그룹(cgroup B)에 포함된 복수의 태스크 중 다른 일부 태스크(B3, B4)는 노드(200)에 할당될 수 있다.
제3 컨트롤 그룹(cgroup C)에 포함된 복수의 태스크 중 일부 태스크(C1, C2)도 로컬 노드, 즉 노드(100)에 할당된다. 구체적으로, 태스크(C1, C2)는 노드(100)의 프로세싱 유닛(112c, 112f)에 할당될 수 있다. 한편, 제3 컨트롤 그룹(cgroup C)에 포함된 복수의 태스크 중 다른 일부 태스크(C3, C4)는 노드(200)에 할당될 수 있다.
이와 같은 본 실시예에 따른 반도체 장치의 동작 방법에 따라, 별도의 히스토리 정보를 유지할 필요 없이 태스크가 I/O 집중적 태스크에 해당하는지 여부를 신속하게 결정하고, I/O 집중적 태스크로 결정된 태스크를 로컬 노드에서 처리함으로써, I/O 비중이 높은 태스크들을 신속하게 처리할 수 있다. 또한, 짧은 시간에 처리해야 할 I/O 집중적 태스크의 양이 많아지는 경우, 컨트롤 그룹 별로 로컬 노드를 균형 있게 사용할 수 있다.
도 13은 본 발명의 실시예에 따른 반도체 장치의 동작 방법 및 반도체 시스템이 적용될 수 있는 전자 시스템의 블록도이다.
도 13을 참조하면, 본 발명의 실시예에 따른 반도체 시스템(1100)은 컨트롤러(1110), 입출력 장치(1120, I/O), 기억 장치(1130, memory device), 인터페이스(1140) 및 버스(1150, bus)를 포함할 수 있다. 컨트롤러(1110), 입출력 장치(1120), 기억 장치(1130) 및/또는 인터페이스(1140)는 버스(1150)를 통하여 서로 결합될 수 있다. 버스(1150)는 데이터들이 이동되는 통로(path)에 해당한다.
컨트롤러(1110)는 마이크로프로세서, 디지털 신호 프로세스, 마이크로컨트롤러, 및 이들과 유사한 기능을 수행할 수 있는 논리 소자들 중에서 적어도 하나를 포함할 수 있다. 입출력 장치(1120)는 키패드(keypad), 키보드 및 디스플레이 장치등을 포함할 수 있다. 기억 장치(1130)는 데이터 및/또는 명령어등을 저장할 수 있다. 인터페이스(1140)는 통신 네트워크로 데이터를 전송하거나 통신 네트워크로부터 데이터를 수신하는 기능을 수행할 수 있다. 인터페이스(1140)는 유선 또는 무선 형태일 수 있다. 예컨대, 인터페이스(1140)는 안테나 또는 유무선 트랜시버등을 포함할 수 있다.
도시하지 않았지만, 반도체 시스템(1100)은 컨트롤러(1110)의 동작을 향상시키기 위한 동작 메모리로서, 고속의 디램 및/또는 에스램 등을 더 포함할 수도 있다.
또한, 앞서 설명한 본 발명의 실시예에 따른 프로세서는, 기억 장치(1130) 내에 제공되거나, 컨트롤러(1110), 입출력 장치(1120, I/O) 등의 일부로 제공될 수 있다.
반도체 시스템(1100)은 개인 휴대용 정보 단말기(PDA, personal digital assistant) 포터블 컴퓨터(portable computer), 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 디지털 뮤직 플레이어(digital music player), 메모리 카드(memory card), 또는 정보를 무선환경에서 송신 및/또는 수신할 수 있는 모든 전자 제품에 적용될 수 있다.
도 14 내지 도 16은 본 발명의 몇몇 실시예들에 따른 반도체 장치의 동작 방법을 적용할 수 있는 예시적인 반도체 시스템들이다.
도 14는 태블릿 PC(1200)을 도시한 도면이고, 도 15는 노트북(1300)을 도시한 도면이며, 도 16은 스마트폰(1400)을 도시한 것이다. 본 발명의 실시예에 따른 프로세서 중 적어도 하나는 이러한 태블릿 PC(1200), 노트북(1300), 스마트폰(1400) 등에 사용될 수 있다.
또한, 본 발명의 몇몇 실시예들에 따라 제조된 반도체 장치는, 예시하지 않는 다른 집적 회로 장치에도 적용될 수 있음은 해당 기술 분야의 통상의 기술자에게 자명하다.
즉, 이상에서는 본 실시예에 따른 반도체 시스템의 예로, 태블릿 PC(1200), 노트북(1300), 및 스마트폰(1400)만을 들었으나, 본 실시예에 따른 반도체 시스템의 예가 이에 제한되는 것은 아니다.
본 발명의 몇몇 실시예에서, 반도체 시스템은, 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 무선 전화기(wireless phone), 모바일 폰(mobile phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player) 등으로 구현될 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 하드웨어 20: 운영체제
21: 스케줄러 22: 반도체 시스템
22a: 태스크 분석 유닛 22b: 노드 선정 유닛
22c: 태스크 할당 유닛 30: 어플리케이션
40, 50, 60: 태스크 100, 200, 300, 400: 노드
110, 210, 310, 410: 프로세싱 유닛의 클러스터
112, 212, 312, 412: 프로세싱 유닛
114, 214, 314, 414: 프로세싱 유닛 버스
120, 220, 320, 420: 메모리 130, 230, 330, 430: 버스
150: I/O 디바이스 151: I/O 포트
152: SSD 500: 인터커넥션

Claims (20)

  1. 다중 프로세서 시스템(multiprocessor system)에서 처리되는 태스크(task)에 대한 태스크 구조 정보를 획득하고, 상기 다중 프로세서 시스템은 각각 하나 이상의 프로세싱 유닛 및 상기 프로세싱 유닛과 직접(directly) 연결된 메모리를 포함하는 복수의 노드(node)를 포함하고, 상기 복수의 노드는 I/O 디바이스가 직접 연결된 로컬 노드 및 I/O 디바이스가 직접 연결되지 않은 리모트 노드를 포함하고,
    상기 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크(I/O intensive task)에 해당되는지 여부를 결정하고,
    상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 상기 태스크를 상기 로컬 노드에 할당하는 것을 포함하는 반도체 장치의 동작 방법.
  2. 제1항에 있어서,
    상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우, 상기 태스크를 상기 리모트 노드에 할당하는 것을 더 포함하는 반도체 장치의 동작 방법.
  3. 제1항에 있어서,
    상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우, 상기 태스크를 상기 복수의 노드 중 아이들(idle) 프로세싱 유닛이 존재하는 노드에 할당하는 것을 더 포함하는 반도체 장치의 동작 방법.
  4. 제1항에 있어서,
    상기 태스크 구조 정보는 task_struct 구조체를 포함하는 반도체 장치의 동작 방법.
  5. 제1항에 있어서,
    상기 I/O 집중적 태스크는 상기 I/O 디바이스를 액세스하는 태스크를 포함하는 반도체 장치의 동작 방법.
  6. 제1항에 있어서,
    상기 태스크를 상기 로컬 노드에 할당하는 것은,
    상기 로컬 노드의 하나 이상의 프로세싱 유닛 중 아이들(idle) 프로세싱 유닛이 존재하는지 여부를 판단하고,
    상기 로컬 노드에 상기 아이들 프로세싱 유닛이 존재하지 않는 경우, 상기 태스크를 상기 리모트 노드에 할당하는 것을 더 포함하는 반도체 장치의 동작 방법.
  7. 제1항에 있어서,
    상기 태스크 구조 정보에 상기 태스크에 대한 선호 노드 정보(preferred node information)가 포함되어 있는지 여부를 결정하고,
    상기 태스크 구조 정보에 상기 선호 노드 정보가 포함된 경우, 상기 태스크를 상기 복수의 노드 중 상기 선호 노드 정보에 의해 지시되는 선호 노드에 할당하는 것을 더 포함하는 반도체 장치의 동작 방법.
  8. 제7항에 있어서,
    상기 태스크를 상기 선호 노드에 할당하는 것은,
    상기 선호 노드의 하나 이상의 프로세싱 유닛 중 아이들(idle) 프로세싱 유닛이 존재하는지 여부를 판단하고,
    상기 선호 노드에 상기 아이들 프로세싱 유닛이 존재하지 않는 경우, 상기 태스크 구조 정보를 추가로 분석하는 것을 포함하는 반도체 장치의 동작 방법.
  9. 제7항에 있어서,
    상기 선호 노드 정보는, 상기 태스크가 상기 복수의 노드 중 특정 노드에 할당된 과거 이력에 기반하여 생성되는 반도체 장치의 동작 방법.
  10. 제7항에 있어서,
    상기 선호 노드 정보는, 상기 다중 프로세서 시스템에서 동작하는 운영체제(operating system)를 통해 입력 또는 변경될 수 있는 반도체 장치의 동작 방법.
  11. 제1항에 있어서,
    상기 태스크는 제1 컨트롤 그룹에 포함되는 복수의 태스크 및 상기 제1 컨트롤 그룹과 다른 제2 컨트롤 그룹에 포함되는 복수의 태스크를 포함하고,
    상기 태스크를 상기 로컬 노드에 할당하는 것은,
    상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 태스크를 상기 로컬 노드 및 상기 리모트 노드에 분배하는 것을 포함하는 반도체 장치의 동작 방법.
  12. 제11항에 있어서,
    상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 태스크를 상기 로컬 노드 및 상기 리모트 노드에 분배하는 것은,
    상기 제1 컨트롤 그룹에 포함된 복수의 태스크 중 일부 태스크와 상기 제2 컨트롤 그룹에 포함된 복수의 태스크 중 일부 태스크를 상기 로컬 노드에 할당하고,
    상기 제1 컨트롤 그룹에 포함된 복수의 태스크 중 다른 일부 태스크와 상기 제2 컨트롤 그룹에 포함된 복수의 태스크 중 다른 일부 태스크를 상기 리모트 노드에 할당하는 것을 포함하는 반도체 장치의 동작 방법.
  13. 제11항에 있어서,
    상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 태스크를 상기 로컬 노드 및 상기 리모트 노드에 분배하는 것은,
    상기 로컬 노드에 분배된 상기 제1 컨트롤 그룹의 태스크의 개수와 상기 제2 컨트롤 그룹의 태스크의 개수가 동일하도록 상기 제1 컨트롤 그룹 및 상기 제2 컨트롤 그룹에 각각 포함된 복수의 태스크를 분배하는 것을 포함하는 반도체 장치의 동작 방법.
  14. 다중 프로세서 시스템(multiprocessor system)에서 처리되는 복수의 태스크(task)의 리스트를 획득하고,
    상기 다중 프로세서 시스템에 포함된 복수의 노드의 리스트를 획득하고,
    상기 복수의 태스크를 I/O 집중적 태스크(I/O intensive task) 및 일반 태스크 중 어느 하나로 분류하고,
    상기 복수의 노드 리스트를 탐색하면서 상기 I/O 집중적 태스크를 I/O 디바이스가 직접(directly) 연결된 로컬 노드에 할당하고, 상기 일반 태스크를 I/O 디바이스가 직접 연결되지 않은 리모트 노드에 할당하는 것을 포함하는 반도체 장치의 동작 방법.
  15. 프로세서로 하여금,
    다중 프로세서 시스템(multiprocessor system)에서 처리되는 태스크(task)에 대한 태스크 구조 정보를 획득하고, 상기 다중 프로세서 시스템은 각각 하나 이상의 프로세싱 유닛 및 상기 프로세싱 유닛과 직접(directly) 연결된 메모리를 포함하는 복수의 노드(node)를 포함하고, 상기 복수의 노드는 I/O 디바이스가 직접 연결된 로컬 노드 및 I/O 디바이스가 직접 연결되지 않은 리모트 노드를 포함하고,
    상기 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크(I/O intensive task)에 해당되는지 여부를 결정하고,
    상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 상기 태스크를 상기 로컬 노드에 할당하는 것을 포함하는 동작을 수행하도록 하는 인스트럭션(insrtuction)을 포함하는 컴퓨터로 판독 가능한 기록 매체.
  16. 컴퓨터로 판독 가능한 인스트럭션(instruction)을 포함하는 메모리; 및
    상기 컴퓨터로 판독 가능한 인스트럭션을 실행하는 하나 이상의 프로세서를 포함하고,
    상기 컴퓨터로 판독 가능한 인스트럭션은,
    다중 프로세서 시스템(multiprocessor system)에서 처리되는 태스크(task)에 대한 태스크 구조 정보를 획득하고, 상기 다중 프로세서 시스템은 각각 하나 이상의 프로세싱 유닛 및 상기 프로세싱 유닛과 직접(directly) 연결된 메모리를 포함하는 복수의 노드(node)를 포함하고, 상기 복수의 노드는 I/O 디바이스가 직접 연결된 로컬 노드 및 I/O 디바이스가 직접 연결되지 않은 리모트 노드를 포함하고,
    상기 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크(I/O intensive task)에 해당되는지 여부를 결정하고,
    상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 상기 태스크를 상기 로컬 노드에 할당하는 것을 포함하는 동작을 수행하도록 하는 반도체 장치.
  17. 다중 프로세서 시스템(multiprocessor system)에서 처리되는 태스크(task)에 대한 태스크 구조 정보 및 상기 다중 프로세서 시스템에 포함된 복수의 노드의 리스트를 획득하고, 상기 태스크 구조 정보를 분석하여 상기 태스크가 I/O 집중적 태스크(I/O intensive task)에 해당되는지 여부를 결정하는 태스크 분석 유닛;
    상기 태스크가 I/O 집중적 태스크에 해당되는지 여부에 따라, 상기 복수의 노드 리스트를 탐색하여 상기 태스크를 할당할 노드를 I/O 디바이스가 직접(directly) 연결된 로컬 노드 또는 I/O 디바이스가 직접 연결되지 않은 리모트 노드 중에서 선정하는 노드 선정 유닛; 및
    상기 선정된 노드에 상기 태스크를 할당하는 태스크 할당 유닛을 포함하는 반도체 시스템.
  18. 제17항에 있어서,
    상기 태스크가 I/O 집중적 태스크에 해당되는 경우, 상기 노드 선정 유닛은 상기 태스크를 할당할 노드로 상기 로컬 노드를 선정하는 반도체 시스템.
  19. 제17항에 있어서,
    상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우, 상기 노드 선정 유닛은 상기 태스크를 할당할 노드로 상기 리모트 노드를 선정하는 반도체 시스템.
  20. 제17항에 있어서,
    상기 태스크가 I/O 집중적 태스크에 해당되지 않는 경우, 상기 노드 선정 유닛은 상기 태스크를 할당할 노드로 상기 복수의 노드 중 아이들(idle) 프로세싱 유닛이 존재하는 노드를 선정하는 반도체 시스템.
KR1020160016229A 2016-02-12 2016-02-12 반도체 장치의 동작 방법 및 반도체 시스템 KR20170094911A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160016229A KR20170094911A (ko) 2016-02-12 2016-02-12 반도체 장치의 동작 방법 및 반도체 시스템
US15/340,138 US20170235607A1 (en) 2016-02-12 2016-11-01 Method for operating semiconductor device and semiconductor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160016229A KR20170094911A (ko) 2016-02-12 2016-02-12 반도체 장치의 동작 방법 및 반도체 시스템

Publications (1)

Publication Number Publication Date
KR20170094911A true KR20170094911A (ko) 2017-08-22

Family

ID=59562080

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160016229A KR20170094911A (ko) 2016-02-12 2016-02-12 반도체 장치의 동작 방법 및 반도체 시스템

Country Status (2)

Country Link
US (1) US20170235607A1 (ko)
KR (1) KR20170094911A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11263059B2 (en) * 2018-09-07 2022-03-01 International Business Machines Corporation Load leveler
CN110109752A (zh) * 2019-04-12 2019-08-09 平安普惠企业管理有限公司 一种任务分配方法、装置、电子设备及存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4855899A (en) * 1987-04-13 1989-08-08 Prime Computer, Inc. Multiple I/O bus virtual broadcast of programmed I/O instructions
CA2309926A1 (en) * 1997-11-14 1999-05-27 Erik Muench Method for maintaining the synchronized execution in fault resilient/fault tolerant computer systems
US7657706B2 (en) * 2003-12-18 2010-02-02 Cisco Technology, Inc. High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory
US7743140B2 (en) * 2006-12-08 2010-06-22 International Business Machines Corporation Binding processes in a non-uniform memory access system
US8359453B2 (en) * 2010-09-13 2013-01-22 International Business Machines Corporation Real address accessing in a coprocessor executing on behalf of an unprivileged process
US8996756B2 (en) * 2010-09-17 2015-03-31 Oracle International Corporation Using process location to bind IO resources on NUMA architectures
US20150161385A1 (en) * 2012-08-10 2015-06-11 Concurix Corporation Memory Management Parameters Derived from System Modeling
US9183017B2 (en) * 2012-10-19 2015-11-10 International Business Machines Corporation Affinity of virtual processor dispatching
US9563585B2 (en) * 2014-02-19 2017-02-07 Futurewei Technologies, Inc. System and method for isolating I/O execution via compiler and OS support
US20150256645A1 (en) * 2014-03-10 2015-09-10 Riverscale Ltd Software Enabled Network Storage Accelerator (SENSA) - Network Server With Dedicated Co-processor Hardware Implementation of Storage Target Application
US10721302B2 (en) * 2014-12-05 2020-07-21 Foundation for Research and Technology—Hellas (FORTH) Network storage protocol and adaptive batching apparatuses, methods, and systems
US10452538B2 (en) * 2015-01-21 2019-10-22 Red Hat, Inc. Determining task scores reflective of memory access statistics in NUMA systems
CN106201691A (zh) * 2016-07-11 2016-12-07 浪潮(北京)电子信息产业有限公司 一种网络io密集型任务的调度方法及装置

Also Published As

Publication number Publication date
US20170235607A1 (en) 2017-08-17

Similar Documents

Publication Publication Date Title
JP5210730B2 (ja) 仮想マシンモニタ及びマルチプロセッサシステム
RU2571366C2 (ru) Виртуальная архитектура неоднородного доступа к памяти для виртуальных машин
JP6355114B2 (ja) リソース処理方法、オペレーティング・システム、およびデバイス
US10248444B2 (en) Method of migrating virtual machines between non-uniform memory access nodes within an information handling system
KR102197874B1 (ko) 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
KR101385827B1 (ko) 가상화된 환경들 내의 리소스 할당
US10831539B2 (en) Hardware thread switching for scheduling policy in a processor
JP2016541072A5 (ko)
EP3785113B1 (en) Feedback guided split workgroup dispatch for gpus
US9792209B2 (en) Method and apparatus for cache memory data processing
CN110023904B (zh) 双模式本地数据存储
KR20170094911A (ko) 반도체 장치의 동작 방법 및 반도체 시스템
KR20160061726A (ko) 인터럽트 핸들링 방법
US7426622B2 (en) Rapid locality selection for efficient memory allocation
KR20130066399A (ko) 메모리 컨트롤러 및 메모리 컨트롤 방법
Ha et al. Dynamic Capacity Service for Improving CXL Pooled Memory Efficiency
US20140281343A1 (en) Information processing apparatus, program, and memory area allocation method
JP4872942B2 (ja) ストレージシステム、ストレージ装置、優先度制御装置および優先度制御方法
JP4773835B2 (ja) 処理制御装置およびその方法
US20190278714A1 (en) System and method for memory access latency values in a virtual machine
JP6445876B2 (ja) リソース割当装置、リソース割当システム、および、リソース割当方法
JPWO2012127534A1 (ja) バリア同期方法、バリア同期装置及び演算処理装置
JP2013041361A (ja) リソース調停システム及び調停方法
US20190278715A1 (en) System and method for managing distribution of virtual memory over multiple physical memories
KR20230102241A (ko) 멀티 코어 프로세싱 장치의 캐시 사용량 스케줄링 방법 및 이를 수행하는 멀티 코어 프로세싱 장치