KR20140032943A - 멀티 레벨 처리용 방법, 시스템 및 장치 - Google Patents

멀티 레벨 처리용 방법, 시스템 및 장치 Download PDF

Info

Publication number
KR20140032943A
KR20140032943A KR1020137012293A KR20137012293A KR20140032943A KR 20140032943 A KR20140032943 A KR 20140032943A KR 1020137012293 A KR1020137012293 A KR 1020137012293A KR 20137012293 A KR20137012293 A KR 20137012293A KR 20140032943 A KR20140032943 A KR 20140032943A
Authority
KR
South Korea
Prior art keywords
processor
lower level
processors
level processor
instruction
Prior art date
Application number
KR1020137012293A
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 모사이드 테크놀로지스 인코퍼레이티드
Publication of KR20140032943A publication Critical patent/KR20140032943A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • 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
    • 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
    • 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/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/526Mutual exclusion algorithms
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)

Abstract

본 발명은, 공유 데이터를 사용하고 프로세서 속도로 복수의 하위 레벨 프로세서(202, 203 ... 20n)의 각각에 임계 섹션을 바로 넣을 권한을 제어하고 발행하기 위한 상위 레벨 프로세서(201)를 포함하는 동기화 오버헤드의 비용을 줄이기 위한 멀티-레벨 프로세서(200)에 관한 것이다. 일 실시예에서, 하위 레벨 병렬 프로세서의 명령 레지스터는 상위 레벨 프로세서(201)의 데이터 메모리에 매핑된다. 다른 실시예(1300)는 프로세서의 3개의 레벨을 통합한다. 이 방법은, 상위 레벨 프로세서의 메모리에 하위 레벨 프로세서의 명령을 매핑하는 단계 및 하위 레벨 프로세서의 연산을 제어하는 단계를 포함한다. 이 방법 및 장치의 변형은, 단일 명령 다수의 데이터(SIMD) 및 단일 명령 대 다수의 명령 및 다수의 데이터(SI>MIMD)의 실행을 용이하게 한다. 프로세서는 전력 소비를 줄이기 위해 클럭 주파수를 신장시키는 능력을 포함한다.

Description

멀티 레벨 처리용 방법, 시스템 및 장치{METHOD, SYSTEM AND APPARATUS FOR MULTI-LEVEL PROCESSING}
본 발명은, 컴퓨터 데이터 처리 및 특히 멀티 프로세서 데이터 처리에 관한 것이다. 보다 구체적으로, 본 발명은 멀티 레벨 프로세서를 동기화하기 위한 장치, 방법 및 시스템에 관한 것이다.
최근까지, 기술 및 아키텍쳐의 발전으로 인하여 단일 마이크로프로세서의 전력은 용량, 속도 및 복잡도 면에서 지속적으로 증가해왔다. 이러한 발달은 수익 체감(diminishing return)에 최근 도달하였다. 증가하는 메모리/프로세서 속도 차이와 칩 내부의 도체로 인한 지연으로 인해, 단일 프로세서의 성능은 그 한계에 도달하기 시작했다. 이것은, 더 높은 부품 밀도에 의해 야기된 전력 및 열 관리 한계로 인한 클럭 속도 비율 상승에 있어서의 둔화(slowdown)와 결합된다.
단일 프로세서의 성능이 그 한계에 도달하고 있지만, 새로운 멀티미디어 애플리케이션, 갈수록 정교해지는 디지털 신호 처리, 날씨 모델링(modeling)과 같은 과학적인 애플리케이션 및 CAD 도구를 사용하여 복잡한 시스템을 설계하기 위한 다른 엔지니어링 애플리케이션으로 인해 컴퓨팅 전력에 대한 필요성은 증가하고 있다.
칩 하나 당 더 많은 트랜지스터를 빠른 속도로 생성하며 여전히 기술은 발전하고 있으나, 단일 프로세서의 구조는 이러한 발전을 효과적으로 계속 활용할 수 없다. 결과적으로 업계는 단일 칩에서의 멀티 코어로 전환해왔다. 최근, 업계는 단일 칩에서 2개, 4개 및 8개의 코어를 생산하고 사용자는 성능상 비례 이득을 얻을 것을 기대한다. 게다가, 단일 칩 상의 멀티프로세서 시스템으로, 최근까지 다수의 사용자가 이용하기 힘들었던 병렬 처리는 이제 적당한 비용으로 이용가능하다.
멀티프로세서 시스템의 성능 이득은 또한 주로 동기화 및 통신 오버헤드로 인한 기본적인 문제로 인해 제한된다. 동기화 문제를 해결하기 위한 이전의 시도는 제한된 성공을 거두었다. 병렬 프로세서는, 동시에 데이터를 공유하여 실행될 수 있는 프로세스로 이러한 애플리케이션을 나누고, 네트워크와 메모리를 사용하여 서로 통신해야 한다. 데이터의 공유는 상호 배제(mutual exclusion)를 사용하여 시간적으로 직렬화된다.
암달의 법칙(Amdahl's Law)은 다수의 프로세서를 사용하여 이용가능한, 이론적 최대 증속(theoretical maximum speedup)을 예측하기 위해 병렬 컴퓨팅에서 종종 사용된다. 병렬 컴퓨팅에서 다수의 프로세서를 사용하는 프로그램의 증속은 프로그램의 순차 프랙션에 필요한 시간에 의해 제한된다. 예컨대, 프로그램이 단일 프로세서 코어를 사용하여 20시간을 필요로 하고, 1시간의 특정 부분이 병렬화될 수 없는 반면 19시간의 나머지 약속된 부분(95%)이 병렬화되는 경우, 우리가 이러한 프로그램의 병렬화된 실행에 사용한 프로세서의 수에 관계없이, 최소 실행 시간은 그 중요한 1시간보다 작을 수 없다. 그러므로, 증속은 20×까지 제한된다.
물론, 가장 긍정적인 결과는, 누군가가 코어의 수가 증가함에 따라 효율적으로 작동할 의존가능한 병렬 소프트웨어를 만드는 방법을 발견한 것임이 언급되었다. 이것은, 향후 30년간 마이크로프로세서 하드웨어를 제조하기 위해 상당히 요구되는 기반을 제공할 것이다. 매년 또는 2년동안의 칩 당 트랜지스터의 수를 더블링하는 루틴이 중단될지라도 - 무어의 법칙의 두려운 종료 - , 혁신적인 패키징은 다수의 칩으로부터 경제적인 시스템이 생성되는 것을 가능하게 하고, 소비자가 오래 누릴 수 있는 성능상의 이득을 유지한다.
동기화는, 각각의 프로세서가 공유 데이터 아이템을 사용하거나 임계 코드 섹션에 들어갈 권리를 갖기 전에, 락(lock)이라 지칭되는 특수한 메모리 로케이션을 얻도록 허용하는, 특수한 아토믹 명령(atomic instruction)을 사용하여 멀티프로세서 시스템에서 구현된다. 이것은, 락을 얻고 다른 모든 프로세서를 대기하기 위하여 경쟁하는 모든 N개의 프로세서를 위해 네트워크나 버스를 사용하는 것을 포함한다. 대기하는 동안, 프로세서는 시간과 전력을 낭비하는 타이트한 루프에서 스핀(spin)한다. 프로세서가 락을 요구할 때마다, 프로세서는 락이 종료될 때 이것을 릴리스해야한다. 이것은 각각의 락을 얻고 릴리스하기 위한 버스나 네트워크를 사용한 락 로케이션의 무효화를 포함한다.
SGI Origin 3000 시스템의 32-프로세서를 위한 동기화의 타임 코스트는, 동기화가 232,000 사이클이 걸리며 이 기간 동안 32개의 프로세서가 2200만 FLOPS를 실행할 수 있고, 이 기간은 종래의 동기화 손상 시스템 성능을 명백하게 표시하는 것이다. 스누핑(snooping)을 위한 칩 외부에서 네트워크를 사용하는 종래의 멀티프로세서의 스케일러빌리티에 대한 락의 효과는, 8개의 프로세서를 사용하는 것에 있어서 단지 약 6으로 조정되지만, 32개의 프로세서를 사용할 때, 스케일러빌리티는 1로 떨어진다. 칩 내부의 고속 네트워크를 갖는 멀티 프로세서는 32개의 프로세서를 사용할 때 대략 12로 조정된다.
종래의 멀티코어 프로세서는 동기화를 위한 저장 조건형 명령(SC instruction)을 따르는 로드 링크 명령(LL instruction)과 같은 특수한 아토믹 명령을 사용한다. LL(로드 링크) 명령은 캐시(cache)로 데이터의 블록을 로드하고, 이어서 후속 저장 조건형(SC) 명령이 동일한 블록에 기록하는 것을 시도한다. 선행하는 LL 이후, 이 블록이 참조되지 않을 경우에만 이것은 성공한다. LL과 SC 쌍 사이의 다른 프로세서로부터의 이 블록에 대한 임의의 참조는 이 SC가 실패하도록 유도한다. 이에 대한 동기화 비용은, 버스나 네트워크를 사용하는 레이턴시이고, 뿐만 아니라, 프로세서가 실패할 때마다, 이것은, 성공적인 SC를 대기하고 시간과 전력을 낭비하는 타이트한 루프 주위를 스핀하면서 반복적으로 (무효화로 인하여) 캐쉬로부터 이 블록을 로드하기 위해 버스를 사용해야 한다.
이러한 문제를 해결하기 위한 한 접근법은, 멀티 프로세서를 위한 연구 가속기(RAMP) 연구 프로젝트이다. RAMP는 대형 병렬 컴퓨터를 위한 효과적인 소프트웨어를 개발하기 위한 시도로서 초대형 병렬 프로세서(MPP) - 최대 1000개의 프로세서 - 를 생성하기 위해 필드 프로그래밍가능 게이트 어레이(FPGA)를 사용하는 것을 제안한다. 이러한 방법의 문제점은, 이 방법이 대형 멀티프로세서 시스템을 모방 할 뿐 정확하게 그 활동을 표현하지는 않는다는 점이다. 예컨대, RAMP가 실제 프로세서를 사용할 때, 프로세서 메모리 속도 비율은 매우 커지며, 상당히 많은 수의 프로세서들의 성능 이득에 대한 제약 및 메모리 갭의 큰 레이턴시를 숨길 필요성도 유발된다. FPGA 에뮬레이션(emulation)은 실제 시스템에 비해 100배 작은 감속을 성취한다. 그러므로, 이것은 실제로 대형 병렬 처리 시스템을 위해 사용될 수 없다.
트랜잭션 메모리(TM)는, 병렬 처리 성능을 개선하려는 또 다른 시도로서 발달되었다. 트랜잭션 메모리는, 단위적으로(atomically), 락 없이 큰 코드의 트랜잭션을 실행함으로써 동기화 오버헤드를 감소하고자 한다. 트랜잭션이 실패할 경우 이것은 커밋(commit)하지 않으며 지원의 오버헤드가 낭비된다. 트랜잭션 메모리 시스템의 주요 과제는, 단위성(atomicity), 일관성(consistency) 및 고립 특성을 강요하는(enforcing) 오버헤드를 감소하는 것이다. 하드웨어 TM 제약은 더 낮은 레벨의 메모리 계층에서의 스필 상태로 시스템을 강제(forcing)하는 하드웨어 버퍼링으로 인한 것이다. 소프트웨어 TM은 판독 및 기록 세트를 추적하는 메타데이터를 조종하도록 유도될 때 추가 제약을 가지고 메모리 시스템 및 전력 소비의 오버헤드를 증가시키도록 실행될 때 추가 명령을 갖는다.
상기 언급된 방법은 스케일러빌리티 문제를 효과적으로 다룰 수 없으며, RAMP는 실제 고속 프로세서가 실행을 위해 수천개의 병렬 명령을 필요로 하는 대형 메모리 레이턴시를 숨기기 위해 프로세서를 감속시킨다. TM은 병렬로 실행할 코드의 큰 청크를 한정하고 트랜잭션 사이의 동시성(concurrency)을 가지는 것에 의존하여, 미세 그레인 병렬성(fine grain parallelism)을 방지하고, 시스템 성능이 가장 느린 트랜잭션의 성능에 제한되게 한다.
최근, 연구원들은, 비대칭 칩 멀티프로세서(ACM)을 제안하여 임계 섹션의 코드를 실행(run)하는 것보다, 병렬 애플리케이션의 직렬 부분 및 또한 임계 섹션의 성능을 개선하고, 개별 프로세서는 임계 섹션을 실행하기 위한 대형 코어(특정 파워풀 프로세서)를 위한 요청을 보내며 요청 프로세서는 실행을 재개할 수 있다. 임계 섹션의 데이터 및 코드는 추가 오버헤드를 더하는 버스를 사용하여 대형 프로세서에 전송되어야 한다. 이러한 방법은, 직렬 방식으로 한번에 단 하나의 임계 섹션의 코드를 실행할 수 있으며, 프로세서의 다수의 동시성 그룹이 서로 상이함에도 불구하고 이들의 임계 섹션에서 실행하는 것을 허용할 수 없다. 모든 프로세서는 대형 프로세서를 사용할 권한을 얻기 위해 서로 경쟁하여, 오직 하나의 프로세서만이 한번에 성공하며 다른 프로세서들은 대기해야만 한다.
주로 대형 프로세서가 다른 모든 프로세서들보다 빠르고 시리얼 코드를 증속할 수 있으므로, ACM으로 인한 개선이 성취된다. 대형 프로세서는 수행을 위한 실리콘의 측면에서 더 많은 전력과 비용을 사용한다는, 한계를 갖는다. 다른 모든 프로세서들이 자신의 시리얼 코드를 실행하기 위해 대형 프로세서를 사용할 때 대형 프로세서의 캐시는 공간적 로컬리티가 부족한, 상이한 프로그램 영역으로부터의 코드 및 데이터를 저장하여, 축출로 인한 캐시 미스율(cache miss rate)의 증가를 유도하는 것이 ACM의 또 다른 한계이다.
종래의 멀티프로세서 시스템은, 프로세서가 공유 데이터에 액세스하고자 하거나 임계 코드 섹션으로 들어가고자 할 때, 상이한 프로세서들 사이에서 동기화하기 위해 락을 사용한다. 각각의 공유 데이터 아이템이나 임계 섹션은, 1로 설정된 레지스터의 컨텐트를 락의 컨텐트와 스와핑함으로써 얻어져야만 하는 락으로 불리는 메모리 로케이션을 사용하며, 레지스터가 0으로 복귀하면 락이 해제되고 프로세서가 레지스터의 값을 사용하여 단위적으로 락을 1로 설정한다. 스와프가 레지스터에서 1을 회복하면 락은 다른 프로세서에 의해 사용되고 프로세서는 성공적인 스와프를 대기하는 루프에서 스핀해야한다.
이하는 종래의 멀티프로세서에서의 동기화를 위한 코드이다:
R=1;
Figure pct00001
프로세서 레지스터(R)의 값을 1로 설정
Loop: EXCHANGE(R, LOCK);
Figure pct00002
락과 레지스터 스와프
If R==1 then goto Loop;
Figure pct00003
락 값이 a1으로 복귀하면 루프에서 대기
{enter critical section};
Figure pct00004
그렇지 않으면 임계 섹션에서 다른 실행 코드를 시작
Lock=0;
Figure pct00005
종료되면 다른 프로세서들이 임계 섹션 에 들어가기 위해 Lock=0을 설정
상기 코드에서, 락은 공유된 변수이고 다른 프로세서의 캐시에서 업데이트되거나 무효화되어야 하기 때문에, 각각의 프로세서는 락에 기록하기 위해 버스나 네트워크를 사용할 필요가 있다. 프로세서는, 이것이 임계 섹션에서 코드를 실행하는 것을 종료하고 락에 0을 기록하면 네트워크를 사용해야 한다. 이것은, 프로세서가 버스나 네트워크를 한번 더 사용할 것을 요하며, N개의 프로세서들에 있어서, spent는:
2N+1+2(N-1)+...2+1이며 이것은:
Sum of (2i+1) from i = 0 to N = 2N+N×N bus cycles.
상기 공식은 최악의 조건을 제공한다. 최적의 조건은 2N 버스 사이클이다.
도 1은 시간(T0)에 버스를 사용하여 공유된 변수를 얻고자 하는 3개의 프로세서를 도시하는 블록 다이어그램(100)이다. 프로세서(PN)는 P1 및 P0가 대기하는 동안, T0에서 락을 얻는 제 1 프로세서이다. PN은 T1에서 락을 해제하고, 즉시 P1는 P0이 대기하는 동안 락을 얻는다. 시간(T2)에서, P1은 락을 해제하고 최종적으로 P0가 락을 얻는다. 이러한 예시는 최적 가능 조건이 2N이라는 것을 보여준다.
본 명세서에서 기재된 바와 같은 멀티-레벨 처리는, 각각의 프로세서가 동기화에 관련될 필요성 없이, 공유 데이터를 사용하거나 프로세서 속도로 각각의 프로세서에 직접적으로 임계 섹션을 넣을(enter) 권한을 상위 레벨 프로세서가 제어하고 발행하도록 함으로써 동기화 오버헤드의 비용을 줄인다. 하위 레벨 병렬 프로세서의 명령 레지스터는, 카피나 전송 없이 상위 레벨 프로세서 데이터 메모리에 매핑되어서, 상위 레벨 프로세서가 각각의 병렬 프로세서의 명령을 판독하고 이것을 하위 레벨 병렬 프로세서의 관여나 인지 없이 바꾸는 것이 가능하게 한다. 기재된 바와 같이 멀티 레벨 처리를 사용하는 시스템은 100사이클 버스를 사용하여 32 종래의 멀티프로세서 시스템을 위한 동기화 대기 시간을 32×32×100 사이클로부터 오직 32×1 사이클로 단축하며 3200 배의 이득을 제공한다. 게다가, 이 시스템은, 상이한 공유 데이터 아이템의 동시 액세스와 공유 데이터에 액세스할 권한을 기다리는 동안 전력을 절감하기 위해 각각의 프로세서를 정지시킬 능력을 허용한다. 기재된 실시예는, SIMD에 대한 효과적인 구현을 사용하여 벡터 연산을 지원하기에 편한 방법을 제공한다. 이 시스템은, 상위 레벨 프로세서가 명령 패치에 대한 대역 요청을 줄이는 순차 코드로부터 병렬 코드를 생성하게 하여, 프로그래머들에게는 보다 단순한 병렬 프로그래밍을 생성한다. 하위 레벨 프로세서가 또 다른 하위 레벨 병렬 프로세서에 대한 동기화 프로세서로서 사용될 때, 이 시스템은 멀티프로세서를 위해 제한되지 않은 스케일러빌리티를 제공할 것이다.
본 발명의 특징 및 장점은, 명료함을 위해 첨부된 도면들과 결합하여, 이하의 상세한 설명에서 더욱 명백해진다. 도면에서, 오직 3개의 프로세서들이 하위 레벨에 도시되지만, 실질적인 숫자는 3을 훨씬 초과할 것이라는 점이 이해된다.
도 1은 버스를 사용하는 공유 변수를 얻고자 하는 3개의 종래의 프로세서의 블록 다이어그램이다;
도 2는 발명의 실시예를 통합하는 시스템의 블록 다이어그램이다;
도 3은 본 발명의 도 2의 실시예를 통합하는 시스템의 또 다른 측면을 도시하는 블록 다이어그램이다;
도 4는 버스를 도시하는, 본 발명에 따른 도 2의 실시예를 통합하는 시스템에 대한 블록 다이어그램이다;
도 5는 도 2의 실시예의 일부의 상세한 설계의 개략도이다;
도 6은 도 2의 실시예의 연산을 도시하는 큐(queue)의 블록 다이어그램이다;
도 7은 본 발명을 통합하는 방법의 흐름도이다;
도 8은 본 발명의 도 2의 실시예의 다른 일부의 블록 다이어그램이다;
도 9는 본 발명의 다른 실시예의 블록 다이어그램이다;
도 10은 본 발명의 도 9의 실시예의 일부의 블록 다이어그램이다;
도 11은 본 발명의 제 3 실시예의 블록 다이어그램이다;
도 12는 본 발명의 제 4 실시예의 블록 다이어그램이다;
도 13은 본 발명의 제 5 실시예의 블록 다이어그램이다.
이하의 실시예는 동기화를 포함하는 병렬 처리의 근본적인 문제를 다루는데 집중한다. 현재 및 미래의 대형 병렬 시스템에 적합한 해결책을 찾는 것이 바람직하다. 실시예는 락의 필요성을 제거하고 상위 레벨 프로세서를 통하여 동기화를 제공한다. 상위 레벨 프로세서는 공유 데이터를 사용하거나, 하나의 락을 위해 각각의 프로세서가 경쟁할 필요 없이 프로세서 속도로 임계 섹션을 각각의 프로세서에 넣을 권한을 발행하는 것을 제어한다. 동기화의 오버헤드는 공유 데이터를 사용할 권한에 대해 하나의 클럭으로 감소된다. 락을 갖는 종래의 동기화는 본 발명의 멀티 레벨 처리의 N 프로세서 사이클에 비교해 N2 버스 사이클이 든다. 100 사이클 버스를 사용하는 32 종래의 멀티프로세서 시스템에 있어서, 동기화는 3200배의 이득을 제공하는 멀티-레벨 처리를 위한 단 32×1 사이클에 비해 32×32×100 사이클이 든다.
도 2는 본 발명의 실시예를 통합하는 시스템(200)의 블록 다이어그램이다. 이러한 실시예는, 레지스터를 물리적으로 복제하거나 레지스터를 복사하거나 이러한 명령을 상위 레벨 프로세서에 전송하지 않고, 명령 레지스터를 상위 레벨 프로세서 데이터 메모리에 매핑함으로써 하위 레벨 프로세서의 모든 명령을 열람(view)하고 모니터링하는 능력을 갖는 상위 레벨 프로세서(201) - 이후부터 SyncP 또는 "동기화 프로세서"로 지칭됨 - 를 사용한다.
도 2는, 멀티 레벨 프로세서(201)(SyncP)가 전용 버스(202)를 사용하여 자신의 데이터 메모리(211)내에 모든 하위 레벨 프로세서 명령을 매핑하는 방법을 도시하며, 이 전용 버스(202)는, SyncP(201)가 마치 자신의 메모리인 것처럼 하위 레벨 프로세서의 명령 레지스터에 액세스하는 것을 가능하게 한다. 제 1 하위 레벨 프로세서(203)는 자신의 명령 레지스터(213)가 SyncP(201)의 데이터 메모리 로케이션(210)에 매핑되도록 하고, 제 2 하위 레벨 프로세서(204)의 레지스터(214)는 데이터 메모리 로케이션(215)에 매핑한다. 유사한 방식으로, 모든 프로세서(미도시)는 (201)의 데이터 메모리 로케이션에 매핑된다. 최종적으로, 마지막 하위 레벨 프로세서(206)의 레지스터(216)는 데이터 메모리 로케이션(220)에 매핑된다.
하위 레벨 프로세서(203, 204 내지 206)의 명령을 모니터링하는 것은, 상위 레벨 프로세서(201)가, 동기화 요건에 기초하여 언제든지 하위 레벨 프로세서(203, 204 내지 206)의 명령 레지스터(213, 214 내지 216)에 바람직한 명령을 입력함으로써 하위 프로세서가 실행할 명령과 이 명령을 실행할 시간을 제어하는 것을 가능하게 한다. 상위 레벨 SyncP(201)의 데이터 메모리(211)내에 하위 레벨 병렬 프로세서(203, 204 내지 206)의 상이한 명령 레지스터(213, 214 내지 216)를 매핑하는 것에 대한 구현의 상세는, 구현 섹션에서 이후에 기재한다. 하위 레벨 프로세서(203, 204 내지 206)로부터의 SyncP(201)에 의해 선택된 하위 레벨 프로세서는, 실행을 중단하도록 하고 SyncP(201)가 하위 레벨 프로세서 명령을 판독하고 바람직한 명령을 삽입하여 실행을 제어하도록 대기하도록 유도하는 정지 명령을 실행한다.
또한 SyncP(201)는, 클럭을 생성하거나 SyncP(201)의 데이터 메모리에 각각의 프로세서의 클럭 제어를 매핑할 수 있는 상태 기계에 SyncP 버스(202)를 사용하여 특정 데이터 코드를 전송함으로써, 각각의 하위 레벨 프로세서(203, 204 내지 206)의 클럭 속도를 제어할 수도 있어서, 각각이 자신의 명령 레지스터로부터 확실히 기록하고 판독하는 것을 가능하게 한다. SyncP(201)는 상태 기계가 하위 프로세서 클럭을 생성하기 위해 사용하는 값을 데이터 메모리(211)에 기록한다. 하위 레벨 프로세서(203, 204 내지 206)가 정지 명령을 사용하고, SyncP(201)가 항상 (211)에 매핑된 명령 레지스터에 판독 및 기록할 필요가 있을 때마다 SyncP(201)에 제공하므로 이러한 특성이 멀티-레벨 처리 동기화에서 요구되지 않는다는 점이 주목되어야 한다. 이러한 클럭 생성 특징은, 오직 SIMD(단일 명령 다수의 데이터) 및 SI>MIMD에 대한 것이다. SyncP가 하위 프로세서(203, 204 내지 206)의 명령 레지스터에 판독하거나 기록할 수 있도록 하위 프로세서 클럭을 동기화하기 위한 더 단순한 방법이 가능하며 기술 및 구현에 의존한다.
이러한 실시예는, 명령을 데이터 메모리(211)에 매핑함으로써 하위 레벨 프로세서(203, 204 내지 206)의 병렬 처리의 명령 레지스터를 연속적으로 모니터하기 위해 상위 레벨 프로세서 SyncP(201)를 사용한다. SyncP(201)에 대한 코드는:
Loop:for(i=0 to N-1);
Figure pct00006
모든 프로세서에
load R, IRi;
Figure pct00007
하위 프로세서의 각각의 명령 판독
if((R)==request to use X);
Figure pct00008
명령이 공유 변수 X를 사용하기 위 한 요청일 경우
store R2, IRi;
Figure pct00009
IRi에 대한 승인을 기록하여 X를 사 용하거나 대기할 권한을 어서트
if((R)==end of request);
Figure pct00010
프로세서가 임계 섹션 코드로부터 종료하는 경우
store R3, IRi;
Figure pct00011
일반 코드를 실행하기 위한 컨티 뉴(continue) 어서트
이러한 코드는, N 하위 레벨 프로세서(203, 204 내지 206)가 자신의 코드를 실행하는 동안 오직 SyncP(201)에서만 실행한다.
실시예에서, 동기화 코드는 하위 레벨 프로세서(203, 204 내지 206)의 관여나 인식 없이 백그라운드에서 동작한다. SyncP(201)는, 동일한 변수(X)를 사용할 것을 요청하는 다른 하위 레벨 프로세서(203, 204 내지 206)가 대기하는 동안, 요청 명령에 직접 기록하고 이 명령에 임계 섹션에 들어갈 권한을 부여할 수 있다. 요청 명령은, 프로세서(203, 204 내지 206)의 파이프라인이 자신의 클럭 사이클을 신장시키고 이 명령을 정지로 전환함으로써 정지되는 명령 레지스터에 머무른다. 클럭을 신장시키는 목적은 전력을 줄이기 위해 이것을 감속하는 것이다. 정지 명령 및 프로세서 클럭을 신장시키는 것의 상세는 이하의 전력 절감 특성 부분에서 기재된다.
하위 프로세서(203, 204 내지 206)로부터 선택된 프로세서가 임계 섹션에서 코드를 실행하는 것을 완료하거나 공유 변수(X)의 사용을 완료할 때, 이것은 X를 요청하는 것의 완료를 SyncP(201)에 알리기 위한 정지 능력을 갖는 다른 명령을 사용한다. SyncP(201)는, 이것을 판독할 때, 정지 명령을 제거하고, 하위 레벨 프로세서(203, 204 내지 206) 중 선택된 하나가 이 코드의 리마인더를 수행하는 것을 지속하도록 허용한다.
X를 사용하기 위해 모든 N개의 요청 프로세서를 서브할 시간은 오직 대략 N 사이클이다.
도 3은, SyncP(301)가 3 클럭 사이클에서 PN(306), P1(304) 및 이어서 P0(303)에 대한 공유 변수를 사용할 권한을 어서트하기 위해 사용하는 방법(300)을 도시하는 다이어그램이다.
임계 섹션의 코드를 실행하는 데 사용되는 시간은 도 3에서 무시된다는 점이 주목되어야 한다.
이러한 실시예에 의해 성취되는 동기화 시간상의 이득을 계산하기 위해, 우리는 이하를 가정한다:
프로세서의 수 = 10 및 버스 사이클 시간 = 10 프로세서 사이클;
2N 내지 2N+N×N의 종래 멀티프로세서 동기화 비용;
이것은 2×10×10=200 내지 (200+1000) 사이클;
멀티 레벨 동기화 비용 N = 10 사이클;
이득 범위는 0 내지 120 배.
다수의 프로세서를 고려하고 100 사이클의 네트워크를 사용하면, 이득은 1000배가 될 것이다. 이러한 이득은 동기화 시간에 있으며 전체 성능에 있는 것이 아님이 주목되어야 한다.
상위 레벨 프로세서(301)가 하위 레벨 프로세서(303, 304 내지 306)의 명령을 판독하고 기록하는 성능은 이하의 중요한 장점을 갖는다:
1. 각각의 프로세서(303, 304 내지 306)에서의 전력의 감소로 락이 해 제되는 것을 대기하여 스핀할 필요가 없다. 각각의 하위 레벨 프로세 서(303, 304 내지 306)는 정지 명령을 사용하거나 이것의 클럭을 신장 시킨다.
2. SyncP(301)는 하위 레벨 프로세서(303, 304 내지 306)의 모든 명령 을 모니터하므로 동시에 하나 이상의 공유 변수를 사용할 권한을 함께 발행할 수 있다. 한편으로 종래의 프로세서는, 다른 프로세서로부터 의 다른 판독 또는 기록 명령에 의해 방해될 수 없는 원자 연 산(atomic operation)으로 동기화를 지원하기 위해 공유 버스에 의존 한다.
3. SyncP(301)는 모든 하위 레벨 프로세서(303, 304 내지 306)에 대한 하나의 명령을 삽입할 수 있으므로 벡터 연산을 지원하기 위한 단순하 고 유효한 SIMD를 구현할 수 있다.
4. SyncP(301)는 모든 하위 레벨 명령에 간접 데이터를 기록할 수 있 어서, 각각의 프로세서(303, 304 내지 306)는 캐시나 메모리로부터 임 의의 명령을 패치할 필요 없이 상이한 명령을 실행하기 위한 마이크로 코드 ROM을 인덱스하기 위해 데이터의 하나의 필드를 사용할 것이다.
처리 시스템의 실시예는 임의의 하위 레벨 처리 명령 레지스터의 컨텐트를 판독 및 기록하기 위한 특수 모니터링 버스를 사용한다. 도 4는 특수 버스(402)를 사용하여 N개의 하위 레벨 프로세서(403, 404 내지 406)에 연결된 SyncP(401)를 도시하는 블록 다이어그램(400)이다.
버스(402)는, SyncP(401)가 N개의 하위 레벨 프로세서(403, 404 내지 406)의 어떤 명령 레지스터에 액세스하기를 원하는지를 정의하는 어드레스 버스(402a)를 포함한다. 어드레스 버스(402a)는 n=32에 있어서 logN 수의 와이어를 가지며, 어드레스 버스(402a)는 오직 5개의 어드레스 라인을 갖는다. 프로세서(P0)(403)의 명령 레지스터(IR0 413)는 어드레스=0으로 액세스되고, 프로세서(P1)(404)의 명령 레지스터(IR1 414)는 어드레스 =1로 액세스되며,... 프로세서(PN)(406)의 명령 레지스터(IRN 416)는 어드레스 =N으로 액세스된다.
버스(402)는 또한, 64비트 명령의 경우, 액세스된 하위 레벨 명령 레지스터의 콘텐츠를 포함하는 데이터 버스(402d)를 포함하고, 데이터 버스(402d)의 폭은 64비트이다. SyncP(401)는 액세스된 명령 레지스터로부터 데이터를 판독할 때, 명령 코드의 값과 그 값을 비교할 것이다. 만약 이 값이, 공유 변수(X)에 액세스할 요청으로서의 동기화에 관한 명령의 코드와 일치할 경우, SyncP(401)는 액세스된 명령 레지스터에 하위 레벨 프로세서(403, 404 내지 406)가 공유 변수에 액세스하기 위한 권한을 갖도록 허용하는 특수 명령을 기록함으로써 이러한 요청을 승인하는 것을 결정할 수 있다.
버스(402)는 또한 하위 레벨 프로세서(403, 404 내지 406)의 명령 레지스터(413, 414 내지 416)에 개별적으로 판독/기록하기 위한 제어 라인(402c)을 포함한다. 이것은 1 비트 라인이고, 이것의 값이 0이면, SyncP(401)는 판독을 수행하고, 이것의 값이 1이면 SyncP(401)는 기록을 수행한다.
하위 레벨 프로세서(403, 404 내지 406)의 명령 레지스터(413, 414 내지 416)의 어드레스 매핑은 이것의 데이터 메모리 맵에서 SyncP(401)의 어드레스 0에서 시작할 필요가 없다. 더 높은 어드레스로 이것을 매핑할 필요가 있을 경우, SyncP(401)의 더 높은 어드레스 라인은 명령 레지스터(413, 414 내지 416)에 액세스할 경우 1로 설정된다.
예컨대, A10을 무시할 경우, 명령 레지스터(413, 414 내지 416)에 액세스할 때, SyncP(401)의 데이터 메모리 상에서 IR0에 액세스하기 위한 시작 어드레스는 0이나 1024가 될 것이다.
하위 레벨 프로세서(403, 404 내지 406)의 명령 레지스터의 속도를 갖고, 시스템에 대한 물리적 공간이나 전력 소모가 들지 않으므로, 명령 레지스터(413, 414 내지 416)의 메모리 로케이션은 프로세서 속도로 액세스된다는 점이 주목되어야 한다.
하위 레벨 프로세서(403, 404 내지 406)의 IR(413, 414 내지 416)에 액세스하는데 사용되는 명령은 이하를 포함한다:
LOAD R4, 1024(R0);
Figure pct00012
P0(403)의 IR(413)이 로케이션(1024)에 맵 핑되는 것으로 가정하고 P0(403)의 명령 레 지스터(413)를 판독
STORE R7, 1028(R0);
Figure pct00013
IR(414)이 로케이션(1028)에 매핑되는 것 으로 가정하고 P1(404)의 명령 레지스 터(414)에 기록.
부하 명령은 R0의 1024+컨텐트에서의 메모리 로케이션의 값을 SyncP(401) 레지스터(R4)에 전송한다. R0의 값은 일반적으로 0으로 설정되고 1024는 하위 레벨 프로세서(403, 404 내지 406)의 명령 레지스터(413, 414 내지 416)를 매핑하는 것의 시작 어드레스이다. 이러한 예시에서, 도 5의 어드레스 버스(402a)는 1024로 설정될 것이며, 데이터 버스(402d)는 P0의 IR의 값을 가질 것이고, 제어 버스(402c)는 판독에 대해 READ/WRITE=0을 가질 것이다.
저장 명령은 SyncP(401)가 SyncP(401) 레지스터(R7)에 P1(404) 명령 레지스터(414) 값을 기록하는 것을 허용한다. 이 값은 공유 변수(X)에 대한 액세스를 승인하는 명령이 될 수 있다. 이러한 예시에서, 도 5의 어드레스 버스는 1028로 설정될 것이며, 데이터 버스(402d)는 R7의 값을 가질 것이고, 제어 버스(402c)는 기록을 위한 READ/WRITE=1을 가질 것이다.
도 5는, SyncP(401)가 명령 레지스터 판독 또는 그에 기록하기 위해 임의의 하위 레벨 프로세서(403, 404 내지 406)에 액세스할 수 있는 방법의 상세한 설계를 도시하는 개략도(500)이다. SyncP 버스(402a)로부터의 어드레스는 디코더(503)에 의해 디코딩되어서 하위 레벨 프로세서(403, 404 내지 406)의 N개의 명령 레지스터(504)로부터 하나의 명령 레지스터(504a-d)를 선택한다. 디코더 출력의 신호(IRi)(504c)는 활성화된 것으로 가정되고 하위 레벨 프로세서(404)는 명령 레지스터(414)를 판독하거나 그에 기록하기 위해 액세스된다. 플립 플롭(506)은 하위 레벨 프로세서(404)의 액세스된 명령 레지스터(414)의 1 비트이다. LOAD 명령에서, SyncP-R/W 신호가 0이고, 상위 AND 게이트(506a)는 인버터가 신호(SyncP_R/W=0)에 연결되므로, 인에이블된다. 게이트(506a)가 인에이블되면, 명령 레지스터의 동일한 명령은 각각의 플립 플롭에 이것의 컨텐트를 다시 기록함으로써 유지된다. 또한, 판독에서, 신호(IRi)가 활성이므로, 하위 AND 게이트(506b)는 각각의 플립 플롭의 컨텐트가 SyncP 데이터 버스(402d)를 향해 삼상 버퍼(tri-state buffer)를 통과하도록 허용하도록 인에이블된다.
STORE 연산에 있어서, 신호(IRi)는 활성이고, SyncP_R/W=1는 중간 AND(506c) 게이트가 인에이블되고 상위 레벨 SyncP"DiSyncP"로부터의 데이터가 플립 플롭에 저장되는 것을 허용한다. 이것은 하위 레벨 프로세서(404)에 의해 수행될 SyncP(401)에 의해 기록될 새로운 명령이다.
SyncP(401)는 하위 레벨 프로세서(403, 404 내지 406)의 명령을 모니터하고, 이들을 그룹으로 나눌 수 있으며; 각각의 그룹은 하나의 공유 변수를 위해 경쟁한다. 도 6은 큐를 사용하는 상이한 공유 변수를 분류하는 SyncP(401)를 도시하는 다이어그램(600)이다. 도 6은 베리어 이벤트가 P3과 P14 사이에 공유되는 것을 도시하고 변수(X)는 P1과 P11사이에서 공유된다. Y는 P5와 P6사이에서 공유된다.
다수의 변수의 동기화는 이하의 단계에 의해 성취된다:
1. SyncP(401)는 임의의 순서로 하위 레벨 프로세서(403, 404 내지 406)의 모든 명령을 판독한다.
2. SyncP(401)가 공유 변수를 사용하기 위하여 하위 레벨 프로세서(403, 404 내지 406)들 중 하나로부터의 요청을 발견한 경우, 이것은 이 변수의 전용 큐에 요청 프로세서 수를 저장한다. 예컨대, ACCESS X 큐는 변수(X)에 사용된다. P11는 X를 요청한 것으로 발견될 제 1 프로세서이다(요청 순서로 배열되지 않음).
3. SyncP(401)는 명령 레지스터를 판독하는 것을 지속하고 공유 변수를 사용하기 위한 상이한 요청을 분류한다.
4. 다른 프로세서가 큐를 갖는 공유 변수, 예컨대 X를 요청할 경우, SyncP(401)는 도 6의 P1과 같이 X 큐에 프로세서 수를 더한다.
5. 각각의 큐에 있어서, SyncP(401)는 요청 프로세서를 승인하기 위해 상기 멀티-레벨 처리 섹션의 동기화에서 주어진 것과 동일한 코드를 사용한다. SyncP는 수퍼스칼라 구조(superscalar architecture) 또는 각각의 그룹의 요구되는 코드를 결합하여 단일 발행 순차 코드를 사용한다. 이 순차 코드의 실행은, 동기화가 프로세서 속도에서 수행되는 소수의 명령을 사용하므로 허용가능하다.
도 7은 다수의 공유 변수를 동시에 관리하기 위해 사용된 방법을 도시하는 흐름도(700)이다. SyncP(401)가 상이한 큐에서의 요청을 분류한 후에, 이것은 각각의 요청 프로세서에 대한 액세스를 승인하는 것을 시작한다. 이것은, 액세스의 인터리빙(interleaving)을 사용하여 다수의 하위 레벨 프로레서가 동시에 상이한 공유 변수에 액세스하는 것을 허용한다. SyncP(401)는 단순한 순차 코드를 이용하여 이러한 액세스를 승인한다. 인터리빙은, SyncP가 하위 레벨 프로세서 명령에 액세스하기 위해 순차 코드 및 단일 버스를 사용하는 동안, 상이한 공유 변수에 사용된 동기화의 시간을 중첩하는 것이 가능케 한다.
도 7에서 도시된 바와 같이, 제 1 칼럼(P2)은 먼저 X를 사용할 승인을 받고, 다음으로, P5는 Y를 사용할 승인을 연속하여 받으며, X 및 Y에 액세스하는 것의 동기화 시간은 중첩되고 동시에 발생한다. P2가 X의 사용을 완료하면, 이것은, SyncP(401)에 의해 판독되는 중지 명령을 어서트하고 즉시 P8에 X를 사용할 권한을 승인하고 또한 P2가 지속하게끔 허용한다. 이러한 도면에서, P2 및 P8이 X를 공유하고 양쪽은 동시에 X를 요청하며, P2가 X를 사용하면, P8는 SyncP(401)가 X를 사용하는 것을 승인할 때까지 정지된다고 가정한다. 유사한 방식으로, P1 및 P5가 Y를 공유하고 P7 및 P3가 Z를 공유한다.
하위 레벨 프로세서(403, 404 내지 406)는 사용을 요청하거나 공유 변수를 사용하는 것으로부터의 완료를 요청할 때 특수 정지 명령을 사용한다. 하이 레벨 프로세서(403, 404 내지 406)의 파이프라인 제어 회로 중 하나는 파이프라인이 정지하는 것을 유도하는 정지 명령을 수행할 때, 동일한 상태에서 제어 회로가 머무를 것을 유도하는 상태 머신을 사용한다. 파이프라인은, 정지 명령이 이것을 상이한 명령으로 기록하는 SyncP(401)에 의해 제거될 때에만 명령의 일반적인 수행을 지속한다.
도 8은 하위 레벨 프로세서(403, 404 내지 406) 중 하나가 정지 명령의 결과로 클럭을 신장시킴으로써 그 실행을 중지하는 방법을 도시하는 블록 다이어그램(800)이다. 명령 레지스터(801)가 정지 명령을 포함하면 디코더 출력 신호는 활성화되고 1이 된다. 디코더(802) 출력에 연결된 OR 게이트는 출력=1을 생성하고 플립 플롭(803) 출력 및 클럭 신호를 1로 강제할 것이다. 명령이 정지가 아닐 경우, 플립 플롭(803)의 출력은, 플립 플롭(803) 2×클럭의 ½ 주파수에서의 요구되는 클럭을 생성하는 클럭 신호의 전환으로부터의 피드백으로 인해 모든 2×클럭을 토글(toggle)한다.
임의의 회로에서의 전력 소비는 클럭의 주파수에 비례한다. 새로운 프로세서의 상승된 속도는 칩 내부의 전력을 관리하는데 있어서의 어려움으로 인하여 이러한 프로세서의 설계상의 문제를 유발한다. 승인을 기다리는 동안 프로세서를 정지시키는 것은 전력을 줄이는 것을 돕는다. 종래의 프로세서는 락을 사용하고 이들은 연속적으로 스핀하고 락이 해제될 것을 대기하며 전력을 소비한다.
클럭을 신장시킴으로써 파이프라인을 정지시키는 이러한 특징은 또한 임의의 종래의 프로세서를 위한 특징으로서 또한 사용될 수 있다는 점이 주목되어야 한다.
최신의 프로세서는 SIMD 명령 세트를 제공하여 벡터 연산의 성능을 향상시킨다. 예컨대, 인텔의 네할렘® 및 인텔의 제온® 프로세서는 SSE(스트리밍 SIMD 확장) 명령 세트를 지원하고, 이 세트는 4개의 32-비트 변수를 유지할 수 있는 128 비트 레지스터를 제공한다.
SSE 확장은 ISA에 추가 명령을 더하는 것으로 인해 구조를 복잡하게 만든다. 이것은 추가 파이프라인 단계를 더하고 레지스터에 패킹 데이터 및 패킹되지 않은 데이터를 지원하는 추가 명령의 오버헤드를 사용한다.
멀티 레벨 처리는 디자인 상의 추가 복잡성을 가지지 않는 SIMD 특징을 제공한다. SyncP(401)가 하위 레벨 프로세서의 명령 레지스터에 기록하는 성능은, 모든 명령 레지스터에 대한 기록 신호를 인에이블링함으로써 SyncP(401)가 하위 프로세서(403, 404 내지 406)의 모든 명령 레지스터에 하나의 명령을 기록하는 것을 허용한다. SIMD는 다수의 상이한 데이터에서 동작하는 다수의 동일한 명령으로서 멀티 레벨 처리에서 구현되고, 이것은 SIMD를 이행하는데 있어서 상이하고 유효한 방법이다. 각각의 하위 레벨 프로세서는 이 명령이 SIMD인 것을 알지 못하므로, 인텔 SSE 구현과 비교하였을 때 이 프로세서를 지원하기 위해 복잡성을 추가할 필요는 없다. 이 구현은 이것의 데이터로서 종래의 명령에 의해 액세스된 동일한 레지스터를 사용하므로, 레지스터에 데이터를 패킹하거나 패킹하지 않을 필요 또한 없다. 멀티 레벨에서, 하위 레벨 프로세서에서 하나의 레지스터에 다수의 데이터 요소를 패킹하는 것이 가능하다. 각각의 레지스터의 4개의 요소를 패킹하는 것이 인텔 SSE의 경우의 단지 4와 비교하여 32의 벡터 길이를 생성하는 경우, 128 비트 레지스터를 사용하는 8개의 하위 레벨 프로세서를 만들 것이다. 32 프로세서가 16 비트 요소의 데이터를 패킹하는 경우, 이들은 하나의 사이클 동작에서 수행되는 32×8=256 요소의 벡터 길이를 생성할 것이다. CRAY와 같은 긴 벡터를 지원하는 벡터 프로세서를 구성하려면 많은 비용이 든다.
도 9는, SyncP(901)가 모든 하위 레벨 프로세서(902, 903 내지 904)의 명령 레지스터(912, 913 및 914)의 명령(ADDV R1, R2, R3)에 기록하는 것에 대한 블록 다이어그램(900)이다. 이러한 명령은, 각각의 하위 레벨 프로세서(902, 903 및 904)에 의해 수행될 때, 프로세서 레지스터(902, 903 내지 904) 각각에서 R2 및 R3의 컨텐트에 대한 추가를 수행하지만, 프로세서들(902, 903 및 904) 각각의 R2 및 R3는 벡터 어레이의 상이한 요소의 값을 유지한다. 예컨대, 벡터A에 벡터B를 더할 경우, 먼저 LOADV R2, 0(R5) 명령이 수행되고 하위 레벨 프로세서(902, 903 및 904) 각각의 R5는 어레이A의 상이한 요소의 어드레스가 되도록 설정된다. 이러한 SIMD 명령을 수행하는 것은 A의 요소를 상이한 프로세서의 R2 레지스터에 전송한다.
이하의 코드는 멀티 레벨 처리에서 SIMD를 사용하여 수행되는 벡터 연산을 설명한다:
ADDI R5, R0, #i+1000;
Figure pct00014
A[i]의 요소 i를 지시하기 위해 R5 초기화
ADDI R6, R0, #i+10000;
Figure pct00015
B[i]의 요소 i를 지시하기 위해 R6 초기화
ADDI R7, R0, #100,000;
Figure pct00016
C[i]의 요소 i를 지시하기 위해 R7 초기화
LOADV R8, 0(R5);
Figure pct00017
R8 = 벡터 A[] 또는 그 일부를 상이한 프 로세서의 R8 레지스터에 로드
LOADV R9, 0(R6);
Figure pct00018
R9 = 벡터 B[] 또는 그 일부를 상이한 프 로세서의 R8 레지스터에 로드
ADDV R10, R8, R9;
Figure pct00019
A의 요소를 B에 더하고 벡터로서 각각의 프로세서의 R10에 결과를 저장
STOREV R10, 0(R7);
Figure pct00020
C에 대한 상이한 프로세서의 R10 레지스터 또는 이것의 부분을 저장.
SyncP(901)는, 이것의 데이터 버스(DN)의 최상위 비트를 1과 같게 함으로써, 모든 하위 레벨 프로세서(902, 903 내지 904)의 명령 레지스터(912, 913 내지 914) 각각에 기록하기 위해 도 10에 도시된 이것의 데이터 버스(902d)를 사용한다. SIMD가 아닌, 임의의 다른 명령에 있어서, DN 비트는 0으로 설정된다.
도 10은 멀티 레벨 처리에서의 SIMD의 구현을 도시하는 블록 다이어그램(1000)이다. 명령 레지스터들 중 하나를 선택하기 위해 사용되는 디코더(1001)의 출력(1002) 모두는 다른 입력으로서 DN을 갖는 OR 게이트(1003, 1004 내지 1005)에 연결된다. 모든 하위 레벨 프로세서의 모든 명령 레지스터를 위한 모든 OR 게이트의 출력은 DN=1의 결과로 1로 설정된다. 도 9로 돌아가서, SyncP(901)로부터의 모든 입력 데이터(DN-1 내지 D0)는, 상기 설명된 바와 같이 R/W가 1일 때 모든 하위 레벨 프로세서(902, 903 내지 904)의 명령 레지스터(912, 913 내지 914)에 동시에 기록된다. 이로써, 각각의 하위 레벨 프로세서(902, 903 내지 904)는 이것의 명령 레지스터에 병렬로 기록되었던 동일한 명령을 수행하기 시작한다. 이 도면은 수행된 명령이 R2의 컨텐트를 R3에 더하고 벡터로서 R1에 결과를 저장하는 것을 도시한다.
각각의 프로세서(902, 903 내지 904)의 R2 및 R3의 요소는 요소의 벡터를 형성하고, 이것은 또 다른 LOADDV SIMD 명령으로 메모리로부터 로드될 수 있다.
순차 명령이 다수의 데이터 스트림에서 동작하는 다수의 명령을 생성하는 것을 허용하는 멀티-레벨 처리를 위한 다른 중요한 특징이 있다. SyncP(901)는 이것의 데이터를 필드로 나누고, 이어서, 각각의 필드는, 수행될 준비가 된 디코딩된 명령의 리스트를 저장하는 ROM에 대한 어드레스로서 사용된다. 마이크로코드를 사용하여, ROM은 디코드 단계에 대한 필요를 제거하여 파이프라인을 인텔의 펜티엄4®에서와 같이 스톨(stall)없이 유지한다.
도 11은 SI>MOMD를 지원하는 시스템을 도시하는 블록 다이어그램(1100)이다. SyncP(1101) 데이터 버스(1102d)는 64비트가 되는 것으로 가정되고 8개의 별도 필드로 나뉘며, 각각의 필드는 대응하는 하위 레벨 프로세서(1103, 1104 내지 1105)에 대한 ROM(1113, 1114 내지 1116)에 액세스하기 위한 어드레스로서 각각 사용된다. 이러한 예시에서, P0(1103)는 256 로케이션을 갖는 이것의 ROM(1110)을 어드레스하기 위하여 SyncP 데이터 중 D7 내지 D0를 사용한다. SyncP(1101)가 더 긴 데이터를 가지는 경우, 각각의 ROM(1113, 1114 내지 1116)은 코딩된 명령의 더 긴 저장소를 가질 수 있다. 10 비트 어드레스는 1024개의 상이하게 디코딩된 명령에 액세스할 것이다.
도 11은 또한 SyncP(1101)의 데이터(D7 내지 D0)가, P0에 대한 ADD 명령을 생성한 P0(1103)의 ROM(1113)에 대한 어드레스로서 사용된다는 점을 도시한다. SyncP 데이터(D15 내지 D8)는 SUB 명령을 생성한 P1(1114) ROM(1114)에 대한 어드레스이다. 도 11에 도시된 바와 같이, 이들은, 다수의 ROM(1113, 1114 내지 1116)으로부터 다수의 상이한 명령에 액세스하기 위한 다수의 어드레스로서 사용되는 하나의 명령을 수행하는 SyncP(1101)로부터 기인하여 병렬로 수행되는 상이한 명령이다.
이러한 SI>MIMD 방법에 대한 다수의 장점이 존재한다:
1. 복수의 프로세서(1103, 1104 내지 1106)에 대한 병렬 코드를 생성하는 단일 순차 명령을 사용하므로, 병렬 코드를 기록하는 것을 수월하게 한다.
2. 동기화는 단일 명령으로부터 생성된 코드의 부분에는 필요하지 않다.
3. 하위 레벨 프로세서(1103, 1104 내지 1105)는 캐시나 슬로우 메모리로부터 명령을 패치할 필요 없이 개별적으로 자신의 ROM(1113, 1114 내지 1116)으로부터 직접적으로 명령을 수행하여 전력 및 복잡도를 줄인다.
4. 명령은, 프로세서(1103, 1104 내지 1105)에 대한 명령 전달의 대역폭 및 성능을 개선하는 ROM(1113, 1114 내지 1116)으로부터 프로세서 속도로 수행된다.
5. 이것은, 하위 레벨 프로세서(1103, 1104 내지 1106)를 위한 비용이 들고 복잡한 명령 캐시나 명령 메모리에 대한 필요성을 줄이거나 제거할 수 있다.
도 12는 SyncP(1101)가 하위 레벨 프로세서(1103, 1104 내지 1106)에 대한 상이한 명령의 발행을 제어하는 방법을 도시하는 다이어그램(1200)이다. 다중화기(1201)는 SyncP(1101)에 의해 하위 레벨 처리에 공급된 데이터의 형태를 기반으로 하위 프로세서(1103, 1104 내지 1106)를 위해 IR에 대한 명령의 상이한 형태를 선택하기 위해 사용된다. 다중화기의 선택 라인은, SyncP(1101)의 데이터 라인의 일부에 연결되고 SyncP(1101)가 수행하는 특정 동작에 의해 제어된다. 예컨대, SIMD에서, SyncP(1101)의 비트(DN)는 1로 설정된다.
이하의 상이한 다중화기 선택은 다음과 같다:
1. 하위 레벨 처리는, SyncP(1101)이 명령을 기록하거나 변경할 필요가 없을 경우, 명령 레지스터에서 동일 명령을 유지한다. 다중화기(1201)는 입력으로서 동일한 명령 레지스터의 컨텐트를 선택한다.
2. 다중화기(1201)는 이것이 동기화에서 주로 사용되는 정지 명령이나 승인 명령을 기록할 필요가 있을 경우 SyncPD(1101)의 제 1 데이터 입력을 선택한다.
3. 다중화기(1201)는 SyncP가 SIMD를 수행할 필요가 있을 경우 SyncPD(1101)의 제 2 데이터 입력을 선택한다. 이러한 경우에, SyncPD(1101) 데이터는 모든 하위 레벨 프로세서의 명령 레지스터에 기록된다.
4. 다중화기(1201)는, SyncP(1101)가 SI>MIMD 명령을 수행할 필요가 있는 경우 ROM OUT 입력을 선택한다.
멀티 레벨 처리는, 수행 코드가 또 다른 하위 레벨 프로세서에 대한 SyncP의 임무를 수행하는 동안, 3개 이상의 레벨의 하위 레벨 프로세서로 레벨의 수를 확장시킬 수 있다. 시스템의 프로세서의 수는 N×N이 될 것이고 이러한 시스템의 스케일러빌리티는 N×N이 될 것이다. 하위 레벨 프로세서의 동기화를 관리하는 상위 레벨 프로세서를 갖는 것으로 성취되는 감소된 동기화 오버헤드는 시스템의 스케일러빌리티를 N×N으로 증가시키는 것을 도울 것이다.
도 13은 3개의 레벨 처리를 도시하는 블록 다이어그램(1300)이다. 제 1 레벨 프로세서 SyncP(1301)는 이것의 데이터 메모리에 제 2 레벨 처리(1305)의 프로세서(1303, 1304 내지 1306)의 모든 명령 레지스터(1313, 1114 내지 1116) 모두를 매핑하고 먼저 기재된 바와 같이 특수 버스(1302)를 사용하여 이들을 판독 또는 이들에 기록할 수 있다.
또한, 제 2 레벨(1305)의 각각의 프로세서(1303, 1304 내지 1306)는 SyncP(1301)과 유사한 다수의 다른 하위 레벨 프로세서를 제어하지만, 이러한 제 2 레벨 프로세서(1303, 1304 내지 1306)는 또한 자신의 일반적인 처리 동작을 수행한다. 제 2 레벨 프로세서(1303, 1304 내지 1306)는, 제 2 레벨 프로세서(1393 미도시)에 의해 제 3 레벨 프로세서(1321 내지 1322)의 제 2 레벨 프로세서(1306)에 의해 제 2 레벨 프로세서(1303 및 1336 내지 1337)에 의한 명령 레지스터(1331 내지 1332)를 자신의 동기화를 관리하기 위하여 자신의 동기화 메모리에 매핑한다. 하위 레벨 프로세서(1321 내지 1327)의 관리에는, 프로세서 속도로 하위 레벨 프로세서(1321 내지 1327)를 중지하거나 승인하기 위하여 오직 하나의 사이클만이 필요하므로 최소의 지원이 요구된다.
상기 언급된 특성들 중 일부가 SIMD, SI>MIMD를 포함한 3개의 레벨의 처리으로 구현되는 것 또한 가능하다.
관여하지 않고 명령 레지스터를 판독하고 그에 기록함으로써 하위 레벨 프로세서의 수를 제어하는 상위 레벨 프로세서는 수천개의 프로세서 사이클에서 소수의 프로세서 사이클로 동기화 오버헤드를 감소시킨다. 예시 실시예는 또한 공유 변수에 액세스하는 것을 대기하는 동안 이러한 프로세서를 정지시킴으로써 전력을 줄이는 능력을 포함한 다수의 다른 중요한 장점을 가질 수 있다.
상위 레벨 프로세서는, 병렬 소프트웨어를 기록하는 것을 수월하게 하는 병렬 명령으로 단순한 순차 명령을 전환하는 것이 가능하다. 벡터 연산은 단순한 SIMD 구현을 갖는 긴 벡터에 대해 효과적으로 지원될 수 있다. 또한, 비제한적인 스케일러빌리티를 허용하는 다른 레벨에 대하여 멀티 레벨 처리를 확대하는 것이 가능하다.
도시된 실시예들은 오직 예시적인 것이며 본 발명은 첨부된 청구항에 의해서만 한정된다.

Claims (38)

  1. 데이터를 처리하는 프로세서로서,
    데이터를 처리하기 위하여 명령을 저장하는 레지스터를 갖는 복수의 하위 레벨(lower level) 프로세서; 및
    상기 제 1 레벨 프로세서에 연결된, 데이터를 처리하기 위한 메모리를 포함하는 상위 레벨(upper level) 프로세서를 포함하고, 상기 상위 레벨 프로세서는 상기 복수의 제 2 레벨 프로세서의 연산의 적어도 일부를 제어하는, 프로세서.
  2. 청구항 1에 있어서, 상기 상위 레벨 프로세서는 각각의 상기 하위 레벨 프로세서 명령의 일부를 상기 상위 레벨 프로세서 메모리에 매핑하는(map), 프로세서.
  3. 청구항 2에 있어서, 상기 상위 레벨 프로세서는 모든 상기 하위 레벨 프로세서 명령을 메모리에 매핑하는, 프로세서.
  4. 청구항 1에 있어서, 상기 상위 레벨 프로세서와 각각의 상기 하위 레벨 프로세서 간에 연결된 버스를 더 포함하는, 프로세서.
  5. 청구항 3에 있어서, 분리된 메모리 영역이 각각의 상기 하위 레벨 프로세서에 대해 할당되는, 프로세서.
  6. 청구항 1에 있어서, 상기 상위 레벨 프로세서는 상기 하위 레벨 프로세서가 실행하는 명령 및 상기 명령을 실행할 시간을 제어하도록 인에이블되는, 프로세서.
  7. 청구항 6에 있어서, 상기 상위 레벨 프로세서는, 상기 하위 레벨 프로세서가 실행하는 명령 및 상기 명령을 실행할 시간을 제어하기 위하여 상기 하위 레벨 프로세서에 명령을 입력하도록 인에이블되는, 프로세서.
  8. 청구항 7에 있어서, 상기 명령의 입력은 동기화 요건에 기초하는, 프로세서.
  9. 청구항 7에 있어서, 입력된 상기 명령은 정지 명령인, 프로세서.
  10. 청구항 1에 있어서, 상기 상위 레벨 프로세서는 각각의 상기 하위 레벨 프로세서의 클럭 속도를 제어하도록 인에이블되는, 프로세서.
  11. 청구항 1에 있어서, 상기 상위 레벨 프로세서는 다수의 하위 레벨 프로세서에 동일 변수(identical variable)를 제공하도록 인에이블되는, 프로세서.
  12. 청구항 2에 있어서, 상기 버스는, 상기 상위 레벨 프로세서가 상기 하위 레벨 프로세서의 어떤 어드레스 레지스터를 어드레스 하는지를 정의하기 위한 어드레스 버스,
    액세스된 하위 프로세서 레지스터의 콘텐츠를 포함하기 위한 데이터 버스; 및,
    상기 하위 레벨 프로세서에 대한 판독/기록을 제어하기 위한 제어 라인을 더 포함하는, 프로세서.
  13. 청구항 12에서, 상기 데이터 버스는 64비트의 폭을 가지며 상기 제어 라인은 1 비트 값을 갖는, 프로세서.
  14. 멀티 레벨 프로세서의 상이한 프로세서를 동기화하기 위한 방법으로서,
    하위 레벨 프로세서 레지스터의 명령을 상기 상위 레벨 프로세서의 메모리에 매핑하는 단계; 및
    프로세서들을 동기화하기 위해 상기 상위 레벨 프로세서로부터 하위 레벨 프로세서에 명령을 입력하는 단계를 포함하는, 방법.
  15. 청구항 14에 있어서, 상위 레벨 프로세서에 의해 각각의 하위 레벨 프로세서의 클럭 속도를 제어하는 단계를 더 포함하는, 방법.
  16. 청구항 14에 있어서, 상기 입력하는 단계는 정지 명령을 입력하는, 방법.
  17. 청구항 15에 있어서, 상기 클럭 속도는, 감속되는 것이 요구되는 상기 하위 레벨 프로세서의 클럭 사이클을 신장시킴으로써(stretch) 제어되는, 방법.
  18. 청구항 14에 있어서, 상기 방법은, 일단 임계 코드가 실행되면, 상기 하위 레벨 프로세서에 대한 정지 명령을 제거하는 단계를 더 포함하는, 방법.
  19. 청구항 14에 있어서, 일단 공유된 변수의 실행이 일어나면, 상기 하위 레벨 프로세서에 대한 상기 정지 명령을 제거하는 단계를 더 포함하는, 방법.
  20. 청구항 17에 있어서, 상기 클럭 사이클을 신장시키는 것은 플립 플롭의 사용에 의한 것인, 방법.
  21. 데이터를 처리하는 시스템으로서,
    데이터를 처리하기 위한 명령을 저장하는 레지스터를 갖는 복수의 하위 레벨 프로세서;
    상기 제 1 레벨 프로세서에 연결된 데이터를 처리하기 위한 메모리를 포함하는 상위 레벨 프로세서; 및
    데이터를 입력하기 위한 입력 및 데이터를 출력하기 위한 출력을 포함하고,
    상기 상위 레벨 프로세서는 상기 복수의 제 2 레벨 프로세서의 연산의 적어도 일부를 제어하는, 시스템.
  22. 청구항 21에 있어서, 상기 상위 레벨 프로세서는 각각의 상기 하위 레벨 프로세서 명령의 일부를 상기 상위 레벨 프로세서 메모리에 매핑하는, 시스템.
  23. 청구항 21에 있어서, 상기 상위 레벨 프로세서는 모든 상기 하위 레벨 프로세서 명령을 메모리에 매핑하는, 시스템.
  24. 청구항 21에 있어서, 상기 상위 레벨 프로세서와 각각의 상기 하위 레벨 프로세서 사이에 연결된 버스를 더 포함하는, 시스템.
  25. 청구항 23에 있어서, 분리된 메모리 영역이 각각의 상기 하위 레벨 프로세서에 대해 할당되는, 시스템.
  26. 청구항 21에 있어서, 상기 상위 레벨 프로세서는 상기 하위 레벨 프로세서가 실행하는 명령과 상기 명령을 실행할 시간을 제어하도록 인에이블된, 시스템.
  27. 청구항 26에 있어서, 상기 상위 레벨 프로세서는 상기 하위 레벨 프로세서가 실행하는 명령과 상기 명령을 실행할 시간을 제어하기 위해 상기 하위 레벨 프로세서에 명령을 입력하도록 인에이블된, 시스템.
  28. 청구항 27에 있어서, 상기 명령의 입력은 동기화 요건에 기초하는, 시스템.
  29. 청구항 27에 있어서, 입력된 상기 명령은 정지 명령인, 시스템.
  30. 청구항 21에 있어서, 상기 상위 레벨 프로세서는 각각의 상기 하위 레벨 프로세서의 클럭 속도를 제어하도록 인에이블된, 시스템.
  31. 청구항 21에 있어서, 상기 상위 레벨 프로세서는 다수의 하위 레벨 프로세서에 동일 명령을 제공하도록 인에이블된, 시스템.
  32. 청구항 21에 있어서, 상기 버스는, 상기 상위 레벨 프로세서가 상기 하위 레벨 프로세서의 어떤 어드레스 레지스터를 어드레스 하는지를 정의하기 위한 어드레스 버스; 및 액세스된 하위 프로세서 레지스터의 콘텐츠를 포함하기 위한 데이터 버스; 및 상기 하위 레벨 프로세서에 대한 판독/기록을 제어하기 위한 제어 라인을 더 포함하는, 시스템.
  33. 청구항 32에 있어서, 상기 데이터 버스는 64비트의 폭을 가지고 상기 제어 라인은 1 비트 값을 갖는, 시스템.
  34. 프로세서로서, 명령을 처리하기 위한 실행 유닛; 및 상기 실행 유닛에 연결되어 상기 명령의 처리의 타이밍을 조정하기 위한 클럭을 포함하고, 상기 프로세서는 감소된 전력 소비를 가능하게 하기 위하여 클럭 사이클을 신장시킬 능력을 갖는, 프로세서.
  35. 청구항 34에 있어서, 클럭 주파수를 이분함으로써 상기 클럭 주파수를 신장시키는 회로를 더 포함하는, 프로세서.
  36. 청구항 34에 있어서, 상기 회로는 플립 플롭을 포함하는, 프로세서.
  37. 청구항 34에 있어서, 상기 클럭 사이클은 정지 명령의 수신시에 신장되는, 프로세서.
  38. 프로세서로서, ROM을 갖는 상위 레벨 프로세서; 및 각각 자신의 ROM을 갖는 복수의 하위 레벨 프로세서를 포함하고, 상기 상위 레벨 프로세서의 ROM의 단일 명령은, 보다 상위인 레벨 프로세서에 의해 발행된 하나의 명령으로부터 다수의 그리고 상이한 독립된 병렬 명령을 생성하기 위해 상기 하위 레벨 프로세서내의 인덱스 멀티플(index multiple) ROM으로 나뉘는, 프로세서.

KR1020137012293A 2010-10-15 2011-09-28 멀티 레벨 처리용 방법, 시스템 및 장치 KR20140032943A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US39353110P 2010-10-15 2010-10-15
US61/393,531 2010-10-15
US13/239,977 2011-09-22
US13/239,977 US20120096292A1 (en) 2010-10-15 2011-09-22 Method, system and apparatus for multi-level processing
PCT/CA2011/001087 WO2012048402A1 (en) 2010-10-15 2011-09-28 Method, system and apparatus for multi-level processing

Publications (1)

Publication Number Publication Date
KR20140032943A true KR20140032943A (ko) 2014-03-17

Family

ID=45935155

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137012293A KR20140032943A (ko) 2010-10-15 2011-09-28 멀티 레벨 처리용 방법, 시스템 및 장치

Country Status (6)

Country Link
US (1) US20120096292A1 (ko)
EP (1) EP2628078A1 (ko)
JP (1) JP2013541101A (ko)
KR (1) KR20140032943A (ko)
CN (1) CN103154892A (ko)
WO (1) WO2012048402A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9916189B2 (en) * 2014-09-06 2018-03-13 Advanced Micro Devices, Inc. Concurrently executing critical sections in program code in a processor
US10928882B2 (en) * 2014-10-16 2021-02-23 Futurewei Technologies, Inc. Low cost, low power high performance SMP/ASMP multiple-processor system
US9690360B2 (en) * 2015-08-13 2017-06-27 Intel Corporation Technologies for discontinuous execution by energy harvesting devices
CN106020893B (zh) * 2016-05-26 2019-03-15 北京小米移动软件有限公司 应用安装的方法及装置
CN106200868B (zh) * 2016-06-29 2020-07-24 联想(北京)有限公司 多核处理器中共享变量获取方法、装置及多核处理器
FR3091363B1 (fr) * 2018-12-27 2021-08-06 Kalray Système de synchronisation inter-processeurs configurable
KR20210003370A (ko) 2019-07-02 2021-01-12 삼성전자주식회사 하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치
WO2021126216A1 (en) * 2019-12-19 2021-06-24 Google Llc Resource management unit for capturing operating system configuration states and offloading tasks
WO2021126217A1 (en) 2019-12-19 2021-06-24 Google Llc Resource management unit for capturing operating system configuration states and memory management

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619760B2 (ja) * 1986-04-23 1994-03-16 日本電気株式会社 情報処理装置
US5742842A (en) * 1992-01-28 1998-04-21 Fujitsu Limited Data processing apparatus for executing a vector operation under control of a master processor
IT1260848B (it) * 1993-06-11 1996-04-23 Finmeccanica Spa Sistema a multiprocessore
CA2137488C (en) * 1994-02-18 1998-09-29 Richard I. Baum Coexecuting method and means for performing parallel processing in conventional types of data processing systems
JPH10105524A (ja) * 1996-09-26 1998-04-24 Sharp Corp マルチプロセッサシステム
US6058414A (en) * 1998-01-07 2000-05-02 International Business Machines Corporation System and method for dynamic resource access in an asymmetric resource multiple processor computer system
JP2003296123A (ja) * 2002-01-30 2003-10-17 Matsushita Electric Ind Co Ltd 電力制御情報を付与する命令変換装置及び命令変換方法、命令変換を実現するプログラム及び回路、変換された命令を実行するマイクロプロセッサ
US7076774B2 (en) * 2002-09-10 2006-07-11 Microsoft Corporation Infrastructure for generating a downloadable, secure runtime binary image for a secondary processor
US7865485B2 (en) * 2003-09-23 2011-01-04 Emc Corporation Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server
US7321979B2 (en) * 2004-01-22 2008-01-22 International Business Machines Corporation Method and apparatus to change the operating frequency of system core logic to maximize system memory bandwidth
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
US8321849B2 (en) * 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
US8122230B2 (en) * 2007-12-28 2012-02-21 Intel Corporation Using a processor identification instruction to provide multi-level processor topology information
WO2010020828A1 (en) * 2008-08-18 2010-02-25 Telefonaktiebolaget L M Ericsson (Publ) Data sharing in chip multi-processor systems

Also Published As

Publication number Publication date
WO2012048402A1 (en) 2012-04-19
JP2013541101A (ja) 2013-11-07
US20120096292A1 (en) 2012-04-19
CN103154892A (zh) 2013-06-12
EP2628078A1 (en) 2013-08-21

Similar Documents

Publication Publication Date Title
KR20140032943A (ko) 멀티 레벨 처리용 방법, 시스템 및 장치
US11868628B2 (en) On-chip atomic transaction engine
US20190197015A1 (en) Parallel memory systems
CN102375800B (zh) 用于机器视觉算法的多处理器片上系统
US7143401B2 (en) Single-chip multiprocessor with cycle-precise program scheduling of parallel execution
Schuiki et al. Stream semantic registers: A lightweight risc-v isa extension achieving full compute utilization in single-issue cores
US20060155964A1 (en) Method and apparatus for enable/disable control of SIMD processor slices
US20210286755A1 (en) High performance processor
Hussain et al. PPMC: a programmable pattern based memory controller
CN103744644A (zh) 采用四核结构搭建的四核处理器系统及数据交换方法
Jamshidi et al. D2MA: Accelerating coarse-grained data transfer for GPUs
Riedel et al. MemPool: A scalable manycore architecture with a low-latency shared L1 memory
US20060206731A1 (en) Methods and apparatus for improving processing performance by controlling latch points
Jantsch et al. Memory architecture and management in an NoC platform
Cieslewicz et al. Parallel buffers for chip multiprocessors
Ma et al. Coordinated DMA: improving the DRAM access efficiency for matrix multiplication
Pitter et al. Performance evaluation of a Java chip-multiprocessor
Ham et al. Near-data processing in memory expander for DNN acceleration on GPUs
Pan et al. An algorithm and architecture co-design for accelerating smart contracts in blockchain
Lee et al. Excavating the hidden parallelism inside DRAM architectures with buffered compares
Hussain Memory resources aware run-time automated scheduling policy for multi-core systems
US20030097541A1 (en) Latency tolerant processing equipment
Li et al. Lightweight chip multi-threading (LCMT): Maximizing fine-grained parallelism on-chip
Krikellas et al. Modeling multithreaded query execution on chip multiprocessors
JPH04127351A (ja) データ処理装置及びデータ処理方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid