KR20060121266A - 효율적인 멀티태스킹을 위한 방법 및 장치 - Google Patents

효율적인 멀티태스킹을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20060121266A
KR20060121266A KR1020067013264A KR20067013264A KR20060121266A KR 20060121266 A KR20060121266 A KR 20060121266A KR 1020067013264 A KR1020067013264 A KR 1020067013264A KR 20067013264 A KR20067013264 A KR 20067013264A KR 20060121266 A KR20060121266 A KR 20060121266A
Authority
KR
South Korea
Prior art keywords
data
reservation
shared memory
lost
memory
Prior art date
Application number
KR1020067013264A
Other languages
English (en)
Other versions
KR100841864B1 (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 가부시키가이샤 소니 컴퓨터 엔터테인먼트
Publication of KR20060121266A publication Critical patent/KR20060121266A/ko
Application granted granted Critical
Publication of KR100841864B1 publication Critical patent/KR100841864B1/ko

Links

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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

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

Abstract

시스템은, 공유 메모리와, 공유 메모리에 결합되고, 공유 메모리의 요구된 어드레스로부터 데이터를 검색하도록 동작하며, 공유 메모리의 요구된 어드레스에 데이터를 기록하도록 동작하는 메모리 인터페이스 유닛과, 메모리 인터페이스와 통신하고, (i) 일정 동작이 데이터 상에서 수행되도록 데이터가 공유 메모리의 특정 어드레스로부터 예약을 가지고 로드될 것을 메모리 인터페이스 유닛에 명령하도록 동작하며, (ii) 공유 메모리의 특정 어드레스에 저장된 데이터를 메모리 인터페이스 유닛에 명령하도록 동작하는 다수개의 처리 유닛을 포함하며, 처리 유닛 중 적어도 어느 하나는 예약이 소실되었는지의 여부, 즉 공유 메모리의 특정 어드레스에서 데이터가 변경되었는지의 여부를 지시하는 하나 이상의 비트를 갖는 상태 레지스터를 포함한다.

Description

효율적인 멀티태스킹을 위한 방법 및 장치{METHODS AND APPARATUS FOR EFFICIENT MULTI-TASKING}
본 발명은 컴퓨터 프로세서의 멀티프로세서 아키텍처를 이용하는 효율적인 데이터 처리 방법 및 장치에 관한 것으로, 더욱 상세하게는, 하나 이상의 고유 메모리를 사용하는 광대역 처리 환경에서의 효율적인 멀티태스킹을 위한 방법 및 장치에 관한 것이다.
실시간 멀티미디어 어플리케이션이 점차 중요해지고 있다. 이러한 어플리케이션은, 초당 수천 메가비트와 같은 극고속의 처리를 필요로 한다. 단일 처리 유닛은 고속 처리가 가능하지만, 일반적으로 멀티프로세서 아키텍처의 처리 속도에 부합할 수는 없다. 실제로, 멀티프로세서 시스템에 있어서, 다수개의 프로세서가 바람직한 처리 결과를 획득하기 위하여 병렬로(또는 적어도 협력하여) 동작할 수 있다.
멀티처리 기술을 사용할 수 있는 컴퓨터 및 컴퓨팅 디바이스의 종류는 광범위하다. 개인 컴퓨터(Personal Computer; PC) 및 서버와 더불어, 이러한 컴퓨팅 디바이스는 휴대 전화, 모바일 컴퓨터(mobile computer), 개인 정보 단말기(Personal Digital Assistant; PDA), 세트톱 박스(set top box), 디지털 텔레비전 등을 포함한다.
멀티프로세서 시스템의 설계상 중점은 다수개의 처리 유닛 사이에서 공유 메모리의 이용을 조작하는 방법에 있다. 실제로, 프로세서의 동기화(synchronization)가 바람직한 처리 결과를 획득하는데 필요한데, 바람직한 처리 결과는 다중 배제 연산(multi-exclusion operation)을 필요로 한다. 예를 들어, 적절한 동기화는, 이른바 아토믹 판독 시퀀스(atomic read sequence), 아토믹 변경 시퀀스 및/또는 아토믹 기록 시퀀스를 사용하여 획득될 수 있다.
이러한 멀티프로세서 시스템의 부가적 중점은, 특히 핸드헬드(hand-held) 디바이스 등과 같은 소형 패키지에서 다수개의 프로세서가 사용되는 경우, 다수개의 프로세서에 의해 생성되는 열을 처리하는 것이다. 기계적 열 처리 기술이 사용될 수 있으나, 기계적 열 처리 기술은 최종 생산물에 대한 부품 및 노동 비용을 증가시키기 때문에, 기계적 열 처리 기술은 완전히 충분하지 않다. 또한, 기계적 열 처리 기술은 충분한 냉각을 제공하지 않을 수도 있다.
멀티프로세서 시스템의 다른 중점은, 특히 랩톱(lap-top) 컴퓨터, 핸드헬드 디바이스 등과 같은 휴대용 디바이스에서 다중 프로세서가 이용되는 경우, 이용가능한 배터리 전력의 효율적인 이용이다. 실제로, 일정 시스템에서 사용되는 프로세서의 수가 증가할수록, 더욱 많은 전력이 전원으로부터 소비될 것이다. 일반적으로, 일정 프로세서에 의해 소비되는 전력의 양은, 프로세서에 의해 실행되는 명령의 수 및 프로세서가 동작하는 클록 주파수의 함수이다.
따라서, 해당 기술 분야에는, 프로세서에 의해 생성되는 열 및 프로세서에 의해 소비되는 에너지를 감소시키는 효율적인 멀티처리를 획득하기 위한 새로운 방법 및 장치가 요구되고 있다.
도 1은 본 발명에 따른 프로세서 요소(PE)의 대표적인 구조를 나타내는 도면이다.
도 2는 본 발명에 따른 대표적인 광대역 엔진(Broadband Engine; BE)의 구조를 나타내는 도면이다.
도 3은 본 발명에 따른 대표적인 부속 처리 유닛(APU)의 구조를 나타내는 도면이다.
도 4는 본 발명의 하나 이상의 실시 형태에 따른 멀티프로세서 시스템을 실행하는데 적합한 다른 구성이다.
도 5는 본 발명에 따른 처리 루틴(routine)의 하나 이상의 실시 형태를 나타내는 흐름도이다.
도 6은 본 발명에 따른 처리 루틴의 하나 이상의 부가적 실시 형태를 나타내는 흐름도이다.
도 7은 본 발명에 따른 처리 루틴의 하나 이상의 부가적 실시 형태를 나타내는 흐름도이다.
도 8은 본 발명에 따른 처리 루틴의 하나 이상의 부가적 실시 형태를 나타내는 흐름도이다.
도 9는 본 발명에 따른 대표적인 컴퓨터 네트워크의 전체적인 아키텍처를 나타낸다.
또한, 상술된 문제 중 적어도 일부를 해결하기 위하여, 새로운 컴퓨터 아키텍처가 개발되었다.
이러한 새로운 컴퓨터 아키텍처에 따르면, 멀티프로세서 컴퓨터 시스템의 모든 프로세서는 공동의 컴퓨팅 모듈(또는 셀)로부터 구성된다. 이러한 공동의 컴퓨팅 모듈은 일관된 구조를 갖고, 바람직하게는 동일한 명령 세트 아키텍처를 사용한다. 멀티프로세서 컴퓨터 시스템은, 하나 이상의 클라이언트, 서버, PC, 모바일 컴퓨터, 게임기, PDA, 세트톱 박스, 가전 제품, 디지털 텔레비전 및 그 밖의 컴퓨터 프로세서를 이용하는 디바이스로 구성될 수 있다.
필요에 따라, 다수개의 컴퓨터 시스템은 네트워크의 구성 요소일 수 있다. 일관된 모듈 구조는, 멀티프로세서 컴퓨터 시스템에 의하여 어플리케이션 및 데이터의 효율적인 고속 처리를 가능하게 하며, 네트워크에 사용되는 경우, 네트워크를 통한 어플리케이션 및 데이터의 신속한 전송을 가능하게 한다. 또한, 이러한 구조는 다양한 크기와 처리 전력의 네트워크의 구성 요소의 형성 및 이러한 구성 요소에 의한 처리를 위한 어플리케이션의 준비를 단순화한다.
기본적인 처리 모듈은 프로세서 요소(Processor Element; PE)이다. PE는 처리 유닛(Processing Unit; PU), 직접 메모리 액세스 제어기(Direct Memory Access Controller; DMAC) 및 공동의 내부 어드레스와 데이터 버스를 통하여 결합된 다수개의 부속 처리 유닛(Attached Processing Unit; APU), 예컨대 네 개의 APU를 포함하는 것이 바람직하다. PU와 APU는 공유 동적 임의 액세스 메모리(Dynamic Random Access Memory; DRAM)와 상호 작용하는데, DRAM은 크로스바(cross-bar) 아키텍처를 가질 수 있다. PU는 APU에 의하여 데이터 및 어플리케이션의 처리를 예정하고 조정한다. APU는 병렬이면서 독립적인 방식으로 이러한 처리를 수행한다. DMAC는 공유 DRAM에 저장된 데이터 및 어플리케이션으로의 APU에 의한 액세스를 제어한다.
이러한 모듈 구조에 따르면, 특정 컴퓨터 시스템에 의해 사용되는 PE의 수는 그 시스템에 의해 요구되는 처리 전력에 기초한다. 예를 들어, 서버는 네 개의 PE를 사용할 수 있고, 워크스테이션(workstation)은 두 개의 PE를 사용할 수 있으며, PDA는 하나의 PE를 사용할 수 있다. 특정 소프트웨어 셀을 처리하도록 할당된 PE의 APU의 수는 셀 내의 프로그램 및 데이터의 복잡성과 규모에 좌우된다.
다수개의 PE는 공유 DRAM과 관련될 수 있고, DRAM은 다수개의 섹션(section)으로 분리될 수 있으며, 이러한 섹션 각각은 다수개의 메모리 뱅크(bank)로 분리될 수 있다. DRAM의 각각의 섹션은 뱅크 제어기에 의해 제어될 수 있으며, PE의 각각의 DMAC는 각각의 뱅크 제어기에 액세스할 수 있다. 이러한 구성에 있어서, 각각의 PE의 DMAC는 공유 DRAM의 일정 부분에 액세스할 수 있다.
또한, 새로운 컴퓨터 아키텍처는, 네트워크를 통한 데이터 및 어플리케이션의 전송과 네트워크의 구성 요소 사이에서의 데이터 및 어플리케이션의 처리를 제공하는 새로운 프로그래밍 모델(programming model)을 사용한다. 이러한 프로그래밍 모델은 임의의 네트워크의 구성 요소에 의한 처리를 위하여, 네트워크를 통하여 전송되는 소프트웨어 셀을 사용한다. 각각의 소프트웨어 셀은 동일한 구조를 가지며, 어플리케이션 및 데이터를 모두 수용할 수 있다. 모듈 컴퓨터 아키텍처에 의해 제공되는 고속 처리 및 전송의 결과, 이러한 셀은 신속하게 처리될 수 있다. 어플리케이션의 코드는 동일한 공동의 명령 세트 및 ISA에 기초하는 것이 바람직하다. 각각의 소프트웨어 셀은 글로벌 아이디(global identification; global ID) 및 셀의 처리에 요구되는 컴퓨팅 자원의 양을 기술하는 정보를 포함하는 것이 바람직하다. 모든 컴퓨팅 자원은 동일한 기본적인 구조 갖고 동일한 ISA를 사용하기 때문에, 이러한 처리를 수행하는 특정 자원은 네트워크의 임의의 장소에 위치되고 동적으로 할당될 수 있다.
본 발명의 하나 이상의 실시 형태에 따르면, 방법은, a) 데이터가 위치되는 공유 메모리의 요구된 어드레스를 포함하는 예약을 갖는 로드 명령을 발행하는 단계와, b) 일정 연산이 데이터 상에서 수행되도록 공유 메모리로부터 데이터를 수신하는 단계를 포함한다. 또한, 발명은, c)(i) 저 전력 소비 모드에 들어가는 단계 및 (ii) 다른 처리 태스크를 시작하는 단계 중 적어도 하나를 행하는 단계와, d) 예약이 소실되었다는 통지를 수신하는 단계를 포함하는 방법으로, 예약은 공유 메모리 내 어드레스의 데이터가 변경된 경우 소실되는 것이 바람직하다.
바람직하게는, 예약이 소실되었다는 통지는, (i) 저 전력 소비 모드의 인터럽트 및 (ii) 다른 처리 태스크의 인터럽트 중 적어도 어느 하나의 인터럽트로서 동작한다. 방법의 단계 a) 내지 단계 d)는, 통지가 예약이 소실되었음을 지시하는 경우 반복되는 것이 바람직하다.
또한, 방법은, 데이터가 공유 메모리로부터 액세스된 경우, 공유 메모리 내의 어드레스 지정된 위치와 관련된 상태 위치로 예약을 갖는 로드 명령을 발행하는 프로세서와 관련된 식별 번호를 기록하는 단계를 포함할 수 있다.
게다가, 방법은, 공유 메모리 내 어드레스의 데이터가 변경되었는지의 여부를 모니터함으로써, 예약이 소실되었는지의 여부를 모니터하는 단계를 포함할 수 있다. 바람직하게는, 방법은, 공유 메모리 내 어드레스의 데이터에 대한 변경이 저장 명령에 대응하여 데이터가 공유 메모리에 저장되기 전에 이루어진 경우, 프로세서의 상태 레지스터 내의 예약 소실 비트가 예약이 소실되었음을 지시하도록 하는 단계를 더 포함하는 것이 바람직하다. 예약이 소실되었는지의 여부를 판단하는 단계는, 상태 레지스터에 폴링을 행하는 단계 및 예약 소실 비트가 지시되는 경우 예약이 소실되었음을 판단하는 단계를 포함할 수 있다.
본 발명의 하나 이상의 부가적 실시 형태에 따르면, 시스템은, 공유 메모리와, 공유 메모리와 결합되어 동작하는 메모리 인터페이스 유닛과, 메모리 인터페이스와 통신하는 다수개의 처리 유닛을 포함할 수 있다. 처리 유닛 중 적어도 어느 하나는 본 발명의 방법에 관하여 상술된 단계 중 하나 이상을 수행하도록 동작하는 것이 바람직하다.
본 발명의 하나 이상의 부가적 실시 형태에 따르면, 시스템은, 공유 메모리와, 공유 메모리에 결합되고, 공유 메모리의 요구된 어드레스로부터 데이터를 검색하도록 동작하며, 공유 메모리의 요구된 어드레스에 데이터를 기록하도록 동작하는 메모리 인터페이스 유닛과, 메모리 인터페이스와 통신하는 다수개의 처리 유닛을 포함한다.
처리 유닛은, (i) 일정 동작이 데이터 상에서 수행되도록 데이터가 공유 메모리의 특정 어드레스로부터 예약을 가지고 로드될 것을 메모리 인터페이스 유닛에 명령하는 동작과, (ii) 공유 메모리의 특정 어드레스 내에 저장된 데이터를 메모리 인터페이스 유닛에 명령하는 동작을 행하도록 동작하는 것이 바람직하다. 처리 유닛 중 적어도 어느 하나는 공유 메모리 내 특정 어드레스에서의 데이터 변경이 다른 처리 유닛에 의해 이루어진 경우 소실되는 예약이 소실되었는지의 여부를 지시하는 하나 이상의 비트를 갖는 상태 레지스터를 포함하는 것이 바람직하다.
적어도 하나의 처리 유닛은, 데이터가 일정 값이 아닌 경우, 저 전력 소비 모드에 들어가도록 동작하는 것이 바람직하다. 적어도 하나의 처리 유닛은, 저 전력 소비 모드를 인터럽트하도록 허용되는 이벤트에 대응하여 저 전력 소비 모드에서 빠지도록 더 동작하는 것이 바람직하다. 적어도 하나의 처리 유닛은, 이벤트가 발생됐는지의 여부를 판단하도록 상태 레지스터의 하나 이상의 비트에 폴링을 행하도록 더 동작하는 것이 바람직하다.
적어도 하나의 처리 유닛은, 상태 레지스터의 하나 이상의 비트가 예약이 소실되었음을 지시하는 경우, 일정 동작이 데이터 상에서 수행되도록 공유 메모리의 특정 어드레스로부터 예약을 가지고 데이터를 로드할 것을 메모리 인터페이스 유닛에 재명령하도록 더 동작하는 것이 바람직하다.
저 전력 소비 모드를 인터럽트하도록 허용되는 이벤트는 예약이 소실되었다는 것일 수 있다. 선택적으로, 또는 이에 더하여, 저 전력 소비 모드를 인터럽트하도록 허용되는 이벤트는, 데이터가 특정 어드레스에서 공유 메모리에 저장되었다는 확인일 수 있다.
바람직하게는, 메모리 인터페이스 유닛은, 데이터가 공유 메모리로부터 액세스된 경우, 공유 메모리의 특정 어드레스와 관련된 상태 위치에, 예약을 갖는 로드 명령을 발행하는 적어도 하나의 처리 유닛과 관련된 식별 번호를 기록하도록 동작한다. 메모리 인터페이스 유닛은, 공유 메모리 내의 특정 어드레스에서 데이터가 변경되었는지의 여부를 모니터함으로써, 예약이 소실되었는지의 여부를 모니터하도록 더 동작하는 것이 바람직하다.
또한, 바람직하게는, 메모리 인터페이스 유닛은, 적어도 하나의 처리 유닛의 상태 레지스터의 하나 이상의 비트가 공유 메모리 내의 특정 어드레스에서 데이터가 변경된 경우 예약이 소실되었음을 지시하도록 더 동작한다.
본 발명의 하나 이상의 부가적 실시 형태에 따르면, 시스템은, 공유 메모리와, 공유 메모리에 결합되고, 공유 메모리의 요구된 어드레스로부터 데이터를 검색하도록 동작하며, 공유 메모리의 요구된 어드레스에 데이터를 기록하도록 동작하는 메모리 인터페이스 유닛과, 메모리 인터페이스와 통신하는 다수개의 처리 유닛을 포함한다. 처리 유닛은, (i) 일정 동작이 데이터 상에서 수행되도록 데이터가 공유 메모리의 특정 어드레스로부터 예약을 가지고 로드될 것을 메모리 인터페이스에 명령하는 동작 및 (ii) 저 전력 소비 모드에 들어가는 동작을 행하도록 동작하는 것이 바람직하다.
적어도 하나의 처리 유닛은, 저 전력 소비 모드를 인터럽트하도록 허용되는 이벤트에 대응하여 저 전력 소비 모드에서 빠지도록 더 동작하는 것이 바람직하다. 저 전력 소비 모드를 인터럽트하도록 허용되는 이벤트는 예약이 소실되었다는 것일 수 있다. 선택적으로, 또는 이에 더하여, 저 전력 소비 모드를 인터럽트하도록 허용되는 이벤트는 데이터가 공유 메모리의 특정 어드레스에 저장되었다는 확인일 수 있다.
바람직하게는, 적어도 하나의 처리 유닛은, 예약이 소실되었는지의 여부, 예컨대 공유 메모리 내의 특정 어드레스에서 데이터가 변경되었는지의 여부를 지시하는 하나 이상의 비트를 갖는 상태 레지스터를 포함한다.
메모리 인터페이스 유닛은, 적어도 하나의 처리 유닛의 상태 레지스터의 하나 이상의 비트가 공유 메모리 내의 특정 어드레스에서 데이터가 변경된 경우 예약이 소실되었음을 지시하도록 동작하는 것이 바람직하다.
바람직하게는, 적어도 하나의 처리 유닛은, 예약이 소실되었는지의 여부를 판단하도록 상태 레지스터의 하나 이상의 비트에 폴링을 행하도록 더 동작한다. 적어도 하나의 처리 유닛은, 상태 레지스터의 하나 이상의 비트가 예약이 소실되었음을 지시하는 경우, 일정 동작이 데이터 상에서 수행되도록 특정 어드레스에서 공유 메모리로부터 예약을 가지고 데이터를 로드할 것을 메모리 인터페이스 유닛에 재명령하도록 더 동작하는 것이 바람직하다.
바람직하게는, 메모리 인터페이스 유닛은, 데이터가 공유 메모리로부터 액세스된 경우, 공유 메모리의 특정 어드레스와 관련된 상태 위치로, 예약을 갖는 로드 명령을 발행하는 적어도 하나의 처리 유닛과 관련된 식별 번호를 기록하도록 동작한다. 메모리 인터페이스 유닛은, 공유 메모리 내의 특정 어드레스에서 데이터가 변경되었는지의 여부를 모니터하도록 더 동작하는 것이 바람직하다.
본 발명의 다른 실시 형태, 특징 및 이점은, 첨부 도면과 함께 이하의 설명으로부터 당업자에게 분명해질 것이다.
도면에 도시되어 있는 형태는 이해되기에 바람직한 것일 뿐, 본 발명이 도시되어 있는 구성 및 수단으로 한정되는 것은 아니다.
동일한 부호가 동일한 요소를 나타내고 있는 도면을 참조하면, 도 1은 본 발명의 하나 이상의 실시 형태에 따른 기본적인 처리 모듈 또는 처리 소자(PE)의 블록도이다. 도 1에 도시된 바와 같이, PE(201)는 입출력(Input/Output; I/O) 인터페이스(202), 처리 유닛(PU; 203), 직접 메모리 액세스 제어기(DMAC; 205) 및 다수개의 부속 처리 유닛(APU), 즉 APU(207), APU(209), APU(211) 및 APU(213)을 포함한다. 국부적(또는 내부) PE 버스(223)는 PU(203), APU, DMAC(205) 및 메모리 인터페이스(215) 사이에서 데이터 및 어플리케이션을 전송한다. 국부적 PE 버스(223)는, 예컨대 종래의 아키텍처를 갖거나 패킷 교환 네트워크로서 구현될 수 있다. 패킷 교환 네트워크로서의 실행은 더 많은 하드웨어를 필요로 하지만, 이용가능한 대역폭을 증가시킨다.
PE(201)는 디지털 논리를 구현하는 다양한 방법을 이용하여 구성될 수 있다. 한편, PE(201)는, 실리콘 기판 상의 상보적 금속 산화막 반도체(Complementary Metal Oxide Semiconductor; CMOS)를 사용하여 단일 집적 회로로서 구성되는 것이 바람직하다. 기판의 다른 재료로는 갈륨 비소(gallium arsinide), 갈륨 알루미늄 비소(gallium aluminum arsinide) 및 광범위한 종류의 불순물을 사용하는 다른 이른바 Ⅲ-B 화합물이 포함될 수 있다. 또한, PE(201)는 초전도 물질, 예컨대 고속 단일 자속 양자(Rapid Single-Flux-Quantum; RSFQ) 논리를 이용하여 구현될 수 있다.
PE(201)는 광대역폭 메모리 접속(227)을 통하여 동적 임의 액세스 메모리(DRAM; 225)와 밀접하게 관련된다. DRAM(225)은 PE(201)에 대하여 메인 메모리로서 기능한다. DRAM(225)이 동적 임의 액세스 메모리인 것이 바람직하나, DRAM(225)은, 예컨대 정적 임의 액세스 메모리(Static Random Access Memory; SRAM), 자기 임의 액세스 메모리(Magnetic Random Access Memory; MRAM), 광학 메모리 또는 홀로그래픽(holographic) 메모리로서, 다른 수단을 이용하여 구현될 수 있다.
DMAC(205) 및 메모리 인터페이스(215)는 DRAM(225) 및 PE(201)의 APU와 PU(203) 사이에서 데이터의 전송을 용이하게 한다.
특히, DMAC(205) 및/또는 메모리는 APU 중 하나 이상 및 PU(203) 내에 일체로 배치될 수 있다. 특히, PU(203)는 APU에 의하여 데이터 및 어플리케이션의 처리를 예정 및/또는 조정하는 메인처리 유닛의 역할을 취하는 APU 중 하나 이상에 의해 구현될 수 있다.
PU(203)는, 예컨대 데이터 및 어플리케이션의 독립형 처리가 가능한 표준적인 프로세서일 수 있다. 동작 시, PU(203)는 APU에 의하여 데이터 및 어플리케이션의 처리를 예정하고 조정한다. APU는 단일 명령 다중 데이터(Single Instruction Multiple Data; SIMD) 프로세서인 것이 바람직하다. PU(203)의 제어 하에서, APU는 병렬이면서 독립적인 방식으로 이러한 데이터 및 어플리케이션의 처리를 수행한다. DMAC(205)는 공유 DRAM(225)에 저장된 데이터 및 어플리케이션에의 PU(203) 및 APU에 의한 액세스을 제어한다.
다수의 PE, 예컨대 PE(201)는 향상된 처리 능력을 제공하기 위하여 함께 연결되거나 패키징될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 두 개 이상의 PE는 단일 프로세서 시스템을 형성하기 위하여, 예컨대 하나 이상의 칩 패키지 내에서 함께 패키징되거나 연결될 수 있다. 이러한 구성을 광대역 엔진(BE)이라고 칭한다. 도 2에 도시된 바와 같이, BE(301)는 두 개의 PE, 즉 PE(201A) 및 PE(201B)를 포함한다. 이러한 PE 사이의 통신은 BE 버스(311)를 통하여 수행된다. 광대역폭 메모리 접속(227)은 공유 DRAM(225) 및 이러한 PE 사이에 통신을 제공한다. BE 버스(311)의 대신에, BE(301)의 PE 사이의 통신은 DRAM(225) 및 이러한 메모리 접속을 통하여 발생할 수 있다.
하나 이상의 입출력(I/O) 인터페이스(202A, 202B) 및 외부 버스(도시되지 않음)는 광대역 엔진(301) 및 다른 외부 디바이스 사이에 통신을 제공한다. BE(301)의 각각의 PE(201A, 201B)는, PE의 APU에 의하여 수행되는 어플리케이션 및 데이터의 병렬이면서 독립적인 처리와 유사하게 병렬이면서 독립적인 방식으로 데이터 및 어플리케이션의 처리를 수행한다.
도 3은 APU(400)의 구조 및 기능을 나타낸다. APU(400)는 국부적 메모리(406), 레지스터(410), 하나 이상의 부동 소수점 유닛(412) 및 하나 이상의 정수 유닛(414)을 포함한다. 또 한편, 요구되는 처리 능력에 따라서, 부동 소수점 유닛(412) 및 정수 유닛(414)의 더 많은 수 또는 더 적은 수가 사용될 수 있다. 바람직한 실시예에 있어서, 국부적 메모리(406)는 256 킬로바이트(kilobyte)의 용량을 포함하고, 레지스터(410)의 용량은 128×128 비트이다. 부동 소수점 유닛(412)은 초당 320억 회의 부동 소수점 연산(32 GFLOPS)의 속도로 동작하는 것이 바람직하고, 정수 유닛(414)은 초당 320억 회의 연산(32 GOPS)의 속도로 동작하는 것이 바람직하다.
국부적 메모리(406)는 캐시 메모리가 아닌 것이 바람직하다. APU에 대한 캐시 간섭성 지원은 불필요하다. 대신에, 국부적 메모리(406)는 정적 임의 액세스 메모리(SRAM)로서 구성되는 것이 바람직하다. PU(203)는 PU(203)에 의해 시작된 직접 메모리 액세스에 대한 캐시 간섭성 지원을 요구할 수 있다. 한편, 캐시 간섭성 지원은, APU(400)에 의해 시작된 직접 메모리 액세스 또는 외부 디바이스로부터나 외부 디바이스로의 액세스에 대하여 요구되지 않는다.
APU(400)는 APU(400)로나 APU(400)로부터 어플리케이션 및 데이터를 전송하기 위한 버스(404)를 포함한다. 바람직한 실시예에 있어서, 버스(404)의 폭은 1,024 비트이다. APU(400)는 내부 버스(408, 418, 420)를 더 포함한다. 바람직한 실시예에 있어서, 버스(408)는 256 비트의 폭을 가지며, 국부적 메모리(406) 및 레지스터(410) 사이에 통신을 제공한다. 버스(418, 420)는 레지스터(410)와 부동 소수점 유닛(412) 및 레지스터(410)와 정수 유닛(414) 사이에 각각 통신을 제공한다. 바람직한 실시예에 있어서, 레지스터(410)로부터 부동 소수점 또는 정수 유닛으로의 버스(418, 420)의 폭은 384 비트이고, 부동 소수점 또는 정수 유닛(412, 414)으로부터 레지스터(410)로의 버스(418, 420)의 폭은 128 비트이다. 부동 소수점 또는 정수 장치(412, 414)로부터 레지스터(410)로의 이러한 버스의 폭보다 레지스터(410)로부터 부동 소수점 또는 정수 장치(412, 414)로의 이러한 버스의 폭이 더 넓을수록, 처리 동안 레지스터(410)로부터의 데이터 흐름이 더욱 많아진다. 한편, 최대 세 워드가 각각의 계산에 대해 필요하다. 한편, 각각의 계산의 결과는 통상 하나의 워드 뿐이다.
APU(400)의 레지스터(410)는 이벤트 상태 레지스터(410A), 이벤트 상태 마스크 레지스터(410B) 및 이벤트 상태 확인 레지스터(410C)를 포함하는 것이 바람직하다. 이하에서 설명될, 이러한 레지스터(410A-C)는 더욱 효율적인 처리를 용이하게 하는데 이용될 수 있다. 이벤트 상태 레지스터(410A)는 다수의 비트, 예컨대 32 비트를 포함한다. 각각의 비트(또는 비트의 개별적인 그룹)는 외부의 이벤트와 같은 이벤트의 상태를 지시한다. 이벤트 상태 레지스터(410A)는 로크 라인(lock line) 예약 소실 이벤트의 상태를 포함하는 하나 이상의 비트를 포함하는 것이 바람직하다. 로크 라인 예약 소실 이벤트는, 특정 명령(예컨대, 로크 라인의 입수 및 예약 명령)이 APU(400)에 의하여 발행된 경우 트리거(trigger)되고, 예약은 DRAM(225)의 동일한 로크 라인의 데이터를 변경하는 일부 실체로 인하여 리셋(reset)된다. 이러한 이벤트의 중요성이 후술될 것이다.
로크 라인 예약 소실 이벤트에 더하여, 이벤트는 신호 통지 이벤트, 디크리멘터(decrementer) 이벤트, PU에 의해 기록된 SPU 메일 박스 이벤트, DMA 큐 베이컨시(vacancy) 이벤트, DMA 태그 명령 정지 및 통지 이벤트, DMA 태그 상태 업데이트 이벤트 등을 포함할 수 있다.
APU(400)의 신호 통지 레지스터(도시되지 않음)를 타깃으로 한 명령이 수신된 경우, 신호 통지 이벤트가 트리거된다. 다른 프로세서(또는 외부 디바이스)가 APU(400)로 신호를 송신한 경우, 신호 통지가 발생한다. 신호는 APU(400)의 신호 통지 어드레스에 기록됨으로써 송신된다. 이러한 통지는, 다른 프로세서가 일부 작동이 APU(400)에 의해 취해지는데 필요하다는 것을 APU(400)에 통지할 수 있도록 이용된다. 신호 비트는, 다중 신호가 함께 수신되고 APU(400)의 소프트웨어에 의해 적절하게 식별될 수 있도록 소프트웨어에 의해 특정 유닛으로 할당될 수 있다.
디크리멘터 이벤트는 논리값 0으로부터 논리값 1로의 APU(400)의 디크리멘터 카운트의 변화에 의해 트리거된다. APU 메일 박스 이벤트는, 메일 박스 데이터가 APU(400)의 메일 박스 채널로부터 이용가능하도록 PU(203)가 APU(400)의 메일 박스(도시되지 않음)로 메시지를 기록하는 경우 트리거된다.
DMA 큐 베이컨시 이벤트는 풀(full) 상태로부터 논풀(non-full) 상태로의 DMA 명령 큐의 변화에 의해 트리거된다. DMA 큐 베이컨시 이벤트는, 더 많은 명령을 수신하도록 DMA 큐에서 이용가능한 공간이 있는지의 여부를 판단하기 위하여 APU(400)에 의해 이용된다. DMA 큐 베이컨시 이벤트가 항상 이용될 필요는 없으나, 대신에, DMAC(205)로 명령을 송신하기 위한 이전의 시도가 실패한 경우 이용된다.
DMA 태그 명령 정지 및 통지 이벤트는, 하나 이상의 DMA 명령(정지 및 통지 플래그 세트를 갖는 리스트 요소를 갖는)이 메모리 인터페이스(215) 및/또는 DMAC(205)에 의해 수신된 경우 발생한다. 이것이 발생하는 경우, 리스트 요소는 완료되고, 리스트의 나머지의 처리는, 정지가 APU(400) 상에서 가동하는 프로그램에 의해 확인될 때까지 중지된다. DMA 태그 명령 정지 및 통지 이벤트는, DMA 리스트의 특정 명령 요소가 완료되는지의 여부를 판단하도록 APU(400)에 의해 이용된다. 이는, 데이터의 이동에 대한 프로그램의 동기화에 이용되거나, APU(400)가 DMA 리스트의 나머지 요소를 변경할 수 있도록, DMA 리스트의 처리를 중지하는데 이용될 수 있다.
DMA 태그 상태 업데이트 이벤트는, 태그 상태 업데이트에 대한 요구가 APU(400) 내의 특정 채널(이는 태그 상태 업데이트를 요구한다)에 기록되는 경우 발생한다. DMA 태그상태 이벤트는, DMA 명령의 특정 세트가 DMAC(205)에 의해 완료된 경우, 인터럽트(통지)되도록 APU(400)에 의해 필요에 따라서 이용될 수 있다. 이는, 자원의 효율적인 사용을 제공하기 위하여 프로그램 실행과 동시에 DMA 전송을 지원하는데 이용된다.
데이터의 처리 동안 필요에 따라서, APU(400)는 하나 이상의 이러한 또는 다른 이벤트의 상태를 판단하도록 이벤트 상태 레지스터(410A)에 폴링(polling)을 행할 수 있다. 바람직하게는, 이벤트의 하나 이상이 APU(400)의 외부 및/또는 특정 PE(201)의 외부에서 작용한다. 오직 하나의 특정 비트 또는 여러 비트가 가동하도록, 이벤트 상태 마스크(410B)는 이벤트 상태 레지스터(410A)의 일부 비트를 마스크하는데 사용되는 것이 바람직하다. 바람직하게는, 이벤트 상태 마스크 레지스터(410B)에 의해 제공되는 데이터는, 다음의 기록 동작에 의해 변화될 때까지 보유된다. 이에 따라, 데이터는 각각의 (외부) 이벤트 상태 문의 또는 대기 이벤트에 대하여 재특정될 필요가 없다. 이로 인하여, 마스크되는 동안 발행하는 이벤트는 이벤트 상태에 나타나지 않을 것이다. 한편, 마스크 이벤트는, 마스크에서 벗어날 때까지 또는 이벤트 종료 상태 확인 레지스터(410C)에 기록됨으로써 확인될 때까지 미결정될 것이다. 미결정이나 마스크된 이벤트에 대한 이벤트 종료 상태 확인 레지스터(410C)의 기록에 따라서, 이벤트가 소거될 것이다. 실제로, 마스크된 이벤트가 마스크에서 벗어날 때까지 미결정되는 것이 바람직하므로, 이벤트 상태 레지스터(410A)에 보고되지 않은 마스크 이벤트의 확인에 따라서, 이벤트가 소거될 것이다.
특히, 본 발명은 도 2의 BE(301)을 이용하여 수행되는 것이 바람직하나, 다른 멀티프로세서 시스템이 사용될 수도 있다. 예를 들어, 도 4의 멀티프로세서 시스템(450)은 본 발명의 하나 이상의 실시 형태를 수행하는데 이용될 수 있다. 멀티프로세서 시스템(450)은 버스(45B)를 통하여 메모리 인터페이스(454)에 결합된 다수개의 프로세서(452A-C; 어떤 수도 이용될 수 있다)를 포함한다. 메모리 인터페이스(454)는 다른 버스(460)를 통하여 DRAM과 같은 고유 메모리(456)와 통신한다. 메모리 인터페이스(454)는(도 2의 메모리 인터페이스(215A-B)와 같이) 프로세서(452A-C) 사이에 분산될 수 있고, 또한 필요에 따라 DMAC와 함께 가동할 수 있다. 프로세서(452A-C)는 도 3과 동일 또는 유사한 구조를 사용하여 구현되는 것이 바람직하다.
특히 로크 라인 예약 소실 이벤트와 관련하여 이벤트 상태 레지스터(410A-C; 도 3)의 중요성은, 동기화 및/또는 상호 배제 연산에 대한 아토믹 업데이트 프리미티브에 대한 논의가 있는 경우 더욱 명확해질 것이다. 본 발명의 중요하고 유리한 실시 형태를 보다 완전히 이해하기 위하여, 종래의 멀티프로세서 동기화 및/또는 상호 배제 연산의 설명이 먼저 이루어질 것이다. APU(400) 상에서 가동하는 소프트웨어가 공유 메모리, DRAM(225)의 데이터에의 액세스를 동기화시키고 다중 APU(400)에 의한 실행을 동기화시키는 능력을 갖도록, 동기화 및 상호 배제 연산이 PE(201)에 의해 제공된다. 이로 인하여, 아토믹 시퀀스가 제공되는데, 아토믹 시퀀스는 판독 시퀀스, 변경 시퀀스 및 기록 시퀀스를 포함한다. 이러한 시퀀스는 전형적으로 비교 및 교환 명령, 인출 및 연산 없음(NO-OP) 명령, 인출 및 저장 명령, 인출 및 AND 명령, 인출 및 증분/ADD 명령, 그리고 테스트 및 세트 명령의 형태를 취한다. PU(203) 상에서, 이러한 시퀀스는 실제적으로 명령이 아니지만, 예약을 갖는 로드 및 조건부 저장과 같은 아토믹 업데이트 프리미티브와 관련하여 소프트웨어를 사용하여 구현된다. 예로서, 테스트 및 세트 프리미티브와 비교 및 교환 프리미티브의 기존 소프트웨어 구현은, 다음의 의사 코드:
루프(loop): 예약을 갖는 로드
기대 값과 비교
루프와 동일하지 않은 분기(branch)
조건부로 새로운 값 저장
예약 소실의 경우 원래의 루프로 분기
출구(exit): 계속
을 사용한다.
상술한 의사 코드 시퀀스 및 다른 유사한 동기화 시퀀스는, 데이터가 기대 값과 동일해질 때까지 로크 라인 상에서 "스피닝(spinning)"을 요구한다. 이러한 스피닝이 장시간 동안 발생할 수 있기 때문에, 낭비되는 CPU 순환 및 메모리 순환이 발생한다. 이에 따라, 일정 APU(400)는 과도한 양의 전력을 소비하고, 또한 과도한 양의 열을 방산한다.
본 발명의 하나 이상의 실시 형태에 따르면, 로크 라인 예약 소실 이벤트와 같은 이벤트 상태 레지스터(410A)의 하나 이상의 이벤트는, 아토믹 업데이트 예약이 소실되었음을 APU(400)에 통지하는데 이용된다. 아토믹 업데이트 예약은 명령(예컨대 로크 라인 입수 및 예약)을 로드하는 특정 데이터를 사용함으로써 획득된다. 일반적으로, 공유 메모리, DRAM(225)의 예약된 어드레스(로크 라인)에서 데이터의 변경, 특히 외부 변경이 발생한 경우, 예약은 소실된다. 이러한 기술을 사용함으로써, 테스트 및 세트 프리미티브와 비교 및 교환 프리미티브의 소프트웨어 구현은 다음의 의사 코드:
루프: 예약을 갖는 로드
기대 값과 비교
계속과 동일한 경우 분기
외부 이벤트 채널로부터 판독
외부 이벤트에 대하여 정지 및 대기
이벤트가 "예약 소실"인 경우 루프로 분기
그렇지 않은 경우 다른 태스크로 분기
계속: 조건부로 새로운 값 저장
예약 소실의 경우 원래의 루프로 분기
와 같은 것에 의해 재기록될 수 있다.
이벤트 상태 레지스터(410A)와 조합하여 상술된 의사 코드는 소비되는 전력의 현저한 감소와 이로 인한 APU(400)에 의해 방산되는 전력의 현저한 감소를 제공한다. 특히, APU(400)는 "중지 모드" 또는 저 전력 소비 모드에, 특정 외부 이벤트가 그 모드를 인터럽트할 때까지 들어갈 수 있다. 예로서, 저 전력 소비 모드는 APU(400)의 시스템 클록을 정지시킴으로써 들어가게 할 수 있다. 이에 따라, 특정 APU(400)가 공유 메모리 DRAM(225)의 데이터의 일정 부분을 수득하기 위하여 대기하는 경우, 또는 동기화 장벽 값 상에서 대기하는 경우, APU(400)는 저 전력 소비 모드에 들어가서 전 전력 소비 모드를 인터럽트하기 위하여 외부 이벤트에 대해 대기할 수 있다. APU(400)의 저 전력 소비 모드를 인터럽트하도록 허용된 외부 이벤트로서의 예약 소실 이벤트의(이벤트 상태 레지스터(410A)에 나타남으로서의) 이용은 아토믹 업데이트 예약 시스템에 대한 유일하고 강력한 확장이며 보다 효율적인 멀티처리를 가능하게 하는 이점을 갖는다.
아토믹 업데이트에 참가하도록 APU(400)를 허용할 예약 소실 이벤트의 이용을 보다 완전하게 설명하기 위하여, 도 3 및 도 5를 참조한다. 도 5는 PE(201; 도 2)의 하나 이상에 의해 수행되는 것이 바람직한 일부 동작을 지시하는 흐름도이다. 과정의 시작으로서, 특정 APU(400)는 DMAC 및/또는 메모리 인터페이스(215)로 로드 명령을 발행한다(동작 500). 특히, DMAC(205)와 메모리 인터페이스(215)는 DRAM(225)으로부터 및 DRMA(225)으로 데이터를 판독 및 기록하도록 함께 동작한다. 이러한 요소는 개별 요소로서 도시되나, 요소는 단일 유닛으로서 구현될 수 있다. 게다가, DMAC(205)의 기능 및/또는 메모리 인터페이스(215)의 기능은 "메모리 인터페이스" 또는 "메모리 관리"에 의해 수행되는 것으로서 표현될 수 있다.
로드 명령은 예약을 갖는 로드 데이터인 것이 바람직한데, 이는 로크 라인 입수 및 예약 명령으로서 상술되었다. 본질적으로, 이는 공유 메모리 DRAM(225)의 특정 유효 어드레스에서의 데이터에 대한 요구이다. 동작 502에서, 메모리 인터페이스(DMAC(205) 및/또는 메모리 인터페이스(215))는, 로드 명령이 표준적인 로드 명령 또는 로크 라인 입수 및 예약 명령인지의 여부를 판단하는 것이 바람직하다. 로드 명령이 표준적인 명령인 경우, 공정 흐름은 동작 504로 분기하는 것이 바람직한데, 동작 504에서 표준적인 처리 기술은 로드 명령을 충족시키는데 사용된다.
한편, 로드 명령이 로크 라인 입수 및 예약 명령인 경우, 공정 흐름은 동작 506으로 분기하는 것이 바람직하다. 여기서, 메모리 인터페이스는 공유 메모리 DRAM(225)의 물리적 주소(physical address)로 특정 APU(400)에 의해 발행되는 유효 어드레스를 변환하는 것이 바람직하다. 동작 508에서, 메모리 인터페이스는 APU(400)로의 전송을 위하여 DRAM(225)의 물리적 주소에 저장된 데이터에 액세스한다. 바람직하게는, 데이터가 DRAM(225)의 물리적 주소에서 라인으로부터 액세스된 경우, 메모리 인터페이스는 물리적 주소와 관련된 상태 위치에 APU(400)의 식별 번호를 기록한다. 동작 512에서, 메모리 인터페이스(215)는 APU(400)의 이벤트 상태 레지스터(410A)의 예약 소실 상태 비트를 리셋하는 것이 바람직하다. 이는 물리적 주소에서 하나 이상의 메모리 라인을 로크한다. 메모리 인터페이스는 DRAM(225)의 예약된 라인을 모니터하는 것이 바람직하다. 특정 PE(201) 외부의 프로세서와 같은 다른 프로세서가 DRAM(225)의 예약된 라인으로부터 데이터를 변경하는 경우(동작 516), 메모리 인터페이스는 라인이 예약된 APU(400)의 이벤트 상태 레지스터(410A)의 예약 소실 상태 바이트를 세트하는 것이 바람직하다(동작 518).
도 6을 참조하면, 메모리 인터페이스는 DRAM(225)의 예약된 라인을 모니터하지만(동작 514), APU(400)는 공유 메모리 DRAM(225)으로부터 (예약을 가지고)요구된 데이터를 수신하는 것이 바람직하다(동작 520). 데이터가 처리될 필요가 있는 경우(동작 522), APU(400)는, APU(400) 상에서 가동하는 소프트웨어 프로그램에 의해 명령됨으로써 필요로 되는 일정 동작을 수행한다(동작 524). 동작 526에서, APU(400)는 저 전력 소비 모드(슬립(sleep) 모드)에 들어간다. 예로서, 데이터가 기대 값이 아닌 경우에만 APU(400)는 저 전력 소비 모드에 들어갈 수 있다. 이는, 장벽 동기화가 바람직한 경우(이에 관하여 이하에서 설명될 것이다)에 유용하다. 제한된 외부 이벤트가 발행할 때까지, APU(400)는 이러한 저 전력 소비 모드를 유지한다(동작 528).
예로서, 외부 이벤트는 예약이 소실되었다는 것일 수 있다(예컨대, 외부 프로세서가 DRAM(225)의 예약된 라인으로부터의 데이터가 변경했다는 것). 동작 530에서, APU(400)는 이벤트 상태 레지스터(410A)에 폴링을 행하고, 예약 상태 비트가 세트되었는지의 여부를 판단하는 것이 바람직하다(동작 532). 예약이 소실되지 않은 경우(예컨대, 예약 상태 비트가 세트되지 않은 경우), APU(400)는 다른 태스크를 자유롭게 수행한다(동작 534). 한편, APU(400)가 예약이 소실되었음을 판단하는 경우(예컨대, 예약 상태 비트가 세트된 경우), 과정은, APU(400)가 예약의 불량 없이 데이터 조작 태스크를 수행할 때까지 과정이 반복되는 원래의 시작(도 5)으로 루프하는 것이 바람직하다.
상술한 바와 같이, 본 발명은 장벽 동기화 기술에 따른 멀티처리를 수행하는 것에 관하여 사용될 수 있다. 예를 들어, 멀티처리 시스템(예컨대, 도 4의 시스템(450))의 다수개의 프로세서 중 어느 하나가 이른바 동기화 장벽 값에서 대기하는 경우, 프로세서는 저 전력 소비 모드에 들어가거나 예약 소실 이벤트와 같은 외부 이벤트가 발행할 때까지 다른 처리 태스크의 수행을 시작할 수 있다. 멀티처리 시스템의 모든 프로세서가 현재의 처리 태스크를 완료할 때까지 다수개의 프로세서가 다음의 처리 태스크를 시작하는 것을 방지하는 것이 바람직한 경우, 장벽 동기화 기술이 사용된다.
장벽 동기화 기술에 관한 본 발명의 이용에 대한 보다 상세한 설명이 도 4, 도 7 및 도 8을 참조하여 이루어질 것이다. 장벽 동기화 기술에 따르면, 공유 변수 s는 이러한 모든 프로세서가 현재의 처리 태스크를 완료할 때까지 프로세서(452A-C)가 다음의 처리 태스크를 수행하는 것을 방지하거나 허용하는데 사용된다. 더욱 상세하게는, 도 7을 참조하면, 일정 프로세서(452)는 다른 프로세서의 처리 태스크와 동기화되기 위한 것인 다수개의 처리 태스크(예컨대, 현재의 처리 태스크) 중 어느 하나를 수행한다(동작 600). 현재의 태스크가 완료되는 경우, 프로세서(452)는 공유 변수 s의 값을 획득하기 위하여 메모리 인터페이스(452)로 예약을 갖는 로드 명령을 발행하는데, 공유 변수 s는 국부적 변수 w로서 저장된다(동작 602). 설명을 위하여, 공유 변수 s의 값은 0으로 초기화되었다고 가정하면, 초기 값이 적절한 값일 수 있다는 것으로 이해된다. 동작 604에서, 프로세서(452)는 N 값에 대하여 국부적 변수 w의 값을 증가시키거나 감소시키는데, 여기서 N은 장벽 동기화 과정에 참가하는 프로세서(452)의 수를 지시한다. 장벽 동기화 과정에 참가하는 프로세서의 수를 3으로 가정하는 경우, 적절한 N 값은 3이다. 이러한 예에 따르면, 프로세서(452)는 동작 604에서의 국부적 변수 w의 값을 증가시킨다.
동작 606에서, 프로세서(452)는 공유 변수 s와 관련된 메모리 위치의 공유 DRAM(456)으로, 국부적 변수 w의 값의 저장을 용이하게 하기 위하여 조건부 저장 명령을 발행한다. 단계 602에서 로드된 공유 변수 s의 값이 0의 초기 값이었다고 가정하면, 동작 606에서 조건부 저장된 값은 1이 될 것이다. 동작 608에서, 판단은 예약이 소실되었는지의 여부에 대하여 이루어진다. 예약이 소실된 경우, 과정 흐름은 원래의 동작 602로 루프하고, 동작 602, 604 및 505는 반복된다. 예약이 소실되지 않은 경우, 과정 흐름은 동작 610(도 8)으로 진행한다. 특히, 공유 변수 s에의 값 1의 성공적인 저장은, 세 개의 프로세서 중 어느 하나가 현재의 처리 태스크를 완료했다는 것을 지시한다.
동작 610에서, 판단은 국부적 변수 w의 값이 N과 동일한지의 여부에 대하여 이루어진다. 판단이 긍정적인 경우, 과정 흐름은 동작 612로 진행하는데, 여기서 타깃 값은 공유 DRAM(456)의 공유 변수 s로서 저장된다. 다음으로, 과정 흐름은 동작 614로 진행하는데, 또한 동작 614는 동작 610에서의 판단이 부정적인 경우 과정 흐름이 진행하는 곳이다. 동작 614에서, 공유 DRAM(456)으로부터 공유 변수 s의 값을 획득하여 국부적 변수 w로 저장하기 위하여, 프로세서(452)는 메모리 인터페이스(454)로 예약을 갖는 로드 명령을 발행한다.
동작 616에서, 판단은 국부적 변수 w의 값이 타깃 값과 동일한지의 여부에 대하여 이루어진다. 예로서, 타깃은 0 또는 어떤 다른 수일 수 있다. 판단이 긍정적인 경우, 과정 흐름은 동작 618로 진행하는 것이 바람직한데, 여기서 다수개의 처리 태스크 중 다음의 하나가 수행된다. 즉, 공유 변수 s의 값이 타깃 값에 설정되어 있는 경우, 프로세서(452)는 다음의 처리 태스크를 시작하도록 허용된다. 동작 616에서의 판단이 부정적인 경우, 과정 흐름은 동작 620으로 진행하는 것이 바람직한데, 여기서 프로세서(452)는 저 전력 소비 상태에 들어가거나 장벽 동기화 과정과 관련되지 않은 다른 처리 태스크를 시작한다.
동작 622에서, 판단은 예약(동작 614의 예약을 갖는 로드)이 소실되었는지의 여부에 대하여 이루어진다. 예약이 소실되지 않은 경우, 프로세서(452)는 동작 620의 상태에서 유지한다. 한편, 예약이 소실된 경우, 저 전력 소비 상태는 동작 624에서 인터럽트되고(또는 다른 처리 태스크가 중지되거나 종료된다), 과정이 원래의 동작 614로 루프한다. 동작 616에서의 판단이 긍정적일 때까지 동작 614, 616, 620, 622 및 624가 반복되는데, 이에 의해 과정 흐름은 동작 618로 진행하고 다수개의 처리 태스크 중 다음의 하나가 시작된다. 프로세서(452)가 다음의 처리 태스크를 완료하고 나면, 과정 흐름은 원래의 동작 602로 루프하고, 여기서 전체의 과정이 반복된다.
유리하게도, 장벽 동기화 기술에의 아토믹 업데이트 원리의 이용은 장벽 동기화 과정에 참가하는 프로세서(452)가 저 전력 소비 상태에 들어가거나 다른 처리 태스크를 시작하도록 허용하는데(동작 620), 이는 전력 소비 및 방산을 감소시키고 전체적인 멀티처리 기능의 효율을 개선한다.
본 발명의 하나 이상의 부가적 실시 형태에 따르면, PE(201) 및/또는 BE(301)는, 도 9에 도시된 바와 같이 컴퓨터 시스템(101)의 전체적인 분산된 아키텍처를 구현하는데 이용될 수 있다. 시스템(101)은, 다수개의 컴퓨터 및 컴퓨팅 디바이스가 접속된 네트워크(104)를 포함한다. 네트워크(104)는 LAN, 인터넷과 같은 글로벌 네트워크 또는 어떤 다른 컴퓨터 네트워크일 수 있다.
네트워크(104)에 접속된 컴퓨터 및 컴퓨팅 디바이스(네트워크의 "구성 요소")는, 예컨대 클라이언트 컴퓨터(106), 서버 컴퓨터(108), 개인 정보 단말기(PDA; 110), 디지털 텔레비전(DTV; 112) 및 다른 유무선 컴퓨터와 컴퓨팅 디바이스를 포함한다. 네트워크(104)의 구성 요소에 의해 사용되는 프로세서는 PE(201) 및/또는 BE(301)로부터 구성된다.
시스템(101)의 서버(108)는, 클라이언트(106), 서버(108) 보다 많은 데이터 및 어플리케이션의 처리를 수행하고, 클라이언트(106) 보다 많은 컴퓨팅 모듈을 포함한다. 한편, 이러한 예에 있어서, PDA(110)는 더 적은 양의 처리를 수행한다. 이에 따라, PDA(110)는 최소 수의 컴퓨팅 모듈을 포함한다. DTV(112)는 클라이언트(106)와 서버(108) 사이의 처리의 레벨을 수행한다. 이에 따라, DTV(112)는 클라이언트(106)와 서버(108) 사이의 다수의 컴퓨팅 모듈을 포함한다.
이러한 시스템(101)의 동종 구성은 적응성, 처리 속도 및 처리 효율을 향상시킨다. 시스템(101)의 각각의 구성 요소는 동일한 컴퓨팅 모듈(PE(201)) 중 하나 이상(또는 일부분)을 이용하여 처리를 수행하기 때문에, 데이터 및 어플리케이션의 실제적인 처리를 수행하는 특정 컴퓨터 또는 컴퓨팅 디바이스는 중요하지 않다. 더욱이, 특정 어플리케이션 및 데이터의 처리는 네트워크의 구성 요소 사이에서 공유될 수 있다. 시스템 전체에서 시스템(101)에 의해 처리된 데이터 및 어플리케이션을 구성하는 셀을 유일하게 식별함으로써, 처리 결과는 이러한 처리가 발생된 곳에 관하여 처리를 요구하는 컴퓨터 또는 컴퓨팅 디바이스로 전송될 수 있다. 이러한 처리를 수행하는 모듈은 공동의 구조를 갖고 공동의 ISA를 사용하기 때문에, 프로세서 사이에서 호환성을 획득하기 위하여 소프트웨어의 추가된 계층의 계산 부담이 방지된다. 이러한 구조 및 프로그래밍 모델은, 예컨대 실시간 멀티미디어 어플리케이션을 실행하는데 필요한 처리 속도를 향상시킨다.
시스템(101)에 의해 향상된 처리 속도 및 효율의 부가적 이점을 취하기 위하여, 이러한 시스템에 의해 처리되는 데이터 및 어플리케이션은 유일하게 식별되고 균일하게 포맷된 소프트웨어 셀(102)로 패키징된다. 각각의 소프트웨어 셀(102)은 어플리케이션 및 데이터를 모두 포함하고 있거나 포함할 수 있다. 또한, 각각의 소프트웨어 셀은 네트워크(104) 및 시스템(101) 전체의 셀을 글로벌하게 식별할 ID를 포함한다. 이러한 소프트웨어 셀의 구조의 균일성과 네트워크 전체의 소프트웨어 셀의 유일한 식별은 네트워크의 어떤 컴퓨터 또는 컴퓨팅 디바이스 상의 어플리케이션 및 데이터의 처리를 용이하게 한다. 예를 들어, 클라이언트(106)는 소프트웨어 셀(102)을 조직화할 수 있으나, 클라이언트(106)의 제한된 처리 능력 때문에, 이러한 소프트웨어 셀을 처리를 위한 서버(108)로 전송한다. 이에 따라, 소프트웨어 셀(102)은, 네트워크(104)의 처리 자원의 이용가능성을 기초로 하여 처리를 위한 네트워크(104) 전체로 이동할 수 있다.
또한, 시스템(101)의 프로세서 및 소프트웨어 셀(102)의 동종 구조는 오늘날의 이종 네트워크의 여러 문제를 방지한다. 예를 들어, 일정 명령 세트, 예컨대 자바 가상 머신과 같은 가상 머신을 이용하여 일정 ISA 상에서의 어플리케이션의 처리를 허용하려고 하는 비효율적인 프로그래밍 모델이 방지된다. 이에 따라, 시스템(101)은 종래의 네트워크 보다 더욱더 효과적이고 효율적으로 광대역 처리를 구현할 수 있다.
바람직하게는, 컴퓨팅 네트워크의 하나 이상의 구성 요소가 특정 APU(400)의 저 전력 소비 모드의 인터럽트를 허용할 트리거로서의 예약 소실 이벤트를 사용한다. 게다가, 예약이 소실된 경우, APU(400)는, 공유 메모리 DRAM(225)에서의 예약의 소실 없이 완료될 때까지 데이터 조작 태스크를 반복하는 것이 바람직하다. 이는, 아토믹 업데이트 예약 시스템에 대한 유일하고 강력한 확장이며 보다 효율적인 멀티처리를 가능하게 한다.
이상에서, 특정 실시예를 참조하여 본 발명이 설명되었으나, 이 실시 형태는 본 발명의 원리 및 적용을 예시한 것에 불과하다. 따라서, 예시된 실시예에는 다수의 변형이 가능하며, 다른 구성이 첨부된 특허 청구 범위에 의해 규정된 본 발명의 의도 및 범위로부터 벗어남이 없이 고려될 수 있다.

Claims (29)

  1. a) 데이터가 위치되는 공유 메모리의 요구된 어드레스를 포함하는 예약을 갖는 로드 명령을 발행하는 단계;
    b) 일정 연산이 상기 데이터 상에서 수행되도록 상기 공유 메모리로부터 상기 데이터를 수신하는 단계;
    c) (i) 저 전력 소비 모드에 들어가는 단계 및 (ii) 다른 처리 태스크를 시작하는 단계 중 적어도 어느 하나를 행하는 단계; 및
    d) 상기 공유 메모리 내 상기 어드레스의 상기 데이터가 변경된 경우에 소실되는 상기 예약이 소실되었다는 통지를 수신하는 단계;를 포함하는 것을 특징으로 하는 방법.
  2. 제 1항에 있어서, 상기 예약이 소실되었다는 상기 통지는,
    (i) 상기 저 전력 소비 모드의 인터럽트; 및 (ii) 상기 다른 처리 태스크의 인터럽트; 중 적어도 어느 하나의 인터럽트로서 동작하는 것을 특징으로 하는 방법.
  3. 제 1항에 있어서, 상기 저 전력 소비 모드에 들어가는 단계 또는 상기 다른 처리 태스크를 시작하는 단계는,
    상기 데이터가 일정 값이 아닌 경우에만 실행되는 것을 특징으로 하는 방법.
  4. 제 3항에 있어서,
    상기 통지가 상기 예약이 소실되었음을 지시하는 경우, 상기 a) 단계 내지 상기 d) 단계를 반복하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  5. 제 1항에 있어서,
    상기 데이터가 상기 공유 메모리로부터 액세스된 경우, 상기 공유 메모리 내의 상기 어드레스 지정된 위치와 관련된 상태 위치에, 상기 예약을 갖는 로드 명령을 발행하는 프로세서와 관련된 식별 번호를 기록하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  6. 제 1항에 있어서,
    상기 공유 메모리 내 상기 어드레스의 상기 데이터가 변경된 경우, 상기 프로세서의 상태 레지스터 내의 예약 소실 비트가 상기 예약이 소실되었음을 지시하도록 하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  7. 제 6항에 있어서, 상기 예약이 소실되었는지의 여부를 판단하는 단계는,
    상기 상태 레지스터에 폴링(polling)을 행하는 단계 및 상기 예약 소실 비트가 나타나는 경우 상기 예약이 소실되었음을 판단하는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 공유 메모리;
    상기 공유 메모리에 결합되어 동작하는 메모리 인터페이스; 및
    상기 메모리 인터페이스와 통신하는 다수개의 처리 유닛;을 포함하며,
    상기 다수개의 처리 유닛 중 적어도 하나는,
    a) 데이터가 위치되는 상기 공유 메모리의 요구된 어드레스를 포함하는 예약을 갖는 로드 명령을 상기 메모리 인터페이스 유닛으로 발행하는 동작;
    b) 일정 동작이 상기 데이터 상에서 수행되도록 상기 메모리 인터페이스 유닛으로부터 상기 데이터를 수신하는 동작;
    c) (i) 저 전력 소비 모드에 들어가는 동작 및 (ii) 다른 처리 태스크를 시작하는 동작 중 적어도 어느 하나; 및
    d) 상기 공유 메모리 내 상기 어드레스의 상기 데이터가 변경된 경우 소실되는 상기 예약이 소실되었다는 통지를 수신하는 동작;을 행하도록 동작하는 것을 특징으로 하는 시스템.
  9. 제 8항에 있어서, 상기 예약이 소실되었다는 통지는,
    (i) 상기 저 전력 소비 모드의 인터럽트 및 (ii) 상기 다른 처리 태스크의 인터럽트 중 적어도 어느 하나의 인터럽트로서 동작하는 것을 특징으로 하는 시스템.
  10. 제 8항에 있어서, 상기 적어도 하나의 처리 유닛은,
    상기 데이터가 일정 값이 아닌 경우에만 상기 저 전력 소비 모드에 들어가도록 동작 또는 상기 다른 처리 태스크를 시작하도록 동작하는 것을 특징으로 하는 시스템.
  11. 제 10항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 통지가 상기 예약이 소실되었음을 지시하는 경우, 상기 a) 동작 내지 상기 d) 동작을 반복하도록 더 동작하는 것을 특징으로 하는 시스템.
  12. 공유 메모리;
    상기 공유 메모리에 결합되고, 상기 공유 메모리의 요구된 어드레스로부터 데이터를 검색하도록 동작하며, 상기 공유 메모리의 상기 요구된 어드레스로 데이터를 기록하도록 동작하는 메모리 인터페이스; 및
    상기 메모리 인터페이스와 통신하고, 일정 동작이 상기 데이터 상에서 수행되도록 상기 데이터가 상기 공유 메모리의 특정 어드레스로부터 예약을 가지고 로드될 것을 상기 메모리 인터페이스 유닛에 명령하도록 동작하는 다수개의 처리 유닛;을 포함하며,
    상기 다수개의 처리 유닛 중 적어도 어느 하나는,
    상기 공유 메모리의 상기 특정 어드레스의 데이터가 다른 하나 이상의 상기 처리 유닛에 의해 변경되는 경우 소실되는 상기 예약이 소실되었는지의 여부를 지시하는 하나 이상의 비트를 갖는 상태 레지스터를 포함하는 시스템으로,
  13. 제 12항에 있어서, 상기 적어도 하나의 처리 유닛은,
    상기 데이터가 일정 값이 아닌 경우, 저 전력 모드에 들어가도록 동작하는 것을 특징으로 하는 시스템.
  14. 제 13항에 있어서, 상기 적어도 하나의 처리 유닛은,
    상기 저 전력 소비 모드를 인터럽트하도록 허용되는 이벤트에 대응하여 상기 저 전력 소비 모드에서 빠지도록 더 동작하는 것을 특징으로 하는 시스템.
  15. 제 14항에 있어서, 상기 적어도 하나의 처리 유닛은,
    상기 예약이 소실되었는지의 여부를 판단하기 위하여 상기 상태 레지스터의 상기 하나 이상의 비트에 폴링을 행하도록 더 동작하는 것을 특징으로 하는 시스템.
  16. 제 15항에 있어서, 상기 적어도 하나의 처리 유닛은,
    (i) 일정 동작이 상기 데이터 상에서 수행되도록 상기 공유 메모리의 상기 특정 어드레스로부터 예약을 가지고 상기 데이터를 로드할 것을 상기 메모리 인터페이스 유닛에 재명령하도록 더 동작하는 것을 특징으로 하는 시스템.
  17. 제 14항에 있어서, 상기 저 전력 소비 모드에 명령하도록 허용되는 상기 이벤트는 상기 예약이 소실되었다는 것인 것을 특징으로 하는 시스템.
  18. 제 11항에 있어서, 상기 메모리 인터페이스 유닛은,
    상기 데이터가 상기 공유 메모리로부터 액세스된 경우 상기 공유 메모리의 상기 특정 어드레스와 관련된 상태 위치에, 상기 예약을 갖는 로드 명령을 발행하는 적어도 하나의 상기 처리 유닛과 관련된 식별 번호를 기록하도록 동작하는 것을 특징으로 하는 시스템.
  19. 제 12항에 있어서, 상기 메모리 인터페이스 유닛은,
    상기 공유 메모리의 상기 특정 어드레스의 상기 데이터가 상기 처리 유닛 중 다른 하나에 의해 변경되었는지의 여부를 모니터함으로써, 상기 데이터가 소실되었는지의 여부를 모니터하도록 동작하는 것을 특징으로 하는 시스템.
  20. 제 19항에 있어서, 상기 메모리 인터페이스 유닛은,
    상기 적어도 하나의 처리 유닛의 상기 상태 레지스터의 상기 하나 이상의 비트가 상기 예약이 소실되었음을 지시하도록 동작하는 것을 특징으로 하는 시스템.
  21. 공유 메모리;
    상기 공유 메모리에 결합되고, 상기 공유 메모리의 요구된 어드레스로부터 데이터를 검색하도록 동작하며, 상기 공유 메모리의 상기 요구된 어드레스에 데이터를 기록하도록 동작하는 메모리 인터페이스 유닛;
    상기 메모리 인터페이스와 통신하고, (i) 일정 동작이 상기 데이터 상에서 수행되도록 상기 데이터가 상기 공유 메모리의 특정 어드레스로부터 예약을 가지고 로드될 것을 상기 메모리 인터페이스 유닛에 명령하도록 동작하는 다수개의 처리 유닛;을 포함하며,
    적어도 하나의 처리 유닛은,
    (i) 상기 데이터가 상기 공유 메모리의 상기 특정 어드레스 에 저장되는 명령을 발행한 다음, 저 전력 소비 모드에 들어가는 동작: 및 (ii) 다른 처리 태스크를 시작하는 동작; 중 적어도 어느 하나를 행하도록 동작하는 것을 특징으로 하는 시스템.
  22. 제 21항에 있어서, 적어도 하나의 상기 처리 유닛은,
    상기 데이터가 일정 값이 아닌 경우에만 상기 저 전력 소비 모드에 들어가는 동작 또는 상기 다른 처리 태스크를 시작하는 동작을 행하도록 동작하는 것을 특징으로 하는 시스템.
  23. 제 21항에 있어서, 상기 적어도 하나의 처리 유닛은,
    상기 예약이 소실되었다는 통지에 대응하여 (i) 상기 저 전력 소비 모드에서 빠지는 동작 및 (ii) 상기 다른 처리 태스크를 중지하는 동작 중 적어도 어느 하나를 행하도록 더 동작하는 것을 특징으로 하는 시스템.
  24. 제 21항에 있어서, 상기 적어도 하나의 처리 유닛은,
    상기 공유 메모리의 상기 특정 어드레스의 상기 데이터가 변경되는 경우 소실되는 상기 예약이 소실되었는지의 여부를 지시하는 하나 이상의 비트를 갖는 상태 레지스터를 포함하는 경우 발생되는 것을 특징으로 하는 시스템.
  25. 제 24항에 있어서, 상기 메모리 인터페이스 유닛은,
    상기 적어도 하나의 처리 유닛의 상태 레지스터의 상기 하나 이상의 비트가 상기 예약이 소실되었음을 지시하도록 동작하는 것을 특징으로 하는 시스템.
  26. 제 24항에 있어서, 상기 적어도 하나의 처리 유닛은,
    상기 예약이 소실되었는지의 여부를 판단하도록 상기 상태 레지스터의 상기 하나 이상의 비트에 폴링을 행하도록 더 동작하는 것을 특징으로 하는 시스템.
  27. 제 25항에 있어서, 상기 적어도 하나의 처리 유닛은,
    (i) 일정 동작이 상기 데이터 상에서 수행되도록 상기 공유 메모리의 상기 특정 어드레스로부터 예약을 가지고 상기 데이터를 로드할 것을 상기 메모리 인터페이스 유닛에 재명령하도록 더 동작하는 것을 특징으로 하는 시스템.
  28. 제 21항에 있어서, 상기 메모리 인터페이스 유닛은,
    상기 데이터가 상기 공유 메모리로부터 액세스된 경우 상기 공유 메모리의 상기 특정 어드레스와 관련된 상태 위치에, 상기 예약을 갖는 로드 명령을 발행하는 적어도 하나 상기 처리 유닛과 관련된 식별 번호를 기록하도록 동작하는 것을 특징으로 하는 시스템.
  29. 공유 메모리;
    상기 공유 메모리에 결합되어 동작하는 메모리 인터페이스; 및
    상기 메모리 인터페이스와 통신하고, 장벽 동기화를 이용하여 병렬로 다수개의 태스크들을 실행하도록 동작하는 N 개의 처리 유닛;을 포함하며,
    상기 N 개의 처리 유닛은,
    a) 상기 다수개의 태스크들 중 어느 하나를 수행하는 단계;
    b) 국부적 변수 w를 초기화하는 단계;
    c) 상기 국부적 변수 w에 상기 공유 메모리로부터의 상기 공유 변수 s를 로드하도록 상기 메모리 인터페이스 유닛으로 예약을 갖는 로드 명령을 발행하는 단계;
    d) 상기 N 값에 대하여 국부적 변수 w를 증가시키거나 감소시키는 단계;
    e) 상기 공유 메모리의 상기 공유 변수 s로서 상기 국부적 변수 w의 값의 저장이 용이하게 이루어지도록 상기 메모리 인터페이스 유닛으로 조건부 저장 명령을 발행하는 단계;
    f) 상기 공유 메모리의 상기 어드레스에서 상기 공유 변수가 변경되는 경우 소실되는 상기 예약이 소실된 경우 상기 a) 단계 내지 상기 d) 단계를 반복하는 단계;
    g) 상기 국부적 변수의 값이 N에 도달한 경우, 상기 공유 메모리의 상기 공유 변수 s로서 타깃 값의 저장이 용이하게 이루어지도록 상기 메모리 인터페이스 유닛으로 저장 명령을 발행하는 단계;
    h) 상기 국부적 변수 w에 상기 공유 메모리로부터의 상기 공유 변수 s를 로드하기 위하여 상기 메모리 인터페이스 유닛으로 예약을 갖는 로드 명령을 발행하는 단계;
    i) 상기 국부적 변수의 값이 상기 타깃 값이 아닌 경우, 저 전력 소비 모드에 들어가거나 다른 처리 태스크를 시작하고, 그 밖의 경우, 단계 k)로 진행하는 단계;
    j) 상기 공유 메모리의 상기 공유 변수에 대한 요구가 다른 프로세서에 의해 이루어지는 경우 소실되는 상기 예약이 소실되었다는 통지를 수신하는 경우, 상기 저 전력 소비 모드에서 빠지거나, 상기 다른 처리 태스크를 중지하고, 상기 h) 단계 및 상기 i) 단계를 반복하는 단계; 및
    k) 상기 다수개의 태스크들 중 다음 태스크를 수행하는 단계;에 의해 장벽 동기화를 이용하여 병렬로 다수개의 태스크들을 실행하도록 동작하는 것을 특징으로 하는 시스템.
KR1020067013264A 2003-12-01 2004-11-25 효율적인 멀티태스킹을 위한 방법 및 장치 KR100841864B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/725,129 2003-12-01
US10/725,129 US20050120185A1 (en) 2003-12-01 2003-12-01 Methods and apparatus for efficient multi-tasking

Publications (2)

Publication Number Publication Date
KR20060121266A true KR20060121266A (ko) 2006-11-28
KR100841864B1 KR100841864B1 (ko) 2008-06-27

Family

ID=34620232

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067013264A KR100841864B1 (ko) 2003-12-01 2004-11-25 효율적인 멀티태스킹을 위한 방법 및 장치

Country Status (7)

Country Link
US (1) US20050120185A1 (ko)
EP (1) EP1702264A1 (ko)
JP (1) JP2005166056A (ko)
KR (1) KR100841864B1 (ko)
CN (1) CN1942858A (ko)
TW (1) TW200532471A (ko)
WO (1) WO2005055057A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100895298B1 (ko) * 2007-04-30 2009-05-07 한국전자통신연구원 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트
WO2009134217A1 (en) * 2008-04-28 2009-11-05 Hewlett-Packard Development Company, L.P. Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared-memory multi-processor systems
KR101029769B1 (ko) * 2008-11-19 2011-04-19 후지쯔 가부시끼가이샤 배리어 동기 장치, 배리어 동기 처리 시스템 및 방법, 리덕션 연산 장치, 리덕션 연산 처리 시스템 및 방법
US9342478B2 (en) 2009-02-13 2016-05-17 Samsung Electronics Co., Ltd. Processor with reconfigurable architecture including a token network simulating processing of processing elements

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101369441B1 (ko) * 2005-08-23 2014-03-04 어드밴스드 마이크로 디바이시즈, 인코포레이티드 컴퓨터 시스템 내부의 프로액티브 동기 방법
US7509463B2 (en) * 2005-12-01 2009-03-24 Sony Computer Entertainment, Inc. Cell processor atomic compare and swap using dedicated synergistic processor element
US7398368B2 (en) 2005-12-01 2008-07-08 Sony Computer Entertainment Inc. Atomic operation involving processors with different memory transfer operation sizes
US20070174411A1 (en) * 2006-01-26 2007-07-26 Brokenshire Daniel A Apparatus and method for efficient communication of producer/consumer buffer status
US8117389B2 (en) * 2006-03-16 2012-02-14 International Business Machines Corporation Design structure for performing cacheline polling utilizing store with reserve and load when reservation lost instructions
US9390015B2 (en) * 2006-03-16 2016-07-12 International Business Machines Corporation Method for performing cacheline polling utilizing a store and reserve instruction
US8219763B2 (en) 2006-03-16 2012-07-10 International Business Machines Corporation Structure for performing cacheline polling utilizing a store and reserve instruction
US9983874B2 (en) * 2006-03-16 2018-05-29 International Business Machines Corporation Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling
US8024521B2 (en) * 2007-03-13 2011-09-20 Sony Computer Entertainment Inc. Atomic operation on non-standard sized data using external cache
US8108696B2 (en) * 2008-07-24 2012-01-31 International Business Machines Corporation Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
US8209489B2 (en) * 2008-10-22 2012-06-26 International Business Machines Corporation Victim cache prefetching
US8499124B2 (en) * 2008-12-16 2013-07-30 International Business Machines Corporation Handling castout cache lines in a victim cache
US8225045B2 (en) * 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8489819B2 (en) * 2008-12-19 2013-07-16 International Business Machines Corporation Victim cache lateral castout targeting
US8949540B2 (en) * 2009-03-11 2015-02-03 International Business Machines Corporation Lateral castout (LCO) of victim cache line in data-invalid state
US8095733B2 (en) * 2009-04-07 2012-01-10 International Business Machines Corporation Virtual barrier synchronization cache castout election
US8131935B2 (en) * 2009-04-07 2012-03-06 International Business Machines Corporation Virtual barrier synchronization cache
US8347036B2 (en) * 2009-04-09 2013-01-01 International Business Machines Corporation Empirically based dynamic control of transmission of victim cache lateral castouts
US8312220B2 (en) * 2009-04-09 2012-11-13 International Business Machines Corporation Mode-based castout destination selection
US8327073B2 (en) * 2009-04-09 2012-12-04 International Business Machines Corporation Empirically based dynamic control of acceptance of victim cache lateral castouts
US9189403B2 (en) * 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US8966323B2 (en) * 2010-12-23 2015-02-24 Arm Limited Monitoring multiple data transfers
WO2013101012A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Accessing configuration and status registers for a configuration space
US9285865B2 (en) * 2012-06-29 2016-03-15 Oracle International Corporation Dynamic link scaling based on bandwidth utilization
CN104541248B (zh) * 2012-07-27 2017-12-22 华为技术有限公司 计算系统对屏障命令的处理
US20140032854A1 (en) * 2012-07-30 2014-01-30 Futurewei Technologies, Inc. Coherence Management Using a Coherent Domain Table
EP2937783B1 (en) 2014-04-24 2018-08-15 Fujitsu Limited A synchronisation method
GB2528115B (en) * 2014-07-11 2021-05-19 Advanced Risc Mach Ltd Dynamic saving of registers in transactions
GB2569775B (en) * 2017-10-20 2020-02-26 Graphcore Ltd Synchronization in a multi-tile, multi-chip processing arrangement
GB2575292B (en) 2018-07-04 2020-07-08 Graphcore Ltd Code Compilation for Scaling Accelerators
FR3091363B1 (fr) * 2018-12-27 2021-08-06 Kalray Système de synchronisation inter-processeurs configurable
CN111124696B (zh) * 2019-12-30 2023-06-23 北京三快在线科技有限公司 单元组创建、数据同步方法、装置、单元和存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0368144B1 (en) * 1988-11-10 1996-02-07 Motorola, Inc. Digital computing system with low power mode
JP2500101B2 (ja) * 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
JP2550897B2 (ja) * 1993-11-29 1996-11-06 日本電気株式会社 マルチプロセッサシステムのバリア同期装置
US5566321A (en) * 1993-12-13 1996-10-15 Cray Research, Inc. Method of managing distributed memory within a massively parallel processing system
US5774731A (en) * 1995-03-22 1998-06-30 Hitachi, Ltd. Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage
US5983326A (en) * 1996-07-01 1999-11-09 Sun Microsystems, Inc. Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
US5953536A (en) * 1996-09-30 1999-09-14 Intel Corporation Software-implemented tool for monitoring power management in a computer system
EP0960372A2 (en) * 1997-10-29 1999-12-01 Koninklijke Philips Electronics N.V. Method and system for synchronizing block-organized data transfer
US6275907B1 (en) * 1998-11-02 2001-08-14 International Business Machines Corporation Reservation management in a non-uniform memory access (NUMA) data processing system
JP2002041489A (ja) * 2000-07-25 2002-02-08 Mitsubishi Electric Corp 同期信号生成回路、それを用いたプロセッサシステムおよび同期信号生成方法
JP3426223B2 (ja) * 2000-09-27 2003-07-14 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステム、データ処理システム、データ処理方法、コンピュータプログラム
JP4253796B2 (ja) * 2001-11-08 2009-04-15 富士通株式会社 コンピュータ及び制御方法
JP3884990B2 (ja) * 2002-04-26 2007-02-21 富士通株式会社 マルチプロセッサ装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100895298B1 (ko) * 2007-04-30 2009-05-07 한국전자통신연구원 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트
US8510514B2 (en) 2007-04-30 2013-08-13 Electronics And Telecommunications Research Institute Apparatus, method and data processing element for efficient parallel processing of multimedia data
WO2009134217A1 (en) * 2008-04-28 2009-11-05 Hewlett-Packard Development Company, L.P. Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared-memory multi-processor systems
US9032128B2 (en) 2008-04-28 2015-05-12 Hewlett-Packard Development Company, L.P. Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared memory multi-processor systems
KR101029769B1 (ko) * 2008-11-19 2011-04-19 후지쯔 가부시끼가이샤 배리어 동기 장치, 배리어 동기 처리 시스템 및 방법, 리덕션 연산 장치, 리덕션 연산 처리 시스템 및 방법
US9342478B2 (en) 2009-02-13 2016-05-17 Samsung Electronics Co., Ltd. Processor with reconfigurable architecture including a token network simulating processing of processing elements

Also Published As

Publication number Publication date
WO2005055057A1 (en) 2005-06-16
TW200532471A (en) 2005-10-01
JP2005166056A (ja) 2005-06-23
CN1942858A (zh) 2007-04-04
KR100841864B1 (ko) 2008-06-27
EP1702264A1 (en) 2006-09-20
US20050120185A1 (en) 2005-06-02

Similar Documents

Publication Publication Date Title
KR100841864B1 (ko) 효율적인 멀티태스킹을 위한 방법 및 장치
US7921151B2 (en) Managing a plurality of processors as devices
US9058164B2 (en) Power consumption reduction in a multiprocessor system
US7478390B2 (en) Task queue management of virtual devices using a plurality of processors
US7653908B2 (en) Grouping processors and assigning shared memory space to a group in a heterogeneous computer environment
US8549521B2 (en) Virtual devices using a plurality of processors
US7613886B2 (en) Methods and apparatus for synchronizing data access to a local memory in a multi-processor system
JP4526412B2 (ja) マルチプロセッサシステムにおけるタスク管理方法および装置
US8001294B2 (en) Methods and apparatus for providing a compressed network in a multi-processing system
US7689784B2 (en) Methods and apparatus for dynamic linking program overlay
US7680972B2 (en) Micro interrupt handler
US7516334B2 (en) Power management for processing modules
US20060179179A1 (en) Methods and apparatus for hybrid DMA queue and DMA table
US20060195824A1 (en) Methods and apparatus for segmented stack management in a processor system
US7415703B2 (en) Loading software on a plurality of processors
US7818507B2 (en) Methods and apparatus for facilitating coherency management in distributed multi-processor system
US20060179275A1 (en) Methods and apparatus for processing instructions in a multi-processor system

Legal Events

Date Code Title Description
N231 Notification of change of applicant
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: 20120611

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee