KR20040086462A - 컴퓨터 명령들의 멀티프로세싱 실행을 위한 방법들 및 장치 - Google Patents

컴퓨터 명령들의 멀티프로세싱 실행을 위한 방법들 및 장치 Download PDF

Info

Publication number
KR20040086462A
KR20040086462A KR10-2004-7013450A KR20047013450A KR20040086462A KR 20040086462 A KR20040086462 A KR 20040086462A KR 20047013450 A KR20047013450 A KR 20047013450A KR 20040086462 A KR20040086462 A KR 20040086462A
Authority
KR
South Korea
Prior art keywords
sub
main processor
instruction
subprocessors
loop
Prior art date
Application number
KR10-2004-7013450A
Other languages
English (en)
Other versions
KR100667509B1 (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 KR20040086462A publication Critical patent/KR20040086462A/ko
Application granted granted Critical
Publication of KR100667509B1 publication Critical patent/KR100667509B1/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
    • 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
    • G06F15/8053Vector processors
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/20Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform
    • A63F2300/203Image generating hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

멀티프로세싱 컴퓨터 아키텍처(100)와 그를 작동하는 방법이 제공된다. 멀티프로세싱 아키텍처(100)는 메인 프로세서(102)와 루프 작업들을 효율적으로 실행하도록 캐스케이드된 다중 서브 프로세서들(104, 106, 108, 110)을 제공한다. 메인 프로세서(102)는 루프 외부의 작업들을 실행하고 루프를 제어한다. 다중 서브 프로세서들(104, 106, 108, 110)은 작동될 수 있게 연결되고, 메인 프로세서(102)에 의해 주어진 루프 반복으로 할당된다. 각각의 서브 프로세서(104, 106, 108, 110)는 하나 이상의 서브 명령들을 순차적으로 수신하고, 각각의 서브 명령에 대해 작동하고 그리고 서브 명령을 순차적 서브 프로세서(106, 108, 110)로 보내도록 작동될 수 있다.

Description

컴퓨터 명령들의 멀티프로세싱 실행을 위한 방법들 및 장치{Methods and apparatus for multi-processing execution of computer instructions}
컴퓨터 시스템들은 광범위하게 적용되면서 다양한 태스크(task)들을 수행하는 데에 이용된다. 흔히, 마이크로프로세서(microprocessor)는 컴퓨터 시스템의 작업을 제어한다. 마이크로프로세서는 특정 방법으로 구체적인 작업들을 처리하기 위해 프로그램될 수 있다. 전형적으로, 마이크로프로세서는 명령을 불러오거나 수신한다. 명령은 마이크로프로세서가 데이터를 추가하는 것, 프로그램의 다른 부분으로 점핑(jumping)하는 것, 또는 로직(logic) 작업을 수행하는 것과 같은 작업을 수행하도록 명령한다. 이와 같은 작업을 수행하는 것은 명령을 디코딩(decoding)하는 단계, 메모리의 어드레스(address)를 계산하는 단계, 데이터를 메모리로부터 액세스(access)/판독하는 단계, 데이터를 이용하여 명령을 실행하는 단계 및 결과를 메모리에 기록하는 단계를 포함할 수 있다.
컴퓨터 그래픽과 같은 특정 업무들은 계산을 많이 요구하며, 디스플레이 장치에 이미지를 효과적으로 표현하고 표시하기 위해 많은 명령들을 수행하는 것을 필요로 할 수 있다. 계산을 많이 요구하는 컴퓨터 그래픽 업무 중 하나가 폴리건/픽셀 셰이딩(polygon/pixel shading) (즉, 그래픽 셰이딩; graphics shading)을 위한 3차원 그래픽 프로세싱이다. 예를 들면, 비디오 게임 디스플레이가 한 플레이어로부터 또 다른 플레이어로 던져진 볼(ball)을 보여줄 수 있다. 디스플레이 상의 볼 및 다른 객체들은 일련의 폴리건들로서 표현될 수 있다. 볼이 디스플레이를 지나 이동함에 따라, 셰도우(shadow)에 의해 덮여진 볼 및 객체들의 셰이딩은 변경될 수 있다. 마이크로프로세서는 볼과 셰도우가 교차하는 각각의 폴리건의 각각의 픽쳐 엘리먼트(picture element; PEL)에 대한 셰이딩을 계산하거나 재계산할 수 있다. 그러한 계산들은 다중의 반복들 (즉, 루프들)과 수많은 계산들을 포함한다.
이상의 그래픽 셰이딩과 같은 특정 작업들에 대한 명령들 및 계산들 모두를 처리하는 단일 마이크로프로세서에 대한 결점은 시간이다. 전형적으로, 명령들이 더 많이 수행되면 전체 계산이 더 오래 걸린다. 이와 같은 계산을 많이 하는 업무들을 처리하는 방법 중 하나는 마이크로프로세서가 태스크를 쪼개어 태스크의 부분들을 하나 이상의 서브 프로세서들에 분배하는 것이다. 태스크는 하나 이상의 명령들일 수 있고, 또는 단일 명령의 하나 이상의 조각들일 수 있다. 서브 프로세서들 사이에 태스크를 분배하는 것은 태스크를 완성시키는 시간을 감소시킨다. 다른 장점들로 더 많은 데이터 처리량과 향상된 시스템 신뢰성이 있다. 또한, 서브 프로세서들이 반복적으로 동일하거나 유사한 작업들을 수행하기 때문에, 서브 프로세서들은 이와 같은 작업들을 효율적으로 수행하도록 (즉, 명령들의 서브세트를 수행하도록) 맞추어질 수 있다.
태스크들을 분배하는 한 방법에서, 메인 프로세서(main processor)는 병렬로 한 그룹의 서브 프로세서들로 명령을 보낸다. 서브 프로세서들 사이에 태스크들을 분배하는 또 다른 방법에서, 메인 프로세서는 명령들을 일련의 서브 프로세서들로 순차적으로 보낸다. 불행하게도, 이 방법들은 그것들과 관련된 결점들이 있다.
서브 프로세서들 사이에서 태스크의 부분들을 분배하는 것에 대한 한 문제점이 시퀀싱 에러(sequencing error)의 가능성인데, 태스크의 몇몇 부분들이 순서에 벗어나게 처리되어 부정확한 데이터를 생성한다. 병렬 서브 프로세싱은 특히 시퀀싱 에러들에 민감하다. 또 다른 문제점은 마이크로프로세서 또는 메인 프로세서가 서브 프로세서들의 작업과 공유된 리소스(resource) (즉, 데이터/어드레스 버스)들의 정보를 계속 얻어내고 제어할 필요가 있다. 또 다른 문제점이 스칼라빌리티(scalability)이다. 특정 컴퓨터 아키텍처들은 단지 몇몇 서브 프로세서들을 이용할 수 있는 반면에 다른 아키텍처들은 임의의 개수의 서브 프로세서들을 처리할 수 있다. 게다가, 순차적인 서브 프로세서들이 태스크들을 한 번에 하나씩 수신하기 때문에 순차적 서브 프로세싱은 병렬 서브 프로세싱보다 더 많은 시간이 걸린다.
다양한 기술들이 그러한 문제점들을 경감시키기 위해 개발되고 이용되어 왔다. 예를 들면, 하나의 컴퓨터 아키텍처는 요망된 구성에서 하드와이어(hard-wire)된 메인 프로세서와 다중 데디케이티드 서브 프로세서(multiple dedicated sub-processor)들을 포함한다. 그러한 컴퓨터 아키텍처가 계산 시간을 감소시킬 수 있는 반면에, 하드와이어된 구성은 변경할 수 없고 계산 리소스들을 불충분하게 이용할 수 있다. 구체적으로, 하드와이어된 서브 프로세서들은 온/오프 스위칭 기능들과 프로그램할 수 있는 파라미터들을 가진 고정된 데이터 흐름을 포함할 수 있다. 그러나, 그러한 기능성은 이상에서 기술된 그래픽 셰이딩과 같은 계산이 많은 업무를 수행하기 위한 적당한 유연성을 제공하지 않는다. 그러므로, 상술된 아키텍처들은 상술된 문제점들을 가진다.
본 발명은 컴퓨터 명령들의 실행에 관한 것이고, 보다 구체적으로, 본 발명은 다중 서브 프로세서(sub-processor)들을 이용한 효율적인 루프(loop) 작업들의 실행에 관한 것이다.
도 1은 본 발명의 하나 이상의 실시형태들을 이용하여 명령 프로세싱을 위한 컴퓨터 시스템 아키텍처의 하이 레벨 다이어그램이다.
도 2는 본 발명의 하나 이상의 실시형태들에 따른 명령 프로세싱의 더욱 상세한 아키텍처 다이어그램이다.
도 3a는 본 발명의 하나 이상의 실시형태들에 따른 메인 프로세서에 의해 명령 프로세싱을 도시하는 순서도이다.
도 3b는 본 발명의 하나 이상의 실시형태들에 따른 서브 프로세서에 의한 명령 프로세싱을 도시하는 순서도이다.
도 4는 본 발명의 하나 이상의 또 다른 실시형태들을 이용하여 캐스케이딩하는 장치를 위한 컴퓨터 시스템 아키텍처의 하이 레벨 다이어그램이다.
본 발명의 하나 이상의 실시형태들에 따르면, 멀티프로세싱 컴퓨터 시스템은 메인 프로세서와 복수의 서브 프로세서들을 포함한다. 메인 프로세서는 프로그램의 명령 루프들의 프로세싱(processing)을 처리하도록 작동될 수 있다. 각각의 명령 루프는 하나 이상의 서브 명령들을 포함한다. 복수의 서브 프로세서들은 복수의 순차적 스테이지들에서 각각의 서브 명령을 처리하도록 작동될 수 있다. 서브 프로세서들 중 적어도 제 1 서브 프로세서는 하나 이상의 서브 명령들을 메인 프로세서로부터 순차적으로 수신하고 서브 명령을 서브 프로세서들 중 나중의 서브 프로세서로 보내도록 작동될 수 있다. 서브 프로세서들 중 적어도 제 2 서브 프로세서는 하나 이상의 서브 명령들을 제 1 서브 프로세서로부터 순차적으로 수신하도록 작동될 수 있다.
바람직하게는, 메인 프로세서는 수행되어야 할 루프 세트들의 개수와 잔여 루프들의 개수를 식별한다. 루프 세트들의 상기 개수가 0 보다 크다면, 메인 프로세서는 루프 카운터를 이용할 수 있는 복수의 서브 프로세서들과 같도록 설정한다. 하나 이상의 서브 명령들은 루프 카운터를 따라 서브 프로세서들 중 제 1 서브 프로세서로 순차적으로 보내진다. 주어진 루프의 모든 서브 명령들이 서브 프로세서들 중 제 1 서브 프로세서로 보내진 이후에 루프 세트들의 개수가 감소된다. 루프 세트들의 개수가 0과 같다면, 메인 프로세서는 루프 카운터를 잔여 루프들의 개수와 같도록 설정하고 하나 이상의 서브 명령들을 루프 카운터에 따라 서브 프로세서들 중 제 1 서브 프로세서로 순차적으로 보낸다.
본 발명의 하나 이상의 실시형태들에 따르면, 멀티프로세싱 컴퓨터 시스템은 메인 프로세서, 복수의 서브 프로세서들 및 캐스케이딩 버스를 포함한다. 메인 프로세서는 프로그램의 명령 루프들의 프로세싱을 처리하도록 작동될 수 있다. 각각의 명령 루프는 하나 이상의 서브 명령들을 포함한다. 복수의 서브 프로세서들은 복수의 순차적 스테이지들에서 각각의 서브 명령들을 처리하도록 작동될 수 있다. 서브 프로세서들 중 적어도 제 1 서브 프로세서는 하나 이상의 서브 명령들을 메인 프로세서로부터 순차적으로 수신하고 서브 명령을 서브 프로세서들 중 나중의 서브 프로세서로 보내도록 작동될 수 있다. 서브 프로세서들 중 적어도 제 2 서브 프로세서는 제 1 서브 프로세서로부터 하나 이상의 서브 명령들을 순차적으로 수신하도록 작동될 수 있다. 캐스케이딩 버스는 하나 이상의 서브 명령들을 메인 프로세서로부터 서브 프로세서들 중 제 1 서브 프로세서로 제공하도록 작동될 수 있다.
본 발명의 하나 이상의 또 다른 실시형태들에 따르면, 멀티프로세싱 방법은 각각의 명령 루프가 하나 이상의 서브 명령들을 포함하고, 메인 프로세서를 이용하여 프로그램의 명령 루프들의 프로세싱을 처리하는 단계; 제 1 서브 프로세서가 복수의 서브 프로세서들 중 하나이고, 제 1 서브 프로세서에서 메인 프로세서로부터하나 이상의 서브 명령들을 순차적으로 수신하는 단계; 복수의 순차적 스테이지들에서 각각의 서브 명령을 프로세싱하는 단계; 명령 루프들 전부 보다 적은 개수의 명령 루프들이 완성되어 있다면 하나 이상의 서브 명령들을 서브 프로세서들 중 나중의 서브 프로세서로 보내는 단계; 및 하나 이상의 서브 명령들을 서브 프로세서들 중 제 2 서브 프로세서에서 순차적으로 수신하는 단계를 포함한다.
바람직하게는, 본 방법은 이용 가능한 서브 프로세서들의 개수를 결정하는 단계, 수행되어야 할 루프 세트들의 개수를 식별하는 단계, 및 수행되어야 할 잔여 루프들의 개수를 식별하는 단계를 포함한다. 루프 세트들의 상기 개수가 0보다 크다면, 본 방법은 루프 카운터가 이용 가능한 복수의 서브 프로세서들과 같도록 설정하는 단계, 하나 이상의 서브 명령들을 루프 카운터에 따라 서브 프로세서들 중 나중의 서브 프로세서에 보내고 그리고 주어진 명령 루프에서의 서브 명령들 모두가 제 1 서브 프로세서로 보내진 이후에 루프 세트들의 개수를 감소시키는 단계를 포함한다. 루프 세트들의 개수가 0과 같고 잔여 루프들의 개수가 0보다 크다면, 본 방법은 바람직하게는 루프 카운터를 잔여 루프들의 개수와 같도록 설정하는 단계 및 하나 이상의 서브 명령들을 루프 카운터에 따라 서브 프로세서들 중 나중의 서브 프로세서로 보내는 단계를 포함한다.
본 발명의 하나 이상의 또 다른 실시형태들에 따르면, 멀티프로세싱 방법은 제 1 메인 프로세서는 제 1 장치에 위치되어 있고 제 2 메인 프로세서는 제 2 장치에 위치되어 있고, 제 1 메인 프로세서 및 상기 제 2 메인 프로세서로부터 액티브(active) 메인 프로세서를 선택하는 단계, 각각의 명령 루프가 하나 이상의 서브명령들을 포함하고, 액티브 메인 프로세서를 이용하여 프로그램의 명령 루프들의 프로세싱을 처리하는 단계, 제 1 서브 프로세서는 복수의 서브 프로세서들 중 하나이고 하나 이상의 서브 명령들을 제 1 서브 프로세서에서 액티브 메인 프로세서로부터 순차적으로 수신하는 단계, 복수의 순차적 스테이지들에서 각각의 서브 명령을 프로세싱하는 단계, 루프 카운터가 0보다 크다면 하나 이상의 서브 명령들을 서브 프로세서들 중 나중의 서브 프로세서에 보내는 단계; 및 서브 프로세서들 중 제 2 서브 프로세서에서 하나 이상의 서브 명령들을 순차적으로 수신하는 단계를 포함한다.
도면들을 참조하면, 같은 도면 부호들은 같은 구성요소들을 가리키고, 본 발명의 하나 이상의 실시형태들을 이용하여 멀티프로세싱 시스템 아키텍처(100)가 도 1에서 도시된다. 멀티프로세싱 시스템 아키텍처(100)는 메인 프로세서(102) 및 다중 서브 프로세서들(104, 106, 108 및 110)을 포함한다. 도 1에는 4개의 서브 프로세서들이 도시되었지만, 멀티프로세싱 시스템 아키텍처(100)는 임의의 개수의 서브 프로세서들을 이용할 수 있다. 바람직하게는, 적어도 2개의 서브 프로세서들이 이용된다. 이용될 수 있는 서브 프로세서들의 개수에는 이론적인 제한이 없다.
메인 프로세서(102)는 바람직하게는 일반적인 컴퓨터 명령들을 실행할 수 있는 범용 마이크로프로세서(general-purpose microprocessor)이다. 메인 프로세서(102)는 바람직하게는 특정 작업의 실행을 정지 또는 중단시키기 위해 인터럽트를 받아들인다. 하나의 바람직한 실시형태에서, 메인 프로세서(102)는 수퍼스칼라(super-scalar) 아키텍처를 가진다. 또 다른 바람직한 실시형태에서, 메인 프로세서(102)는 VLIW(very long instruction word) 아키텍처를 가진다. 수퍼스칼라 및 VLIW 아키텍처들은 단지 대표적인 것이고, 그리고 본 발명의 범위 이내에 있는 메인 프로세서(102)의 아키텍처들에 제한되지 않아야 한다. 바람직하게는, ALU(Arithmetic and Logic Unit)와 메인 프로세서(102)의 레지스터 파일이 그래픽 프로세싱에서 이용된 벡터 데이터에 대해 종래 기술에서 알려진 대로 작동된다. ALU는 계산 또는 논리 작업들(즉, "AND", "OR", "NOT" 등)과 같은 기본 데이터 변환들을 수행한다. 레지스터 파일은 명령들을 수행할 때 임시 기억 장치를 제공한다.
한 실시예로서, 메인 프로세서(102)는 데이터를 로딩하거나 저장하는 것, 논리 및 계산 작업들, 및 점프, 쉬프트(shift) 및 분기 명령들을 포함하는 컴퓨터 명령들을 수행한다. 바람직하게는, 메인 프로세서(102)는 명령 추출(I), 명령 디코드(D), 어드레스 계산(A), 명령 실행(E), 및 라이트 백 오퍼레이션(write back operation; W)을 선택적으로 수행하도록 작동될 수 있다. 명령 추출(I) 동안, 명령은 실행을 위해 메모리로부터 검색된다. 명령 추출 메커니즘(즉, 메인 프로세서(102)의 제어 유닛)은 바람직하게는 명령 추출(I)을 수행한다. 명령 추출 메커니즘은 바람직하게는 명령 캐시 메모리를 포함한다. 명령 디코드(D) 동안, 어느 명령이 추출되었는 지 결정된다. 명령 디코드(D)는 예를 들면, 명령 룩업(look-up) 테이블을 이용한다. 예를 들어, 각각의 명령이 코드에 의해 표현될 수 있다. 명령 디코드(D) 동안, 명령 룩업 테이블이 코드에 대응하는 명령을 식별하기 위해 이용될 수 있다. 어드레스 계산(A) 동안, 메모리의 어드레스가 식별된다. 메모리의 어드레스는 명령 실행(E)에서의 사용을 위한 데이터를 포함할 수 있다. 메모리는 메인 프로세서(102)로부터 멀리 떨어진 장치(오프 칩; off-chip) 내에 위치될 수 있거나 메인 프로세서(102)와 같은 장치(온 칩; on-chip) 상에 위치될 수 있다. 메모리는 지역 메모리 캐시일 수 있다. 명령 실행(E) 동안, ALU는 명령(즉, "AND", "OR", "LOOP", "JUMP")을 수행한다. 라이트 백 오퍼레이션(W)은 결과가, 데이터가 저장된 곳과 같거나 다른 지역에 있는 메모리에 기록되거나, 결과를 반환한다.
멀티프로세싱 시스템 아키텍처(100)는 루프 작업을 효율적으로 실행하도록 고안되어, 많은 계산들을 수행한다. 예를 들면, 대표적인 프로그램 명령 루프들은다음 과정을 포함한다:
for(j=0; j<Num; j++)
{
Operation(j)
}
메인 프로세서(102)는 명령 루프들의 프로세싱을 처리한다. 메인 프로세서(102)는 바람직하게는 루프들로부터 벗어난 작업들을 수행하고 (즉, 카운터가 j=0으로부터 j<Num 까지 증가하도록 처리한다) 그리고 정보를 서브 프로세서들(104, 106, 108 및 110)로 보내어 루프들을 제어한다. 루프들은 바람직하게는 수행되어야 할 서브 프로세서들(104, 106, 108 및 110)의 개수와 루프들의 개수에 따라 제어된다. 서브 프로세서들(104, 106, 108 및 110)은 각각의 루프 이내에서 작업(Operation(j))을 수행한다. 작업은 하나 이상의 서브 작업들을 포함한다.
화살표들(120, 122, 124 및 126)에 의해 도시된 것처럼, 메인 프로세서(102) 및 서브 프로세서들(104, 106, 108 및 110)이 캐스케이드(cascade)된다. 화살표들(120, 122, 124 및 126)에 의해 도시된 정보 흐름은 바람직하게는 캐스케이딩 버스를 이용하여 처리된다. 캐스케이딩 버스는 바람직하게는 메인 프로세서(102) 및 서브 프로세서들(104, 106, 108 및 110) 사이에 명령들 및 다른 정보를 보내는 명령 코드 버스를 포함한다. 더욱 구체적으로, 캐스케이딩 버스는 양방향이다. 메인 프로세서(102)로부터 서브 프로세서(104; 즉, 제 1 서브 프로세서)로의 정보 흐름은 루프 카운터뿐만 아니라 하나 이상의 명령 코드, 디코딩된 정보, 데이터, 파라미터들 등을 포함하고, 도 3a-b를 참조하여 설명될 것이다. 서브 프로세서(104)는 그 다음에 이 정보의 일부 또는 모두를 서브 프로세서(106)로 보낸다.
각각의 서브 프로세서(104, 106, 108 및 110)는 예정된 세트의 명령들(즉, 서브 명령들)을 수행하도록 작동될 수 있다. 이 명령 세트는 바람직하게는 모든 서브 프로세서들(104, 106, 108 및 110)에 흔하다. 바람직한 실시형태에서, 서브 명령들은 "분기" 및 "점프"와 같은 프로그램 카운터와 관련된 명령들을 제외한 메인 프로세서(102)에 의해 이용된 모든 명령들을 포함한다. 서브 프로세서들(104, 106, 108 및 110)은 바람직하게는 인터럽트들을 받지 않는다. 그러한 한 세트의 서브 명령들은 바람직하게는 루프를 위한 작업들을 수행하는 데에 이용된다. 서브 프로세서들(104, 106, 108 및 110)은 명령 디코드(d), 어드레스 계산(a), 명령 실행(e) 및 라이트 백 오퍼레이션(w)을 포함하여 각각의 서브 명령에 대해 하나 이상의 작업들을 수행한다. 작업들(d, a, e 및 w)은 메인 프로세서(102)를 참조하여 이상에서 기술된 작업들(D, A, E 및 W)과 많은 면에서 균등하다. 바람직하게는, 라이트 백 오퍼레이션(w)은 서브 프로세서(104, 106, 108 또는 110)로부터 메인 프로세서(102)로의 전송 상태 정보, 결과 등을 포함한다.
메인 프로세서(102)는 바람직하게는 작업들(I, D, A, E, W)을 수행하고 서브 프로세서들(104, 106, 108, 110)이 바람직하게는 각각의 명령 프로세싱 파이프라인에서 작업들(d, a, e 및 w)을 수행한다. 각각의 서브 프로세서(104, 106, 108 및 110) 및 메인 프로세서(102)를 위한 명령 프로세싱 파이프라인들은 순차적으로 작동하고, 도 2를 참조하여 설명될 것이다.
도 2는 도 1의 멀티프로세싱 시스템 아키텍처(100)를 상세하게 도시한다. 다중 루프들이 이 아키텍처에서 병렬로 수행되어 루프 태스크들이 순차적인 작업을 유지하면서 다중 서브 프로세서들(204, 206, 208) 사이에 퍼진다. 더욱 구체적으로, 도 2는 일련의 대표적인 명령 루프들의 특정 순간(즉, 사이클)에서의 스냅샷(snapshot)(200)을 도시한다. 메인 프로세서(202)는 메인 프로세서 명령들(mi) 및 서브 명령들(si-1, si-2, ... si-8)을 포함하는 일련의 명령들을 (바람직하게는 순차적으로) 추출하거나 수신한다. 스냅샷(200)을 위한 작업의 현재 사이클(current cycle)에서, 메인 프로세서(202)는 서브 명령(si-8)을 위한 명령 추출(I), 서브 명령(si-7)을 위한 명령 디코드(D), 서브 명령(si-6)을 위한 어드레스 계산(A), 서브 명령(si-5)을 위한 명령 실행(E) 및 서브 명령(si-4)을 위한 라이트 백(W)을 수행한다. 메인 프로세서(202)는 주변에 점선으로 표시된 서브 명령들(si-3, si-2 및 si-1)과, 3개의 메인 프로세서 명령들(mi)을 이미 프로세싱하였다.
스냅샷(200)을 위한 작업의 현재 사이클에서, 서브 프로세서(204)는 명령 디코드(d)를 서브 명령(si-3) 상에서, 어드레스 계산(a)을 서브 명령(si-2) 상에서, 명령 실행(e)을 서브 명령(si-1) 상에서 실행하고 그리고 라이트 백 오퍼레이션(w)는 어떤 작업도 수행하지 않는다(nop). 서브 프로세서(206)는 명령 디코드(d)를 서브 명령(si-2) 상에서, 어드레스 계산(a)을 서브 명령(si-1) 상에서 수행하고, 어떤 작업도 명령 실행(e)에 대해 수행되지 않고(nop) 그리고 어떤 작업도 라이트 백 오퍼레이션(w)에 대해 수행되지 않는다(nop). 서브 프로세서(208)는 명령 디코드(d)를 서브 명령(si-1) 상에서 수행하고, 어떤 작업도 어드레스 계산(a)에 대해 수행되지 않고(nop), 어떤 작업도 명령 실행(e)에 대해 수행되지 않고(nop) 그리고 어떤 작업도 라이트 백 오퍼레이션(w)에 대해 수행되지 않는다.
각각의 서브 프로세서(204, 206 및 208)는 서브 프로세서(204, 206 및 208)로 보내진 각각의 서브 명령에 대해 단일 스테이지의 루프를 위한 명령 프로세싱을 수행한다. 구체적으로, 서브 프로세서(204)는 서브 명령(si-1)을 위한 루프의 제 1 반복에 대해 (필요하다면) d, a, e 및 w를 수행하고(즉, j=1), 서브 프로세서(206)는 서브 명령(si-1)을 위한 루프의 제 2 반복에 대해 (필요하다면) d, a, e 및 w를 수행하고(즉, j=2), 그리고 서브 프로세서(208)는 루프의 제 3 반복에 대해 (필요하다면) 서브 명령(si-1)을 위한 d, a, e 및 w를 수행한다(즉, j=3).
메인 프로세서(202)가 서브 프로세서들(204, 206 및 208)을 위한 서브 명령을 검출할 때, 메인 프로세서(202)는 서브 명령을 서브 프로세서(204)로 출력한다. 메인 프로세서(202)에 대한 명령들은 바람직하게는 서브 프로세서들(204, 206 및 208)에 대한 서브 명령들과 구별될 수 있다. 메인 프로세서(202)의 명령들을 서브 프로세서들(204, 206 및 208)의 서브 명령들과 구별하는 한 방법은 서브 명령들을 위한 시점 및 종점을 보여주는 식별 명령들을 정의한다. 또 다른 방법은 메인 프로세서(202)와 서브 프로세서들(204, 206 및 208)에 대한 유일한 명령 세트를 정의하는 것이다. 명령 세트 내의 명령들은 바람직하게는 명령 작업 코드(operation code; op-code)들에 의해 구별된다. 명령의 제 1 워드는 전형적으로 그 명령을 위한 작업 코드이다. 바람직하게는, 메인 프로세서(202)는 한 세트의 작업 코드들에 할당되고 그리고 서브 프로세서들(204, 206 및 208)은 또 다른 세트의 작업 코드들에 할당된다. 선택적으로, 명령 코드 비트 필드 내의 하나 이상의 비트들이 바람직하게는 메인 프로세서 명령들을 서브 프로세서 명령들과 구별시키는 데에 이용된다. 그러나, 또 다른 방법은 서브 명령들에 대한 마크로 명령들을 메인 프로세서(202)에 대한 명령 흐름의 일부분으로서 정의한다. 서브 명령들은 마크로 명령이 실행될 때 호출된다. 이 방법들은 단지 대표적이고; 식별이 다른 면들에서 수행될 수 있다.
얼마나 많은 루프들이 수행될 지에 따라서, 서브 프로세서들(204, 206 및 208)이 서브 명령(들)을 나중의 서브 프로세서(206, 208)로 보내거나 캐스케이드한다. 예를 들면, 스냅샷(200)에서, 메인 프로세서(202)는 라이트 백 오퍼레이션(W)을 서브 명령(si-4) 상에서 수행하고 서브 명령(si-3)을 서브 프로세서(204)로 보낸다. 서브 프로세서(204)는 명령 디코드(d)를 서브 명령(si-3) 상에서, 어드레스 계산(a)을 서브 명령(si-2) 상에서 그리고 명령 실행(e)을 서브 명령(si-1) 상에서 수행하고 그리고 서브 명령(si-2)을 서브 프로세서(206)로 보낸다. 서브 프로세서(206)는 명령 디코드(d)를 서브 명령(si-2) 상에서, 어드레스 계산(a)을 서브 명령(si-1) 상에서 수행하고 그리고 서브 명령(si-1)을 서브 프로세서(208)로 보내고, 명령 디코드(d)를 수행시킨다. 주어진 서브 명령은 N 사이클들 이후에 N번째 서브 프로세서로 보내질 것이다.
도 3a를 참조하여, 메인 프로세서(202)에 의한 명령 프로세싱(300)에 관한 본 발명의 특정 실시형태들을 설명한다. 액션(302)에서, 메인 프로세서(202)는 명령을 추출하거나 얻는다. 액션(304)에서, 명령이 메인 프로세서(202)에 대한 명령인 지 또는 서브 프로세서들(204, 206 및 208)에 대한 서브 명령인 지 여부에 관하여 조사가 행해진다. 명령이 메인 프로세서(202)에 대한 것으로 결정된다면, 프로세스는 바람직하게는 액션(306)으로 분기하고 메인 프로세서(202)는 명령을 프로세싱할 수 있다. 반면에, 명령이 서브 명령이라는 것이 결정된다면, 프로세스는 바람직하게는 액션(308)으로 분기한다. 액션(308)에서 이용 가능한 서브 프로세서들(204, 206 및 208)의 개수가 결정된다. 바람직하게는, 이용 가능한 서브 프로세서들(204, 206 및 208)의 개수가 전체 세트의 루프들에 대해 일정하게 남는다.
액션(310)에서, 루프 세트들의 개수와 잔여 루프들의 개수가 바람직하게 결정된다. 루프 세트들의 개수는 메인 프로세서(202)가 각각의 서브 명령을 서브 프로세서(204)로 보내는 회수들의 개수이다. 잔여 루프들의 개수는 모든 서브 프로세서들(204, 206 및 208) 보다 적은 서브 프로세서들에 의해 수행되어 질 루프들의 개수이다. 실시예에 의하면, 수행되어야 할 1000개의 루프들과 64개의 서브 프로세서들이 있다면, 15개의 루프 세트들과 40개의 잔여 루프들이 있다.
액션(312)에서, 루프들의 개수가 0보다 크게 설정되어 있는 지(즉, 수행되어야 할 적어도 하나의 루프 세트가 있는 지)에 관하여 조사가 행해진다. 루프 세트들의 개수가 0보다 크다면, 프로세스 흐름은 바람직하게는 액션(314)으로 분기한다. 루프 세트들의 개수가 0이라면, 프로세스 흐름은 바람직하게는 액션(330)으로 분기한다. 액션(314)에서, 루프 카운터가 서브 프로세서들의 개수와 같은 값으로 설정된다. 도 3b를 참조하여 상세하게 기술되는 것처럼, 루프 카운터는 서브 프로세서들(204, 206 또는 208)에 의해 서브 명령을 순차적 서브 프로세서로 보내는 지여부를 결정하는 데에 이용된다. 액션(316)에서 현재의 서브 명령(si-n)은 구성요소(A)에 의해 식별되는 것처럼 서브 프로세서(204)로 보내진다. 서브 프로세서들(204, 206 및 208)에 의한 현재의 서브 명령(si-n)의 프로세싱은 도 3b를 참조하여 후술될 것이다.
액션(318)에서, 특정 루프에 대한 모든 서브 명령들(si-n)이 서브 프로세서(204)에 보내졌는 지 여부에 관하여 조사가 행해진다. 모든 서브 명령들(si-n)이 보내지지 않았다면, 프로세스 흐름은 바람직하게는 액션(316)으로 돌아오고 나중의 서브 명령(si-n)이 보내질 수 있다. 반면에, 서브 명령들(si-n) 모두가 보내졌다면, 프로세스 흐름은 바람직하게는 액션(320)으로 분기한다. 액션(320)에서, 루프 세트들의 개수는 루프 세트가 완성되었다는 것을 반영하기 위해 감소된다. 상술된 실시예에서, 루프 세트들의 개수가 초기에 15로 설정되었다면, 루프 세트들의 개수는 제 1 루프 세트(즉, 64개의 제 1 루프들)의 완성 시에 14로 감소된다. 바람직하게는, 프로세스 흐름은 액션(312)으로 돌아오고, 루프 세트들의 개수가 다시 검사된다.
루프 세트들의 개수가 0 일(즉, 모든 루프 세트들이 수행되었을) 때, 프로세스 흐름은 바람직하게는 액션(330)으로 진행한다. 액션(330)에서, 잔여 루프들의 개수가 0보다 큰 지 여부에 관하여 조사가 행해진다. 잔여 루프들의 개수가 0일 (즉, 모든 루프들이 수행되었기 때문에 더 많은 서브 명령들이 서브 프로세서들(204, 206 및 208)로 보내질 필요가 없을) 때, 프로세스 흐름은 바람직하게는 액션(338)으로 분기하여, 프로세스 흐름이 끝난다. 잔여 루프들의 개수가 0보다 클 때,프로세스 흐름은 바람직하게는 액션(332)으로 분기하여, 루프 카운터가 잔여 루프들의 개수와 같게 설정된다. 이상의 실시예에서, 960개의 루프들이 15개의 루프 세트들에 의해 이미 수행되었기 때문에, 루프 카운터는 40으로 설정된다. 액션(334)에서, 서브 명령(si-n)은 서브 프로세서(204)로 보내진다. 액션(336)에서, 모든 서브 명령들(si-n)이 서브 프로세서(204)로 보내졌는 지 여부에 관하여 조사가 행해진다. 모든 서브 명령들(si-n)이 보내지지 않았다면, 프로세스 흐름은 바람직하게는 액션(334)으로 돌아간다. 반면에, 모든 서브 명령들이 보내졌다면, 프로세스 흐름은 바람직하게는 액션(340)으로 분기하고, 프로세스 흐름이 끝난다.
도 3b를 참조하면, 서브 프로세서들(204, 206 및 208)에 의한 서브 명령 프로세싱(350)에 관한 본 발명의 특정 실시형태들이 이하에서 기술될 것이다. 액션(352)에서, 서브 프로세서(204, 206 또는 208)는 구성요소(A)를 통해 서브 명령(si-n)을 수신한다. 서브 프로세서(204)와 관련하여, 서브 명령(si-n)을 메인 프로세서(202)로부터 보내는 것이 도 3a에 기술되는 반면에, 도 3b의 액션들이 서브 프로세서들(204, 206 및 208) 모두에 적용된다.
서브 명령(si-n)을 수신할 때, 2개의 일련의 액션들이 일어난다. 일련 중 하나가 주어진 서브 프로세서(204, 206 또는 208)에 대한 명령 프로세싱 파이프라인이다. 액션(354)에서, 명령 디코드(d)는 서브 명령(si-n) 상에서 수행된다. 액션(356)에서, 어드레스 계산(a)은 서브 명령(si-n) 상에서 수행된다. 액션(358)에서, 명령 실행(e)은 서브 명령(si-n) 상에서 수행된다. 임의로, 라이트 백 작업(w)은 액션(360)에서 서브 명령(si-n) 상에서 수행된다. 액션(362)에서, 명령 실행 파이프라인은 끝난다.
다른 일련의 액션들이 액션(370)에서 시작하고, 루프 카운터가 감소된다. 액션(372)에서, 루프 카운터가 0보다 큰 지 여부에 관하여 조사가 행해진다. 루프 카운터가 0보다 크다면 (즉, 추가 루프들이 수행된다면), 프로세스 흐름은 액션(374)으로 분기된다. 반면에, 프로세스 흐름은 바람직하게는 액션(378)으로 분기한다. 액션(374)에서, 현재의 서브 프로세서(204, 206 또는 208)는 서브 명령(si-n)을 순차적 서브 프로세서(206 또는 208)에 보낸다. 액션(376)에서, 현재의 서브 프로세서(204, 206 또는 208)에 의한 프로세스 흐름이 끝난다. 액션(378)에서, 루프 카운터가 0일 때, 서브 명령(si-n)은 순차적 서브 프로세서(206 또는 208)로 보내지지 않는다. 그 다음에 프로세스 흐름은 액션(380)에서 끝난다. 그러므로, 상술된 실시예에서, 15개의 루프 세트들은 64개의 서브 프로세서들(204, 206 및 208)에 의해 960개의 루프들을 성취하기 위해 수행되고, 그리고 40개의 제 1 프로세서들(204, 206 및 208)은 40개의 잔여 루프들을 수행하고, 그것에 의해 1000개의 루프들 전체를 성취한다.
도 2로 돌아가면, 각각의 명령 프로세싱 파이프라인은 각각의 서브 프로세서들(204, 206 및 208)이 주어진 사이클(즉, 하나의 클락 사이클)에서 다중 서브 명령들을 위한 하나의 작업(즉, d, a, e 또는 w)을 수행하는 것을 허락한다. 멀티프로세싱 시스템 아키텍처(100) 이내에 결합된 명령 프로세싱 파이프라인은 다중 서브 명령들을 위한 다중 루프들을 병렬로 수행한다. 멀티프로세싱 시스템 아키텍처(100)는 특정 태스크 부분들(즉, 서브 명령들)의 순차적 작업을 확보하는 동안 서브 프로세서들 사이의 태스크들(즉, 루프들)을 퍼뜨린다. 바람직하게는, 각각의 서브 프로세서(204, 206 및 208)는 서브 명령들을 지역적으로 (즉, 자신의 하드웨어에서) 실행한다. 서브 프로세서들(204, 206 및 208)은 바람직하게는 메인 프로세서(202)에 의한 제어 또는 처리 없이, 메모리를 직접 액세스한다. 메모리는 캐시 메모리이고, 그리고, 바람직하게는, 서브 프로세서들(204, 206 및 208) 각각이 자신의 캐시 메모리를 가진다.
각각의 서브 프로세서(204, 206, 208 등)는 바람직하게는 그것과 관련된 프로세서 개수를 가진다. 프로세서 개수는 바람직하게는 루프 카운터와 관련되어 식별된다. 서브 프로세서 프로그램은 예를 들면, 서브 프로세서들(204, 206 또는 208) 중 어느 것이 일련의 명령 루프들의 마지막 루프를 수행할 것인지를 식별하거나 파라미터를 계산하기 위해 프로세서 개수를 이용할 수 있다. 도 3a 내지 3b를 참조하여 기술되는 것처럼, 루프 카운터가 서브 프로세서들(204, 206 및 208)의 개수와 같도록 설정될 때, 서브 프로세서들(204, 206 및 208)의 각각은 명령 루프를 수행할 것이다. 루프 카운터가 잔여 루프들의 개수와 같도록 설정될 때, 모든 서브 프로세서들(204, 206 및 208) 보다 적은 개수의 서브 프로세서들이 명령 루프를 수행할 것이다. 이상의 실시예처럼, 40개의 잔여 루프들과 64개의 서브 프로세서들(204, 206 및 208)이 있다면, 40개의 제 1 서브 프로세서들(204, 206 및 208)(즉, 프로세서 넘버들 1 내지 40)은 명령 루프들을 수행할 것이다. 액션(378)과 결합되어 기술되는 것처럼, 제 40 서브 프로세서(204, 206 또는 208)는 서브 명령(si-n)을 제 41 서브 프로세서(204, 206 또는 208)로 보내지 않을 것이다.
서브 프로세서들(204, 206 및 208)은 메인 프로세서(202)와 관련하여 온 칩 또는 오프 칩에 위치될 수 있다. 하나 이상의 서브 프로세서들(204, 206 및 208)이 각각의 장치의 오프 칩에 위치된다면, 각각의 장치는 바람직하게는 메인 프로세서(202)에 캐스케이드된다.
도 4는 메인 장치(402)와 서브 장치(422)를 가진 대표적인 아키텍처(400)를 도시한다. 메인 장치(402)는 메인 프로세서(404), 모드 선택(406), 및 임의의 개수의 서브 프로세서들(408, 410 및 412)을 포함하고, 서브 프로세서(412)는 제 N 서브 프로세서이다. 서브 장치(422)는 메인 프로세서(424), 모드 선택(426), 및 임의의 개수의 서브 프로세서들(428, 430 및 432)을 포함한다. 메인 프로세서(404)는 프로그램의 명령 루프들을 처리할 수 있고 그리고, 바람직하게는, 메인 프로세서(404)는 명령 루프들 외부에서 작업들을 수행하고 루프들을 제어한다. 이 상세한 설명의 이전의 실시예처럼, 각각의 명령 루프는 하나 이상의 서브 명령들의 프로세싱을 포함한다. 메인 프로세서(404)는 바람직하게는 모드 선택(406)에 의해 기능되고, 바람직하게는 스트랩(strap) 입력(414)을 포함한다. 메인 프로세서(424)는 메인 프로세서(404)에 의해 명령 루프들의 프로세싱을 처리하는 간섭을 방지하기 위해 (모드 선택(426) 및 스트랩 입력(434)에 의해) 기능되지 않는 것이 바람직하다. 메인 프로세서(404)는 이상에서 기술된 캐스케이딩 프로세스를 통해 서브 프로세서들(408, 410, 412, 428, 430 및 432)을 처리한다. 메인 프로세서(424)는 서브 프로세서로서 작동될 수 있고, 바람직하게는 접속(436)을 통해 신호들을 수신한다. 바람직하게는, 메인 프로세서(404)는 명령 루프들의 프로세싱을 항상 처리한다.
메인 프로세서(404)는 바람직하게는 얼마나 많은 서브 프로세서들(408, 410, 412, 428, 430 및 432) (및 메인 프로세서(424))이 캐스케이드되는 지를 식별할 수 있다. 이것은 다양한 방법들로 행해질 수 있다. 예를 들면, 하드웨어 입력들 또는 구성 입력들이 얼마나 많은 서브 프로세서들(408, 410, 412, 428, 430 및 432)이 캐스케이드되는 지를 식별한다. 선택적으로, 메인 프로세서(404)는 데이터를 이용하고, 클락 사이클들을 세거나 서브 프로세서들(408, 410, 412, 428, 430 및 432)의 개수를 결정하기 위한 다른 수단들을 가진다.
편리하게, 본 발명의 방법들 및 장치들은 다중 서브 프로세서들 사이의 서브 명령들을 캐스케이드하여 명령 루프들의 프로세싱 시간을 감소시킨다. 메인 프로세서는 명령 루프들의 프로세싱을 효율적으로 처리하여 서브 명령들이 하나의 서브 프로세서로부터 나중의 서브 프로세서로 캐스케이드된다. 이런 면에서, 명령 프로세싱 파이프라인의 각각의 서브 명령에 대한 작업들을 수행하는 것은 각각의 루프 반복의 순차적 작업을 확보한다. 캐스케이딩 버스는 공유 리소스의 효율적인 이용을 제공한다. 게다가, 멀티프로세싱 컴퓨터 시스템은 임의의 개수의 서브 프로세서들을 처리할 수 있어, 스칼라블 아키텍처(scalable architecture)를 제공한다.
본 발명이 특정 실시형태들을 참조하여 기술되었을 지라도, 이 실시형태들은 본 발명의 원리들과 응용예들을 예시한 것이다. 그러므로, 많은 변형예들이 예시적인 실시형태들로 행해지고 다른 배열들이 첨부된 청구항들에 의해 정의되는 것처럼 본 발명의 사상과 범위를 벗어나지 않게 고안된다.
본 발명은 다중 서브 프로세서들을 이용한 컴퓨터 명령 루프 작업들의 효율적인 실행에 제한되지 않고 이를 포함하여 넓은 산업상 이용가능성을 가진다.

Claims (47)

  1. 프로그램의 명령 루프들의 프로세싱을 처리하도록 작동될 수 있고, 각각의 명령루프가 하나 이상의 서브 명령들을 포함하는 메인 프로세서; 및
    복수의 순차적 스테이지들에서 각각의 서브 명령을 프로세싱하도록 작동될 수 있고, 상기 서브 프로세서들 중 적어도 제 1 서브 프로세서가 상기 하나 이상의 서브 명령들을 상기 메인 프로세서로부터 순차적으로 수신하고 상기 서브 명령을 상기 서브 프로세서들 중 나중의 프로세서로 송신하기 위해 작동될 수 있고, 상기 서브 프로세서들 중 적어도 제 2 서브 프로세서는 상기 하나 이상의 서브 명령들을 상기 제 1 서브 프로세서로부터 순차적으로 수신하기 위해 작동될 수 있는 복수의 서브 프로세서들을 포함하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  2. 제 1 항에 있어서, 상기 복수의 순차적 스테이지들은 명령 프로세싱 파이프라인인 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  3. 제 2 항에 있어서, 상기 명령 프로세싱 파이프라인은 하나 이상의 사이클들 동안 순차적으로 작동되는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  4. 제 3 항에 있어서, 명령 디코딩은 제 1 사이클 동안 수행되고, 어드레스 계산은 제 2 사이클 동안 수행되고 그리고 명령 실행이 제 3 사이클 동안 수행되는것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  5. 제 4 항에 있어서, 라이트 백 오퍼레이션은 제 4 사이클 동안 수행되는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  6. 제 1 항에 있어서, 상기 복수의 서브 프로세서들은 인터럽트를 받아들이지 않는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  7. 제 1 항에 있어서, 상기 복수의 서브 프로세서들은 전자 메모리에 작동될 수 있도록 연결된 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  8. 제 7 항에 있어서, 상기 복수의 서브 프로세서들은 상기 전자 메모리에 직접 액세스하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  9. 제 1 항에 있어서, 상기 메인 프로세서는 전자 메모리에 작동될 수 있도록 연결되는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  10. 제 9 항에 있어서, 상기 전자 메모리는 캐시 메모리인 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  11. 제 1 항에 있어서, 상기 메인 프로세서는 제 1 장치의 일부분을 형성하고 상기 복수의 서브 프로세서들 중 적어도 일부의 서브 프로세서들은 제 2 장치의 일부분을 형성하고, 상기 제 2 장치는 상기 제 1 장치로부터 멀리 떨어져 있고 캐스케이딩되어 있는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  12. 제 1 항에 있어서, 상기 메인 프로세서는 상기 하나 이상의 서브 프로세서들에 대한 이벤트를 검출하도록 작동될 수 있고, 상기 이벤트를 검출할 때 상기 메인 프로세서는 상기 하나 이상의 서브 명령들을 상기 서브 프로세서들 중 제 1 서브 프로세서에 순차적으로 출력하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  13. 제 12 항에 있어서, 상기 메인 프로세서는 상기 명령 루프들 중 하나 이상을 초기화하는 것에 앞서서 상기 이벤트를 검출하고, 상기 메인 프로세서는 상기 복수의 서브 프로세서들의 작업을 제어하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  14. 제 1 항에 있어서, 상기 메인 프로세서는 일반적인 컴퓨터 명령들을 실행할 수 있는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  15. 제 1 항에 있어서, 상기 메인 프로세서는 인터럽트들을 받아들일 수 있는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  16. 제 1 항에 있어서, 상기 메인 프로세서는 병렬 아키텍처를 이용하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  17. 제 16 항에 있어서, 상기 병렬 아키텍처는 수퍼스칼라 아키텍처인 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  18. 제 16 항에 있어서, 상기 병렬 아키텍처는 VLIW(very long instruction word) 아키텍처인 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  19. 제 1 항에 있어서, 상기 메인 프로세서는 ALU 및 레지스터 파일을 포함하고, 상기 ALU 및 상기 레지스터 파일은 벡터 데이터를 취급하도록 작동될 수 있는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  20. 제 1 항에 있어서, 상기 메인 프로세서는 얼마나 많은 서브 프로세서들이 이용될 수 있는 지를 식별하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  21. 제 20 항에 있어서, 상기 메인 프로세서는 수행되어야 할 루프 세트들의 개수 및 잔여 루프들의 개수를 식별하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  22. 제 21 항에 있어서, 루프 세트들의 상기 개수가 0보다 더 크다면, 상기 메인 프로세서는 이용할 수 있는 상기 복수의 서브 프로세서들과 같은 루프 카운터를 설정하고, 상기 하나 이상의 서브 명령들을 상기 루프 카운터에 따라 상기 서브 프로세서들 중 제 1 서브 프로세서로 순차적으로 보내고, 그리고 주어진 명령 루프 내의 모든 서브 명령들이 상기 서브 프로세서들 중 제 1 서브 프로세서로 전해진 후에 루프 세트들의 상기 개수를 감소시키는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  23. 제 21 항에 있어서, 루프 세트들의 상기 개수가 0과 같고 잔여 루프들의 상기 개수가 0보다 크다면, 메인 프로세서는 잔여 루프들의 상기 개수와 같은 루프 카운터를 설정하고 하나 이상의 서브 명령들을 상기 루프 카운터에 따라 상기 서브 프로세서들 중 제 1 서브 프로세서로 보내는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  24. 제 1 항에 있어서, 상기 복수의 서브 프로세서들로부터 주어진 서브 프로세서는 새로운 서브 명령을 수신할 때 루프 카운터를 감소시키고, 상기 루프 카운터가 0보다 크다면 주어진 서브 프로세서는 상기 루프 카운터에 따라 상기 새로운 서브 명령을 상기 복수의 서브 프로세서들 중 나중의 서브 프로세서로 보내고, 상기 루프 카운터가 0이면 주어진 서브 프로세서는 상기 새로운 서브 명령을 상기 서브프로세서들 중 나중의 서브 프로세서에 보내지 않는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  25. 프로그램의 명령 루프들의 프로세싱을 하도록 작동될 수 있고, 각각의 명령루프가 하나 이상의 서브 명령들을 포함하는 메인 프로세서;
    복수의 순차적 스테이지들에서 각각의 서브 명령을 프로세싱하도록 작동될 수 있고, 상기 서브 프로세서들 중 적어도 제 1 서브 프로세서가 상기 하나 이상의 서브 명령들을 상기 메인 프로세서로부터 순차적으로 수신하고 상기 서브 명령을 상기 서브 프로세서들 중 나중의 프로세서로 송신하기 위해 작동될 수 있고, 상기 서브 프로세서들 중 적어도 제 2 서브 프로세서는 상기 하나 이상의 서브 명령들을 상기 제 1 서브 프로세서로부터 순차적으로 수신하기 위해 작동될 수 있는 복수의 서브 프로세서들; 및
    상기 하나 이상의 서브 명령들을 상기 메인 프로세서로부터 상기 서브 프로세서들 중 제 1 서브 프로세서로 제공하도록 작동될 수 있는 캐스케이딩 버스를 포함하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  26. 제 25 항에 있어서, 상기 캐스케이딩 버스는 양방향인 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  27. 제 26 항에 있어서, 상기 캐스케이딩 버스는 루프 데이터를 상기 메인 프로세서로부터 상기 서브 프로세서들 중 제 1 서브 프로세서로 제공하고, 상기 루프 데이터는 하나 이상의 명령 코드, 디코딩된 정보, 셰이딩 데이터, 파라미터들 및 루프 카운터를 포함하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  28. 제 26 항에 있어서, 상기 캐스케이딩 버스는 상태 정보 및 결과 정보 중 하나 이상을 상기 복수의 서브 프로세서들 중 하나 이상으로부터 상기 메인 프로세서로 제공하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  29. 제 25 항에 있어서, 상기 메인 프로세서에 캐스케이딩되어 있는 추가 프로세서 장치를 더 포함하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  30. 제 29 항에 있어서, 상기 추가 프로세서 장치는 추가 메인 프로세서를 포함하는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  31. 제 30 항에 있어서, 상기 추가 메인 프로세서는 상기 복수의 서브 프로세서들 중 하나로서 작동되는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  32. 제 31 항에 있어서, 상기 추가 메인 프로세서는 모드 선택 메커니즘에 의해 상기 복수의 서브 프로세서들 중 하나로서 작동하도록 선택되는 것을 특징으로 하는 멀티프로세싱 컴퓨터 시스템.
  33. 각각의 명령 루프가 하나 이상의 서브 명령들을 포함하고, 메인 프로세서를 이용하여 프로그램의 명령 루프들의 프로세싱을 처리하는 단계;
    제 1 서브 프로세서가 복수의 서브 프로세서들 중 하나이고, 상기 제 1 서브 프로세서에서 상기 메인 프로세서로부터 상기 하나 이상의 서브 명령들을 순차적으로 수신하는 단계;
    복수의 순차적 스테이지들에서 각각의 서브 명령을 프로세싱하는 단계;
    상기 명령 루프들 전부 보다 적은 개수의 명령 루프들이 완성되어 있다면 하나 이상의 서브 명령들을 상기 서브 프로세서 들 중 나중의 서브 프로세서로 보내는 단계; 및
    상기 하나 이상의 서브 명령들을 상기 서브 프로세서들 중 제 2 서브 프로세서에서 순차적으로 수신하는 단계를 포함하는 멀티프로세싱 방법.
  34. 제 33 항에 있어서, 상기 복수의 순차적 스테이지들이 명령 프로세싱 파이프라인인 것을 특징으로 하는 멀티프로세싱 방법.
  35. 제 34 항에 있어서, 하나 이상의 사이클들 동안 상기 명령 프로세싱 파이프라인을 순차적으로 작동하는 단계를 더 포함하는 것을 특징으로 하는 멀티프로세싱 방법.
  36. 제 35 항에 있어서,
    제 1 서브 명령에 대한 명령 디코딩을 제 1 사이클에서 수행하는 단계;
    상기 제 1 서브 명령에 대한 어드레스 계산을 제 2 사이클에서 수행하는 단계; 및
    상기 제 1 서브 명령에 대한 명령 실행을 제 3 사이클에서 수행하는 단계를 더 포함하는 것을 특징으로 하는 멀티프로세싱 방법.
  37. 제 36 항에 있어서, 제 4 사이클에서 상기 제 1 서브 명령에 대한 라이트 백 오퍼레이션을 수행하는 단계를 더 포함하는 것을 특징으로 하는 멀티프로세싱 방법.
  38. 제 35 항에 있어서, 주어진 명령 루프가 제 1 서브 명령 및 제 2 서브 명령을 포함할 때 상기 멀티프로세싱 방법은:
    제 1 사이클에서 상기 제 1 서브 명령에 대한 명령 디코딩을 수행하는 단계;
    제 2 사이클에서 상기 제 1 서브 명령에 대한 어드레스 계산을 수행하는 단계;
    상기 제 2 사이클에서 상기 제 2 서브 명령에 대한 명령 디코딩을 수행하는 단계;
    제 3 사이클에서 상기 제 1 서브 명령에 대한 명령 실행을 수행하는 단계;
    상기 제 3 사이클에서 상기 제 2 서브 명령에 대한 어드레스 계산을 수행하는 단계; 및
    제 4 사이클에서 상기 제 2 서브 명령에 대한 명령 실행을 수행하는 단계를 더 포함하는 것을 특징으로 하는 멀티프로세싱 방법.
  39. 제 38 항에 있어서,
    상기 제 4 사이클에서 상기 제 1 서브 명령에 대한 라이트 백 오퍼레이션을 수행하는 단계; 및
    제 5 사이클에서 상기 제 2 서브 명령에 대한 상기 라이트 백 오퍼레이션을 수행하는 단계를 포함하는 것을 특징으로 하는 멀티프로세싱 방법.
  40. 제 33 항에 있어서,
    상기 하나 이상의 서브 명령들을 순차적으로 수신하기에 앞서서 상기 메인 프로세서에서 이벤트를 검출하는 단계; 및
    상기 하나 이상의 서브 명령들을 상기 제 1 서브 프로세서로 순차적으로 출력하는 단계를 더 포함하는 것을 특징으로 하는 멀티프로세싱 방법.
  41. 제 33 항에 있어서, 상기 메인 프로세서가 명령 추출 메커니즘을 포함할 때, 상기 명령 루프들을 상기 명령 추출 메커니즘을 이용하여 명령 메모리 캐시로부터 검색하는 것을 특징으로 하는 멀티프로세싱 방법.
  42. 제 33 항에 있어서,
    이용 가능한 서브 프로세서들의 개수를 결정하는 단계;
    수행되어야 할 루프 세트들의 개수를 식별하는 단계; 및
    수행되어야 할 잔여 루프들의 개수를 식별하는 단계를 더 포함하는 것을 특징으로 하는 멀티프로세싱 방법.
  43. 제 42 항에 있어서, 루프 세트들의 상기 개수가 0 보다 더 크다면, 상기 멀티프로세싱 방법은:
    루프 카운터가 이용 가능한 상기 복수의 서브 프로세서들과 같도록 설정하는 단계;
    상기 하나 이상의 서브 명령들을 상기 루프 카운터에 따라 상기 서브 프로세서들 중 나중의 서브 프로세서에 보내는 단계; 및
    주어진 명령 루프에서의 서브 명령들 모두가 상기 제 1 서브 프로세서로 보내진 이후에 루프 세트들의 상기 개수를 감소시키는 단계를 더 포함하는 것을 특징으로 하는 멀티프로세싱 방법.
  44. 제 42 항에 있어서, 루프 세트들의 상기 개수가 0과 같고 잔여 루프들의 개수가 0보다 더 크다면, 상기 멀티프로세싱 방법은:
    루프 카운터를 잔여 루프들의 상기 개수와 같도록 설정하는 단계; 및
    상기 하나 이상의 서브 명령들을 상기 루프 카운터에 따라 상기 서브 프로세서들 중 나중의 서브 프로세서로 보내는 단계를 포함하는 것을 특징으로 하는 멀티프로세싱 방법.
  45. 제 1 메인 프로세서는 제 1 장치에 위치되어 있고 제 2 메인 프로세서는 제 2 장치에 위치되어 있고, 상기 제 1 메인 프로세서 및 상기 제 2 메인 프로세서로부터 액티브 메인 프로세서를 선택하는 단계;
    각각의 명령 루프가 하나 이상의 서브 명령들을 포함하고, 상기 액티브 메인 프로세서를 이용하여 프로그램의 명령 루프들의 프로세싱을 처리하는 단계;
    제 1 서브 프로세서는 복수의 서브 프로세서들 중 하나이고 상기 하나 이상의 서브 명령들을 제 1 서브 프로세서에서 상기 액티브 메인 프로세서로부터 순차적으로 수신하는 단계;
    복수의 순차적 스테이지들에서 각각의 서브 명령을 프로세싱하는 단계;
    루프 카운터가 0보다 크다면 상기 하나 이상의 서브 명령들을 상기 서브 프로세서들 중 나중의 서브 프로세서에 보내는 단계; 및
    상기 서브 프로세서들 중 제 2 서브 프로세서에서 상기 하나 이상의 서브 명령들을 순차적으로 수신하는 단계를 포함하는 것을 특징으로 하는 멀티프로세싱 방법.
  46. 제 45 항에 있어서, 상기 액티브 메인 프로세서를 선택하는 단계는 모드 선택 메커니즘을 이용하여 수행되는 것을 특징으로 하는 멀티프로세싱 방법.
  47. 제 45 항에 있어서, 상기 제 1 메인 프로세서는 상기 액티브 메인 프로세서로서 선택되고 상기 제 2 메인 프로세서는 상기 복수의 서브 프로세서들 중 하나로서 작동하는 것을 특징으로 하는 멀티프로세싱 방법.
KR1020047013450A 2002-03-13 2002-10-18 컴퓨터 명령들의 멀티프로세싱 실행을 위한 방법들 및 장치 KR100667509B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US36387302P 2002-03-13 2002-03-13
US60/363,873 2002-03-13
US10/202,355 2002-07-24
US10/202,355 US7162620B2 (en) 2002-03-13 2002-07-24 Methods and apparatus for multi-processing execution of computer instructions
PCT/US2002/033507 WO2003079206A1 (en) 2002-03-13 2002-10-18 Methods and apparatus for multi-processing execution of computer instructions

Publications (2)

Publication Number Publication Date
KR20040086462A true KR20040086462A (ko) 2004-10-08
KR100667509B1 KR100667509B1 (ko) 2007-01-10

Family

ID=28044473

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047013450A KR100667509B1 (ko) 2002-03-13 2002-10-18 컴퓨터 명령들의 멀티프로세싱 실행을 위한 방법들 및 장치

Country Status (9)

Country Link
US (1) US7162620B2 (ko)
EP (1) EP1483675B1 (ko)
JP (1) JP3977340B2 (ko)
KR (1) KR100667509B1 (ko)
AT (1) ATE438145T1 (ko)
AU (1) AU2002335102A1 (ko)
DE (1) DE60233168D1 (ko)
ES (1) ES2330318T3 (ko)
WO (1) WO2003079206A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100806274B1 (ko) * 2005-12-06 2008-02-22 한국전자통신연구원 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
US7533382B2 (en) * 2002-10-30 2009-05-12 Stmicroelectronics, Inc. Hyperprocessor
US7218291B2 (en) * 2004-09-13 2007-05-15 Nvidia Corporation Increased scalability in the fragment shading pipeline
US20090160863A1 (en) * 2007-12-21 2009-06-25 Michael Frank Unified Processor Architecture For Processing General and Graphics Workload
US9785700B2 (en) 2008-02-11 2017-10-10 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallelized indexing
WO2009102765A2 (en) * 2008-02-11 2009-08-20 Nuix North America Inc. Parallelization of electronic discovery document indexing
US9928260B2 (en) 2008-02-11 2018-03-27 Nuix Pty Ltd Systems and methods for scalable delocalized information governance
US8151090B2 (en) * 2009-02-17 2012-04-03 Samsung Electronics Co., Ltd. Sequentially propagating instructions of thread through serially coupled PEs for concurrent processing respective thread on different data and synchronizing upon branch
JP2012252374A (ja) * 2011-05-31 2012-12-20 Renesas Electronics Corp 情報処理装置
US9529599B2 (en) * 2012-02-13 2016-12-27 William Erik Anderson Dynamic propagation with iterative pipeline processing
JP5831316B2 (ja) * 2012-03-19 2015-12-09 富士通株式会社 並列処理装置
US10826930B2 (en) 2014-07-22 2020-11-03 Nuix Pty Ltd Systems and methods for parallelized custom data-processing and search
KR20160054850A (ko) * 2014-11-07 2016-05-17 삼성전자주식회사 다수의 프로세서들을 운용하는 장치 및 방법
US11200249B2 (en) 2015-04-16 2021-12-14 Nuix Limited Systems and methods for data indexing with user-side scripting
JP6669265B2 (ja) * 2016-09-08 2020-03-18 株式会社島津製作所 ガスクロマトグラフ

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5081575A (en) * 1987-11-06 1992-01-14 Oryx Corporation Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
US5522083A (en) * 1989-11-17 1996-05-28 Texas Instruments Incorporated Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors
US6311286B1 (en) * 1993-04-30 2001-10-30 Nec Corporation Symmetric multiprocessing system with unified environment and distributed system functions
US5809340A (en) * 1993-04-30 1998-09-15 Packard Bell Nec Adaptively generating timing signals for access to various memory devices based on stored profiles
US6219773B1 (en) * 1993-10-18 2001-04-17 Via-Cyrix, Inc. System and method of retiring misaligned write operands from a write buffer
US5838987A (en) * 1995-10-06 1998-11-17 National Semiconductor Corporation Processor for eliminating external isochronous subsystems
US6088783A (en) * 1996-02-16 2000-07-11 Morton; Steven G DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5764934A (en) 1996-07-03 1998-06-09 Intel Corporation Processor subsystem for use with a universal computer architecture
EP1359501A3 (en) * 1997-10-02 2007-11-21 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
US6101592A (en) * 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
US6212617B1 (en) * 1998-05-13 2001-04-03 Microsoft Corporation Parallel processing method and system using a lazy parallel data type to reduce inter-processor communication
US6269440B1 (en) * 1999-02-05 2001-07-31 Agere Systems Guardian Corp. Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously
JP3946393B2 (ja) * 1999-10-19 2007-07-18 株式会社東芝 階層構造をもつ並列計算機

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100806274B1 (ko) * 2005-12-06 2008-02-22 한국전자통신연구원 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법
US7526637B2 (en) 2005-12-06 2009-04-28 Electronics And Telecommunications Research Institute Adaptive execution method for multithreaded processor-based parallel system

Also Published As

Publication number Publication date
DE60233168D1 (de) 2009-09-10
WO2003079206A1 (en) 2003-09-25
JP2005520249A (ja) 2005-07-07
EP1483675A1 (en) 2004-12-08
US20030177343A1 (en) 2003-09-18
ES2330318T3 (es) 2009-12-09
JP3977340B2 (ja) 2007-09-19
AU2002335102A1 (en) 2003-09-29
EP1483675B1 (en) 2009-07-29
KR100667509B1 (ko) 2007-01-10
EP1483675A4 (en) 2007-02-14
ATE438145T1 (de) 2009-08-15
US7162620B2 (en) 2007-01-09

Similar Documents

Publication Publication Date Title
KR100667509B1 (ko) 컴퓨터 명령들의 멀티프로세싱 실행을 위한 방법들 및 장치
US8935515B2 (en) Method and apparatus for vector execution on a scalar machine
JP6660991B2 (ja) マルチスレッドプロセッサでのタスクのスケジューリング
JP3881763B2 (ja) データ処理装置
US5604878A (en) Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path
US20110296141A1 (en) Persistent finite state machines from pre-compiled machine code instruction sequences
CN108780395B (zh) 矢量预测指令
JP2007272895A (ja) コンピュータプロセッサアレイの操作方法および装置
US20070162729A1 (en) Method and apparatus for interrupt handling in coarse grained array
US20050071835A1 (en) Method and apparatus for parallel computations with incomplete input operands
GB2330673A (en) Data processing apparatus
US20030120900A1 (en) Apparatus and method for a software pipeline loop procedure in a digital signal processor
US7543135B2 (en) Processor and method for selectively processing instruction to be read using instruction code already in pipeline or already stored in prefetch buffer
US7415601B2 (en) Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters
JP2874351B2 (ja) 並列パイプライン命令処理装置
JPH096614A (ja) データ処理装置
US5212779A (en) System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction
US20070074186A1 (en) Method and system for performing reassociation in software loops
KR102379886B1 (ko) 벡터 명령 처리
US11593114B1 (en) Iterating group sum of multiple accumulate operations
US9135006B1 (en) Early execution of conditional branch instruction with pc operand at which point target is fetched
US20090119492A1 (en) Data Processing Apparatus and Method for Handling Procedure Call Instructions
KR100244210B1 (ko) 멀티-스테이지 파이프라인 구조를 갖는 마이크로 프로세서 디자인방법
JP2825315B2 (ja) 情報処理装置
EP0365187A2 (en) Apparatus for selective execution of instructions following a branch instruction

Legal Events

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

Payment date: 20121224

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131224

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141222

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151223

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20161227

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20171226

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20181220

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20191224

Year of fee payment: 14