KR20110114264A - 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법 - Google Patents

멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법 Download PDF

Info

Publication number
KR20110114264A
KR20110114264A KR1020100033813A KR20100033813A KR20110114264A KR 20110114264 A KR20110114264 A KR 20110114264A KR 1020100033813 A KR1020100033813 A KR 1020100033813A KR 20100033813 A KR20100033813 A KR 20100033813A KR 20110114264 A KR20110114264 A KR 20110114264A
Authority
KR
South Korea
Prior art keywords
core
lock variable
lock
notification signal
cores
Prior art date
Application number
KR1020100033813A
Other languages
English (en)
Other versions
KR101664108B1 (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 KR1020100033813A priority Critical patent/KR101664108B1/ko
Priority to US12/904,782 priority patent/US8688885B2/en
Publication of KR20110114264A publication Critical patent/KR20110114264A/ko
Application granted granted Critical
Publication of KR101664108B1 publication Critical patent/KR101664108B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/81Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer by operating on the power supply, e.g. enabling or disabling power-on, sleep or resume operations
    • 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/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Power Sources (AREA)
  • Multi Processors (AREA)

Abstract

멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법에 관한 것으로서, 락 변수의 획득에 실패한 코어는 저전력 슬립 모드로 전환하여 전력 낭비를 줄이고, 락 변수가 반환되면, 저전력 슬립 모드로 동작하는 코어에 알림 신호를 전송하여 활성화 시키는 것을 특징으로 한다.

Description

멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법{APPARATUS AND METHOD OF HARDWARE ACCELERATION FOR PROCESSING SYNCHRONIZATION OF MULTI CORE}
본 발명의 실시예들은 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법에 관한 것으로서, 락 변수를 획득하기 위해서 스핀을 반복적으로 수행하지 않고, 공유 메모리에 락 변수를 저장함으로써 최소의 비용으로 시스템의 향상시킬 수 있다.
멀티 코어는 하나의 칩에 여러 개의 프로세서 코어를 집적하여 고성능 및 저전력을 달성하는 설계 기술로서 일반적으로 많은 전자기기에 적용된다.
응용프로그램을 구성하는 각각의 알고리즘을 여러 코어에 나누어서 구현할 때, 코어 간에 동기를 맞추거나 데이터를 주고 받기 위해 멀티 코어 동기화가 필요하다.
멀티 코어의 동기화를 효과적으로 수행하는 것이 멀티 코어 시스템의 성능을 scalable하게 향상시키는데 가장 중요한 요소 중 하나이다.
Spin lock은 멀티 코어 동기화의 가장 기본적인 기능이다.
공유 자원에 대한 접근 제어를 위해 공유 메모리에 락 변수를 두고, spin_lock() 함수를 통해서 락을 획득한 코어만이 해당 자원에 대한 독점적인 사용권을 갖는다.
락 획득에 실패한 코어는 일정 딜레이 시간(backoff delay)을 기다렸다가 다시 시도하고, 성공할 때까지 위 과정을 반복한다.
락을 소유하고 있는 코어는 spin_unlock() 함수를 통해서 락 변수를 반환할 수 있다.
이러한 Spin lock 기법에서, 성능 향상을 위해, 소프트웨어적으로 backoff delay를 예측할 수 있다.
딜레이를 예측하기 위해서는, 상수 딜레이를 사용하는 간단한 것부터 히스토리에 기반해서 딜레이를 적합하게 조정하는 복잡한 것까지 다양한데, 일반적으로 exponential backoff 방식(딜레이' = 딜레이 * 2)이 가장 효율적이라고 알려져 있다.
본 발명의 일실시예에 따른 하드웨어 가속 장치는 락 변수의 획득을 실패하여 공유 자원에 대한 접근 권한을 갖고 있지 않은 제1 코어, 상기 락 변수를 획득하여 상기 접근 권한을 갖는 제2 코어, 및 상기 제1 코어 및 상기 제2 코어가 접근하려는 상기 공유 자원을 저장하는 공유 메모리를 포함하고, 상기 제1 코어는 상기 락 변수를 획득할 때까지 저전력 슬립 모드로 동작할 수 있다.
본 발명의 일실시예에 따른 하드웨어 가속 방법은 락 변수의 획득을 실패하여 공유 자원에 대한 접근 권한을 갖고 있지 않은 제1 코어 세트를 유지하는 단계, 상기 락 변수를 획득하여 상기 접근 권한을 갖는 제2 코어 세트를 유지하는 단계, 상기 제1 코어 세트 및 상기 제2 코어 세트가 접근하려는 상기 공유 자원을 저장하는 단계, 및 상기 제2 코어 세트로부터 상기 락 변수가 반환되는 경우, 선정된 알림 신호를 생성하고, 상기 생성된 알림 신호를 이용하여 저전력 슬립 모드로 동작하는 상기 제1 코어 세트 중에서 특정 코어를 활성화시키는 단계를 포함할 수 있다.
본 발명의 실시예들에 따르면, 최소의 비용으로 시스템의 효율을 향상시킬 수 있다.
본 발명의 실시예들에 따르면, 코어의 개수가 증가하더라도 시스템의 효율을 유지할 수 있다.
본 발명의 실시예들에 따르면, 락 변수를 획득하기 위해 스핀하는 코어로부터 발생하는 시스템 부하를 줄일 수 있다.
본 발명의 실시예들에 따르면, 메모리 사용량과 에너지 소모량을 을 감소시킬 수 있다.
도 1은 본 발명의 일실시예에 따른 하드웨어 가속 장치를 설명하기 위한 블록도이다.
도 2는 본 발명의 일실시예에 따른 메모리 컨트롤러와 공유 메모리를 구체적으로 설명하는 도면이다.
도 3은 본 발명의 일실시예에 따른 하드웨어 가속 방법을 설명하기 위한 흐름도이다.
도 4는 본 발명의 일실시예에 따른 하드웨어 가속 방법을 구체적으로 설명하기 위한 흐름도이다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고, 본 명세서에서 사용되는 용어(terminology)들은 본 발명의 바람직한 실시예를 적절히 표현하기 위해 사용된 용어들로서, 이는 사용자, 운용자의 의도 또는 본 발명이 속하는 분야의 관례 등에 따라 달라질 수 있다. 따라서, 본 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 따른 하드웨어 가속 장치(100)를 설명하기 위한 블록도이다.
하드웨어 가속 장치(100)는 제1 코어(110), 제2 코어(120), 메모리 컨트롤러(130), 및 공유 메모리(140)를 포함할 수 있다.
제1 코어(110)와 제2 코어(120)는 멀티 코어를 구성하는 코어들로서, 락 변수를 획득하는 경우에 공유 자원에 대한 접근 권한을 갖게 될 수 있다.
예를 들어, 최초, 제1 코어(110)는 락 변수의 획득을 실패하여 공유 자원에 대한 접근 권한을 갖고 있지 않은 코어로 해석할 수 있고, 제2 코어(120)는 락 변수를 획득하여 공유 자원에 대한 접근 권한을 갖고 있는 코어로 해석할 수 있다.
본 발명의 일실시예에 따른 메모리 컨트롤러(130)는 제2 코어(120)로부터 상기 락 변수가 반환되는 경우, 선정된 알림 신호를 생성할 수 있다.
제1 코어(110)는 상기 알림 신호를 수신하는 경우에 활성화 상태로 전환하고, 상기 메모리 컨트롤러로 상기 반환된 락 변수를 요청할 수 있다.
또한, 제2 코어(120)는 제1 코어(110)가 활성화 상태로 전환되고, 상기 요청한 락 변수를 획득함에 따라서, 상기 접근 권한을 제1 코어(110)로 반환할 수 있다.
본 발명의 일실시예에 따른 메모리 컨트롤러(130)는 상기 생성된 알림 신호를 이용하여 저전력 슬립 모드로 동작하는 제1 코어(110)를 활성화시킬 수 있다.
구체적으로, 최초 제1 코어(110)는 제2 코어(120)와 상기 공유 자원에 대한 선점을 경쟁하기 위해서 락 변수의 획득을 경쟁할 수 있다.
이에, 제2 코어(120)가 상기 락 변수를 획득하여 상기 공유 자원에 대하여 접근 권한을 갖게 될 수 있다. 이 경우, 제1 코어(110)는 상기 락 변수의 획득 실패로 인해, 선정된 시간을 딜레이하여 상기 락 변수의 획득을 위해 재시도하지 않는다.
본 발명의 일실시예에 따른 메모리 컨트롤러(130)는 제1 코어(110)가 락 변수를 획득하지 못했을 때, 제1 코어(110)를 저전력 슬립 모드로 동작하도록 제어할 수 있다.
상기 저전력 슬립 모드라 함은, 코어가 선정된 주기로 락 변수의 획득을 위해서 메모리 컨트롤러(130)를 파싱하지 않고, 최소한의 전력만을 사용하면서 on상태만을 유지하는 것으로 해석될 수 있다.
제2 코어(120)가 상기 공유 자원에 대한 접근 권한이 필요없게 되어, 상기 락 변수를 본 발명의 일실시예에 따른 메모리 컨트롤러(130)에 반환할 수 있다.
이 경우, 본 발명의 일실시예에 따른 메모리 컨트롤러(130)는 저전력 슬립 모드로 동작하는 코어를 일반 활성화 모드로 변경시키기 위해서, 알림 신호를 생성할 수 있다.
본 발명의 일실시예에 따른 메모리 컨트롤러(130)는 제1 코어(110)에 상기 락 변수를 할당하기 위해서, 상기 생성한 알림 신호를 제1 코어(110)로 전송할 수 있다.
이에, 상기 알림 신호를 수신하는 제1 코어(110)는 저전력 슬립 모드 상태에서 활성화 모드로 변경될 수 있다.
활성화 모드로 변경된 제1 코어(110)는 상기 공유 자원에 대한 접근 권한을 선점하기 위해서, 메모리 컨트롤러(130)에 상기 락 변수를 요청할 수 있다.
제1 코어(110)가 상기 요청한 락 변수를 획득하면, 상기 공유 자원에 대한 접근 권한을 선점하게 되고, 제1 코어(110)를 제외한 나머지 코어들은 상기 공유 자원에 대한 접근 권한을 잃게 된다.
공유 메모리(140)는 상기 락 변수에 대한 실제 정보를 저장하고, 상기 락 변수와 함께 상기 공유 자원을 저장할 수 있다.
본 발명의 일실시예에 따른 메모리 컨트롤러(130)는 상기 락 변수를 직접 저장하지 않고, 공유 메모리(140)에 상기 락 변수가 저장된 어드레스를 저장할 수 있다.
즉, 공유 메모리(140)는 소정의 어드레스에 해당하는 위치에 상기 반환되는 락 변수를 저장하고, 메모리 컨트롤러(130)는 제1 코어(110) 및 제2 코어(120) 중에서 적어도 하나의 코어에 대해 상기 락 변수의 획득 여부를 표시하는 락 상태 정보와, 상기 락 상태 정보에 대응하여 상기 소정의 어드레스 정보를 저장할 수 있다.
도 2는 본 발명의 일실시예에 따른 메모리 컨트롤러(210)와 공유 메모리(220)를 구체적으로 설명하는 도면이다.
도 2를 참조하면, 메모리 컨트롤러(210)는 각각의 코어별로 락 상태 정보(lock_state)와 어드레스 정보를 테이블 형태로 유지할 수 있다.
상기 락 상태 정보는 락 변수를 획득하였는지 여부에 대한 정보를 소정의 영역(211)에 저장할 수 있다.
이때, 소정의 영역(211)에는 'FAIL' 또는 'TRUE'로서 상기 락 변수를 획득하였는지를 구분하는 상기 락 상태 정보를 저장할 수 있다.
소정의 영역(211)에 대응하여, 소정의 영역(212)은 해당 코어가 lock 획득을 시도한 메모리 주소를 저장할 수 있다.
구체적으로, 소정의 영역(212)은 해당 코어가 획득하려는 락 변수가 저장된 공유 메모리(220) 상의 특정 위치(221)에 대한 어드레스 정보를 저장할 수 있다.
알림 신호에 의해서 활성화된 제1 코어는 메모리 컨트롤러(210)의 소정의 영역(212)을 참고하여, 공유 메모리(220)로부터 상기 락 변수를 획득할 수 있다.
상기 락 변수를 획득한 상기 제1 코어는 상기 공유 자원에 대한 접근 권한을 획득할 수 있다.
본 발명의 일실시예에 따른 메모리 컨트롤러(210)는 상기 제1 코어 및 상기 제2 코어 중에서 적어도 하나의 코어에 대해, 상기 락 상태 정보를 이용하여 상기 접근 권한을 확인하고, 상기 락 상태 정보를 업데이트할 수 있다.
도 3은 본 발명의 일실시예에 따른 하드웨어 가속 방법을 설명하기 위한 흐름도이다.
본 발명의 일실시예에 따른 하드웨어 가속 방법은 제1 코어 세트와 제2 코어 세트를 유지할 수 있다(단계 301).
구체적으로, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 상기 락 변수의 획득을 실패하여 공유 자원에 대한 접근 권한을 갖고 있지 않은 제1 코어 세트를 유지하고, 상기 락 변수를 획득하여 상기 접근 권한을 갖는 제2 코어 세트를 유지할 수 있다.
본 발명의 일실시예에 따른 하드웨어 가속 방법은 상기 제1 코어 세트 및 상기 제2 코어 세트가 접근하려는 상기 공유 자원을 저장하고, 이를 유지할 수 있다(단계 302).
본 발명의 일실시예에 따른 하드웨어 가속 방법은 상기 제2 코어 세트로부터 상기 락 변수가 반환되는 경우, 선정된 알림 신호를 생성할 수 있다(단계 303).
이에, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 상기 생성된 알림 신호를 이용하여 저전력 슬립 모드로 동작하는 상기 제1 코어 세트 중에서 특정 코어를 활성화시킬 수 있다(단계 304).
본 발명의 일실시예에 따른 하드웨어 가속 방법은 상기 특정 코어를 활성화 시키기 위해서, 상기 제2 코어 세트에 포함된 코어들에 대한 우선순위를 확인할 수 있다.
구체적으로, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 상기 제2 코어 세트에 포함된 코어들에 대한 우선순위를 확인하고, 상기 확인된 우선순위 중에서 우선순위가 가장 높은 상기 특정 코어에 상기 알림 신호를 전송하여 활성화 시킬 수 있다.
다른 예로써, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 상기 특정 코어를 활성화 시키기 위해서, 상기 제2 코어 세트에 포함된 모든 코어들에 상기 알림 신호를 전송하여 활성화 시킬 수 있다.
상기 제2 코어 세트는 락 변수를 획득하는 스핀 동작을 반복적으로 수행하지 않고, 저전력 슬립 모드로 전환되어 있다.
이때, 상기 제2 코어 세트는 락 변수의 획득을 경쟁하기 위해서, 활성화되어야 하는데, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 특정 코어만 활성화하지 않고, 현재 저전력 슬립 모드로 대기 중인 모든 코어들을 우선 활성화 시킬 수 있다.
구체적으로, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 제1 코어 세트 중에서 제1 코어가 락 변수의 획득을 실패하는 경우, 메모리 컨트롤러에서 상기 제1 코어의 락 상태 정보를 FAIL로 설정할 수 있다.
이에, 상기 제2 코어(또는 제2 코어 세트)는 저전력 슬립 모드로 전환되고, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 제1 코어가 상기 락 변수를 반환하는 경우에 알림 신호를 생성하여 상기 제2 코어(또는 제2 코어 세트)로 전송할 수 있다. 이에, 제2 코어(또는 제2 코어 세트 중 특정 코어)는 상기 알림 신호에 기초하여 저전력 슬립 상태에서 활성화 상태로 전환될 수 있다.
락 상태 정보가 'FAIL'인 코어가 복수개 존재하는 경우, 즉 저전력 슬립 상태로 전환된 코어가 복수개 존재하는 경우, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 코어들의 우선 순위에 기반해서 그 중 가장 우선 순위가 높은 코어에만 상기 알림 신호를 전송할 수 있다.
본 발명의 다른 일실시예에 따른 하드웨어 가속 방법은 락 상태 정보가 'FAIL'인 코어가 복수개 존재하는 경우에 상기 복수개 코어들에 모두 상기 알림 신호를 전송할 수도 있다.
이때 해당 코어는 동시에 깨어난 다른 코어들은 락 변수 획득을 위해 경쟁해야 한다.
본 발명의 다른 일실시예에 따른 하드웨어 가속 방법은 저전력 슬립 모드로 동작하는 코어들을 확인할 필요 없이, 현재 시스템에 존재하는 모든 코어들에 상기 알림 신호를 전송할 수도 있다.
이 경우, 상기 저전력 슬립 모드로 동작하지 않는 코어들은 상기 알림 신호를 무시할 수 있다.
도 4는 본 발명의 일실시예에 따른 하드웨어 가속 방법을 구체적으로 설명하기 위한 흐름도이다.
본 발명의 일실시예에 따른 하드웨어 가속 방법은 코어로부터 공유 메모리에 대한 접근이 있을 때 동작할 수 있다.
본 발명의 일실시예에 따른 하드웨어 가속 방법은 코어로부터 공유 메모리에 대한 접근이 락 변수에 대한 접근인지 여부를 판단할 수 있다(단계 401).
만약 상기 접근이 락 변수에 대한 접근이라면, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 락 변수를 다른 코어에서 사용 중인지 여부를 판단할 수 있다(단계 402).
즉, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 락 변수가 LOCKED 상태인지 여부를 판단할 수 있다.
락 변수가 다른 코어에서 사용되고 있다면, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 상기 락 변수에 대해 접근을 시도한 상기 코어에 대해서 메모리 컨트롤러 상의 락 상태 정보를 'FAIL'로 설정할 수 있다(단계 403).
또한, 락 변수가 다른 코어에서 사용되고 있다면, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 락 변수가 저장된 어드레스를 상기 메모리 컨트롤러에 저장할 수 있다.
또한, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 상기 락 변수에 대해 접근을 시도하고 실패한 상기 코어에 대해서 저전력 슬립 모드로 전환할 수 있다.
본 발명의 일실시예에 따른 하드웨어 가속 방법은 단계 402의 판단 결과, 상기 락 변수에 대한 접근이 아니라고 판단하면, 상기 락 변수에 대한 접근이 언락(Unlock) 접근인지 여부를 판단할 수 있다(단계 404).
본 발명의 일실시예에 따른 하드웨어 가속 방법은 상기 락 변수에 대한 접근이 언락 접근이라면, 각 코어에 대해서, 락 상태 정보가 'FAIL'이고 락 변수가 저장된 어드레스가 현재 주소에 해당하는지 여부를 판단할 수 있다(단계 405).
만약, 현재 주소에 해당한다면, 본 발명의 일실시예에 따른 하드웨어 가속 방법은 해당 코어의 락 상태 정보를 SUCCESS로 설정하고, 알림 신호를 전송할 수 있다(단계 406).
본 발명의 일실시예에 따른 하드웨어 가속 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 하드웨어 가속 장치
110: 제1 코어
120: 제2 코어
130: 메모리 컨트롤러
140: 공유 메모리

Claims (9)

  1. 락 변수의 획득을 실패하여 공유 자원에 대한 접근 권한을 갖고 있지 않은 제1 코어;
    상기 락 변수를 획득하여 상기 접근 권한을 갖는 제2 코어; 및
    상기 제1 코어 및 상기 제2 코어가 접근하려는 상기 공유 자원을 저장하는 공유 메모리
    를 포함하고,
    상기 제1 코어는 상기 락 변수를 획득할 때까지 저전력 슬립 모드로 동작하는 하드웨어 가속 장치.
  2. 제1항에 있어서,
    상기 제2 코어로부터 상기 락 변수가 반환되는 경우, 선정된 알림 신호를 생성하고, 상기 생성된 알림 신호를 이용하여 저전력 슬립 모드로 동작하는 상기 제1 코어를 활성화시키는 상기 메모리 컨트롤러
    를 더 포함하는 하드웨어 가속 장치.
  3. 제2항에 있어서,
    상기 제1 코어는,
    상기 알림 신호를 수신하는 경우에 활성화 상태로 전환하고, 상기 메모리 컨트롤러로 상기 반환된 락 변수를 요청하는 것을 특징으로 하는 하드웨어 가속 장치.
  4. 제3항에 있어서,
    상기 제2 코어는,
    상기 제1 코어가 활성화 상태로 전환되고, 상기 요청한 락 변수를 획득함에 따라서, 상기 접근 권한을 상기 제1 코어로 반환하는 것을 특징으로 하는 하드웨어 가속 장치.
  5. 제2항에 있어서,
    상기 공유 메모리는,
    소정의 어드레스에 해당하는 위치에 상기 반환되는 락 변수를 저장하고,
    상기 메모리 컨트롤러는,
    상기 제1 코어 및 상기 제2 코어 중에서 적어도 하나의 코어에 대해 상기 락 변수의 획득 여부를 표시하는 락 상태 정보와, 상기 락 상태 정보에 대응하여 상기 소정의 어드레스 정보를 저장하는 것을 특징으로 하는 하드웨어 가속 장치.
  6. 제5항에 있어서,
    상기 메모리 컨트롤러는,
    상기 제1 코어 및 상기 제2 코어 중에서 적어도 하나의 코어에 대한 상기 접근 권한을 확인하여, 상기 락 상태 정보를 업데이트하는 것을 특징으로 하는 하드웨어 가속 장치.
  7. 락 변수의 획득을 실패하여 공유 자원에 대한 접근 권한을 갖고 있지 않은 제1 코어 세트를 유지하는 단계;
    상기 락 변수를 획득하여 상기 접근 권한을 갖는 제2 코어 세트를 유지하는 단계;
    상기 제1 코어 세트 및 상기 제2 코어 세트가 접근하려는 상기 공유 자원을 저장하는 단계; 및
    상기 제2 코어 세트로부터 상기 락 변수가 반환되는 경우, 선정된 알림 신호를 생성하고, 상기 생성된 알림 신호를 이용하여 저전력 슬립 모드로 동작하는 상기 제1 코어 세트 중에서 특정 코어를 활성화시키는 단계
    를 포함하는 하드웨어 가속 방법.
  8. 제7항에 있어서,
    상기 특정 코어를 활성화시키는 단계는,
    상기 제2 코어 세트에 포함된 코어들에 대한 우선순위를 확인하는 단계; 및
    상기 확인된 우선순위 중에서 우선순위가 가장 높은 상기 특정 코어에 상기 알림 신호를 전송하여 활성화 시키는 단계
    를 포함하는 것을 특징으로 하는 하드웨어 가속 방법.
  9. 제7항에 있어서,
    상기 특정 코어를 활성화시키는 단계는,
    상기 제2 코어 세트에 포함된 코어들에 상기 알림 신호를 전송하여 활성화 시키는 단계
    를 포함하는 것을 특징으로 하는 하드웨어 가속 방법.
KR1020100033813A 2010-04-13 2010-04-13 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법 KR101664108B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100033813A KR101664108B1 (ko) 2010-04-13 2010-04-13 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법
US12/904,782 US8688885B2 (en) 2010-04-13 2010-10-14 Hardware acceleration apparatus, method and computer-readable medium efficiently processing multi-core synchronization

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100033813A KR101664108B1 (ko) 2010-04-13 2010-04-13 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20110114264A true KR20110114264A (ko) 2011-10-19
KR101664108B1 KR101664108B1 (ko) 2016-10-11

Family

ID=44761789

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100033813A KR101664108B1 (ko) 2010-04-13 2010-04-13 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법

Country Status (2)

Country Link
US (1) US8688885B2 (ko)
KR (1) KR101664108B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130099837A (ko) * 2012-02-29 2013-09-06 삼성전자주식회사 대칭 멀티스레딩 환경의 공유 데이터 동기화를 위한 결합 락 할당 및 참조

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588568B2 (en) * 2012-11-16 2017-03-07 Samsung Electronics Co., Ltd. Monitoring and managing processor activity in power save mode of portable electronic device
US9880603B1 (en) * 2013-03-13 2018-01-30 Juniper Networks, Inc. Methods and apparatus for clock gating processing modules based on hierarchy and workload
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
US9588572B2 (en) 2013-08-28 2017-03-07 Via Technologies, Inc. Multi-core processor having control unit that generates interrupt requests to all cores in response to synchronization condition
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US9519330B2 (en) * 2013-10-22 2016-12-13 Wisconsin Alumni Research Foundation Energy-efficient multicore processor architecture for parallel processing
US9495204B2 (en) 2014-01-06 2016-11-15 International Business Machines Corporation Constructing a logical tree topology in a parallel computer
US20160091957A1 (en) * 2014-09-26 2016-03-31 Suketu R. Partiwala Power management for memory accesses in a system-on-chip
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005316854A (ja) * 2004-04-30 2005-11-10 Fujitsu Ltd 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
JP2005339500A (ja) * 2004-05-26 2005-12-08 Arm Ltd データ処理装置及び共用資源へのアクセス制御方法
US20090249106A1 (en) * 2008-01-18 2009-10-01 Sajish Sajayan Automatic Wakeup Handling on Access in Shared Memory Controller
KR20100021003A (ko) * 2007-07-20 2010-02-23 인텔 코포레이션 저 전력 모드 동안 캐시된 정보를 유지하는 방법, 장치, 시스템 및 기계 판독 가능한 매체

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970056902A (ko) 1995-12-29 1997-07-31 배순훈 멀티 프로세서 환경에서 동기 장치
US6668275B1 (en) 1999-12-17 2003-12-23 Honeywell International Inc. System and method for multiprocessor management
JP3884990B2 (ja) 2002-04-26 2007-02-21 富士通株式会社 マルチプロセッサ装置
US20050258106A1 (en) * 2004-05-24 2005-11-24 Cape Donald E Sr Advanced automated control and feedback process for wastewater treatment
ATE409327T1 (de) 2004-10-25 2008-10-15 Bosch Gmbh Robert Verfahren und vorrichtung zur überwachung einer speichereinheit in einem mehrprozessorsystem
US8245230B2 (en) * 2005-03-14 2012-08-14 Qnx Software Systems Limited Adaptive partitioning scheduler for multiprocessing system
US7209990B2 (en) * 2005-04-05 2007-04-24 Oracle International Corporation Maintain fairness of resource allocation in a multi-node environment
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
KR20080004792A (ko) 2006-07-06 2008-01-10 주식회사 하이닉스반도체 2층 포토레지스트용 중합체, 상기 중합체를 함유한포토레지스트 조성물 및 이를 이용한 포토레지스트 패턴의형성 방법
TWI320908B (en) * 2006-10-27 2010-02-21 Ind Tech Res Inst Apparatus and method for increasing the utilization by the processors on the shared resources
CN101308461A (zh) * 2007-05-18 2008-11-19 国际商业机器公司 处理器及其中处理锁事务的方法
JP2009075948A (ja) 2007-09-21 2009-04-09 Mitsubishi Electric Corp マルチコアプロセッサ
US8055855B2 (en) * 2007-10-05 2011-11-08 International Business Machines Corporation Varying access parameters for processes to access memory addresses in response to detecting a condition related to a pattern of processes access to memory addresses
JP5213485B2 (ja) 2008-03-12 2013-06-19 株式会社トヨタIt開発センター マルチプロセッサシステムにおけるデータ同期方法及びマルチプロセッサシステム
US8707315B2 (en) * 2008-07-31 2014-04-22 Wind River Systems, Inc. Method and system for implementing realtime spinlocks
US20100262966A1 (en) * 2009-04-14 2010-10-14 International Business Machines Corporation Multiprocessor computing device
CN102103523A (zh) * 2009-12-22 2011-06-22 国际商业机器公司 锁分配控制的方法和装置
US8341643B2 (en) * 2010-03-29 2012-12-25 International Business Machines Corporation Protecting shared resources using shared memory and sockets

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005316854A (ja) * 2004-04-30 2005-11-10 Fujitsu Ltd 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
JP2005339500A (ja) * 2004-05-26 2005-12-08 Arm Ltd データ処理装置及び共用資源へのアクセス制御方法
KR20100021003A (ko) * 2007-07-20 2010-02-23 인텔 코포레이션 저 전력 모드 동안 캐시된 정보를 유지하는 방법, 장치, 시스템 및 기계 판독 가능한 매체
US20090249106A1 (en) * 2008-01-18 2009-10-01 Sajish Sajayan Automatic Wakeup Handling on Access in Shared Memory Controller

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130099837A (ko) * 2012-02-29 2013-09-06 삼성전자주식회사 대칭 멀티스레딩 환경의 공유 데이터 동기화를 위한 결합 락 할당 및 참조

Also Published As

Publication number Publication date
US20110252258A1 (en) 2011-10-13
KR101664108B1 (ko) 2016-10-11
US8688885B2 (en) 2014-04-01

Similar Documents

Publication Publication Date Title
KR20110114264A (ko) 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법
US9411646B2 (en) Booting secondary processors in multicore system using kernel images stored in private memory segments
KR102245247B1 (ko) 트리거된 동작을 이용하는 gpu 원격 통신
US10733019B2 (en) Apparatus and method for data processing
US8392635B2 (en) Selectively enabling a host transfer interrupt
EP3029912B1 (en) Remote accessing method and corresponding system
US10459773B2 (en) PLD management method and PLD management system
CN102147746B (zh) 动态线程池管理***及管理方法
CN108319496B (zh) 资源访问方法、业务服务器、分布式***及存储介质
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
JP2006515690A (ja) 複数のプロセッサを有するデータ処理システムと、複数のプロセッサを有するデータ処理システムのためのタスクスケジューラと、タスクスケジューリングの対応する方法
CN107797848B (zh) 进程调度方法、装置和主机设备
JP5503678B2 (ja) ホスト提供システム及びホスト提供方法
KR102052964B1 (ko) 컴퓨팅 스케줄링 방법 및 시스템
CN102867035A (zh) 一种分布式文件***集群高可用方法和装置
CN111416825A (zh) 线程间无锁日志管理方法和***、终端、存储介质
US10740496B2 (en) Method and apparatus for operating multi-processor system in electronic device
CN105579963B (zh) 任务处理装置、电子设备及方法
US10318362B2 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
US9684525B2 (en) Apparatus for configuring operating system and method therefor
Lee et al. Transparent many‐core partitioning for high‐performance big data I/O
US10581748B2 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
US9354935B2 (en) Work processing apparatus for scheduling work, control apparatus for scheduling activation, and work scheduling method in a symmetric multi-processing environment
KR101518111B1 (ko) 안티-멀웨어 시스템 및 상기 시스템에서의 데이터 처리 방법
EP3276489B1 (en) Parallel processing system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
E90F Notification of reason for final refusal
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190927

Year of fee payment: 4