KR101586770B1 - 데이터 처리 장치 - Google Patents

데이터 처리 장치 Download PDF

Info

Publication number
KR101586770B1
KR101586770B1 KR1020117010698A KR20117010698A KR101586770B1 KR 101586770 B1 KR101586770 B1 KR 101586770B1 KR 1020117010698 A KR1020117010698 A KR 1020117010698A KR 20117010698 A KR20117010698 A KR 20117010698A KR 101586770 B1 KR101586770 B1 KR 101586770B1
Authority
KR
South Korea
Prior art keywords
unit
arithmetic
register
register file
data
Prior art date
Application number
KR1020117010698A
Other languages
English (en)
Other versions
KR20110084915A (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 KR20110084915A publication Critical patent/KR20110084915A/ko
Application granted granted Critical
Publication of KR101586770B1 publication Critical patent/KR101586770B1/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/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/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
    • 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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

보다 많은 명령을 병렬적으로 실행할 수 있는 데이터 처리 장치(101)를 제공한다. 본 발명의 데이터 처리 장치(101)는 복수의 레지스터를 포함하는 제1 레지스터 파일부(110)와, 제1 레지스터 파일부(110)의 각 레지스터에 대응하는 복수의 레지스터를 포함하는 제2 레지스터 파일부(210)와, 제1 레지스터 파일부(110)의 독출 데이터를 이용해 연산을 실행하는 제1 연산 장치(120)와, 제2 연산 장치(220)를 구비하고 있다. 제1 레지스터 파일부(110)는 데이터를 보유하는 레지스터에 대응하는 제2 레지스터 파일부(210)의 레지스터에 데이터를 전송하고, 제1 연산 장치(120)는 자신이 보유하는 연산 결과를 제2 연산 장치(220)로 전송한다. 제2 연산 장치(220)는 제2 레지스터 파일부(210)의 각 레지스터의 독출 데이터 및 제1 연산 장치(120)의 연산 결과 중 적어도 어느 하나를 이용하여 연산을 실행한다.

Description

데이터 처리 장치{DATA PROCESSING DEVICE}
본 발명은 복수의 연산기를 가지고, 각 연산기에 의한 연산 처리를 동기하여 행할 수 있는 데이터 처리 장치에 관한 것이다.
최근의 마이크로프로세서에서는 기계 사이클(machine cycle)을 단축시킴과 함께, 1 기계 사이클당 실행되는 명령의 수를 늘림으로써, 실효 성능의 향상을 도모하는 방식이 많이 제안되어 있다.
예를 들어, 이와 같은 다수의 명령을 병렬로 처리하는 방식으로서, 목적으로 하는 데이터 처리에 맞추어 연산기 네트워크를 고정하고 이 고정된 연산기 네트워크에 입력 데이터를 입력하는 방식인 연산기 어레이 방식이 알려져 있다(예를 들어, 특허 문헌 1 내지 3을 참조).
이 연산기 어레이 방식에서는 복수의 연산기로 이루어지는 연산기 네트워크를 이용함으로써, 많은 기능을 병렬 실행하는 것이 가능하다.
그러나, 연산기 어레이 방식은 기존의 기계어 명령을 실행할 수 없다. 이 때문에, 이 연산기 어레이 방식에는 특유의 기계어 명령을 생성하기 위한 전용의 기계어 명령 생성 수단이 필요하여 범용성이 결여되어 있다.
그래서, 일반적인 기계어 명령을 실행하고, 또한 기계어 명령의 병렬 실행이 가능한 방식으로서는, 예를 들어, 수퍼스칼라(superscalar) 방식, 벡터 방식, VLIW(Very Long Instruction Word) 방식이 알려져 있다. 이들 방식에서는, 1개의 명령 중에서 복수의 연산 등이 지정되고, 그것들이 동시에 실행되게 된다.
먼저, 수퍼스칼라 방식은 기계어 명령열 중에서 동시 실행 가능한 기계어 명령을 하드웨어가 동적으로 검출하여 병렬 실행하는 방식이다.
이 수퍼스칼라 방식은 기존의 소프트웨어 자산을 그대로 활용할 수 있는 장점이 있으나, 기구의 복잡함 및 소비 전력이 많은 점으로 인하여 최근에는 기피되는 경향에 있다.
이어서, 벡터 방식은 다수의 레지스터를 일차원 방향으로 배열한 벡터 레지스터를 이용해, 로드, 연산, 저장 등의 기본 조작을 반복 적용하는 방식이며, 전력 효율이 높은 고속화가 가능하다. 또한, 캐시 메모리가 불필요해지기 때문에, 주기억 장치와 벡터 레지스터 간의 데이터 전송 속도가 보증되고, 그 결과, 안정된 고속화가 실현된다.
그러나, 이 벡터 방식에서는 주 기억 장치와 벡터 레지스터 사이에서의 데이터 전송 기구의 규모와 지연 시간이 필연적으로 커진다. 이 때문에, 어느 정도의 데이터 재이용을 기대할 수 있는 화상 처리용 임베디드 시스템과 같은 응용 분야에 채용하기에는 부적합한 방식이라고 말할 수 있다.
마지막으로, VLIW 방식은 1개의 명령에 의해 복수의 연산 등이 지정되고, 그것들이 동시에 실행되는 방식이다. 이 VLIW 방식은, 예를 들어 4개의 명령을 동시에 인출하고, 4개의 명령을 동시에 디코딩하고, 범용 레지스터로부터 필요한 데이터를 독출하고, 이 독출된 데이터를 복수의 연산 장치를 이용하여 동시에 연산하여 연산 장치에 부수(付隨)되는 연산 결과 저장 수단에 연산 결과를 저장한다.
그리고, 다음 사이클에서는 그 연산 결과 저장 수단으로부터 내용을 독출하여, 범용 레지스터에 기입함과 함께, 다음 연산에서 그 독출된 연산 결과가 필요한 경우, 그 연산 결과를 연산 장치의 입력으로 바이패스한다.
한편, 로드 명령에서는, LD/ST 유닛에서 캐시 메모리를 참조하고, LD/ST 유닛에 부수되는 로드 결과 저장 수단에 로드 결과를 저장한 후, 다음 사이클에서 LD/ST 유닛이 연산 장치와 동일한 동작을 행한다.
이와 같이 하여 VLIW 방식에서는 병치된 연산 장치 및 LD/ST 유닛 각각의 수만큼 연산을 동시 실행할 수 있다. 또한, VLIW 방식에서는 병렬 실행이 가능한 명령열을 컴파일러 등에 의해 미리 스케줄링해 두기 때문에, 수퍼스칼라 방식과 같이 동시 실행 가능한 기계어 명령을 하드웨어가 동적으로 검출하는 기구가 불필요해진다. 따라서, VLIW 방식에서는 전력 효율이 좋은 명령 실행이 가능하다.
그렇지만, VLIW 방식이라도 수퍼스칼라 방식과 마찬가지로 기껏해야 몇 명령을 동시 실행 가능한 것에 지나지 않는다. 왜냐하면, 먼저, 현실의 프로그램에서는 미리 병렬 실행이 가능하다고 판단할 수 있는 명령 수가 그다지 많지 않기 때문이다. 이 점에 대해서는, 화상 처리 등의 일부 분야에서는 충분한 명령 병렬도가 존재함을 알 수 있지만, 병렬 실행이 가능한 명령 수가 그다지 많지 않은 것이 일반적이다.
또한, 병렬 실행이 가능한 명령 수를 증가시키기 위해서는, 범용 레지스터에 대하여 데이터를 읽고 쓰기 위해 필요한 포트라고 불리는 회로의 수도 증가시키지 않으면 안 된다. 그런데, 현실적인 회로로서 수십 개의 명령을 동시 실행할 수 있는 레지스터 파일을 구성하는 것은 매우 곤란하다. 왜냐하면, 레지스터 파일의 각 포트에는, 임의의 번호의 레지스터 내용을 임의의 연산 장치에 공급하기 위해, 레지스터 파일이 보유하는 레지스터 수 분의 신호선으로부터 1개를 선택하는 회로가 연산 장치 수에 맞추어 필요해지기 때문이다.
특허문헌 1: 일본 공개 특허 평08-83264호 공보(1996년 3월 26일 공개) 특허문헌 2: 일본 공개 특허 2001-312481호 공보(2001년 11월 9일 공개) 특허문헌 3: 일본 공개 특허 2003-76668호 공보(2003년 3월 14일 공개)
상술한 바와 같이, 종래의 VLIW 방식에는 풍부한 프로그램 자산을 이용할 수 있다는 특징이 있지만, 기껏해야 몇 명령밖에 동시 실행할 수 없다는 문제점이 있었다.
또한, 미리 병렬 실행 가능하다고 판단할 수 있는 명령 수가 많은 경우에도, 레지스터 포트 수의 제약에 의해, 동시 실행 명령 수를 증가시킬 수 없다는 문제점도 있었다.
상기 문제점에 착안하여, 본 발명의 목적은, 보다 많은 명령을 병렬적으로 실행할 수 있는 데이터 처리 장치를 제공하는 것에 있다.
상기 목적을 달성하기 위하여, 본 발명에 있어서의 데이터 처리 장치는, 복수의 기계어 명령으로 이루어지는 명령 코드를 실행하기 위한 데이터 처리 장치로서, 상기 명령 코드를 보유하는 명령 메모리부와, 상기 명령 메모리부로부터 상기 명령 코드를 취출하여 디코딩하는 명령 인출/디코딩부와, 상기 명령 인출/디코딩부에 의해 디코딩되는 상기 명령 코드에 기술된 복수의 레지스터 번호 각각에 일대일로 대응하고, 또한 상기 각 레지스터 번호에 대응하는 데이터를 일시적으로 보유하는 복수의 제1 레지스터를 포함하는 제1 레지스터 파일부와, 상기 제1 레지스터 파일부의 각 제1 레지스터와 일대일로 대응하는 복수의 제2 레지스터를 포함하는 제2 레지스터 파일부를 포함하는 n(n은 1 이상의 정수)개의 레지스터 파일부와, 상기 제1 레지스터 파일부의 각 제1 레지스터의 독출 데이터를 이용해 연산을 실행하는 제1 연산부와, 제2 연산부를 포함하는 n개의 연산부와, 상기 제1 연산부의 연산 결과를 일시적으로 보유하는 제1 보유부를 포함하는 n개의 보유부를 구비하고, 상기 제1 레지스터 파일부는 자신의 각 제1 레지스터가 데이터를 보유하는 경우, 데이터를 보유하는 제1 레지스터에 대응하는 상기 제2 레지스터 파일부의 제2 레지스터에 당해 데이터를 전송함과 함께, 상기 제1 보유부는 자신이 보유하는 연산 결과를 상기 제2 연산부로 전송 가능하게 되어 있고, 상기 제2 연산부는 상기 제2 레지스터 파일부의 각 제2 레지스터의 독출 데이터 및 상기 제1 보유부에 의해 전송되는 연산 결과 중 적어도 어느 하나를 이용하여 연산을 실행하는 것을 특징으로 한다.
상기 데이터 처리 장치에서는, 제1 레지스터 파일부의 각 제1 레지스터의 데이터가, 제1 레지스터 파일부의 각 제1 레지스터에 대응하는 제2 레지스터 파일부의 각 제2 레지스터로 전송되어 있다.
따라서, 제2 연산부는, 제1 레지스터 파일부의 제1 레지스터의 데이터가 제1 연산부의 연산 실행에 이용되고 있는 경우라도, 그 데이터를 제2 레지스터 파일부의 제2 레지스터로부터 독출하여 연산 실행에 이용할 수 있다.
또한, 제1 연산부의 연산 결과가 제2 연산부로 전송되어 있다.
따라서, 제2 연산부는, 제1 연산부에 의한 연산 종료 후 즉시, 제1 연산부의 연산 결과를 연산 실행에 이용할 수 있다.
따라서, 상기 데이터 처리 장치에서는, 제1 및 제2 연산부에 의한 2개의 연산을 병렬적으로 실행시킬 수 있다.
본 발명의 데이터 처리 장치는, 상술한 바와 같이, 상기 명령 코드를 보유하는 명령 메모리부와, 상기 명령 메모리부로부터 상기 명령 코드를 취출하여 디코딩하는 명령 인출/디코딩부와, 상기 명령 인출/디코딩부에 의해 디코딩되는 상기 명령 코드에 기술된 복수의 레지스터 번호 각각에 일대일로 대응하고, 또한 상기 각 레지스터 번호에 대응하는 데이터를 일시적으로 보유하는 복수의 제1 레지스터를 포함하는 제1 레지스터 파일부와, 상기 제1 레지스터 파일부의 각 제1 레지스터와 일대일로 대응하는 복수의 제2 레지스터를 포함하는 제2 레지스터 파일부를 포함하는 n(n은 1 이상의 정수)개의 레지스터 파일부와, 상기 제1 레지스터 파일부의 각 제1 레지스터의 독출 데이터를 이용해 연산을 실행하는 제1 연산부와, 제2 연산부를 포함하는 n개의 연산부와, 상기 제1 연산부의 연산 결과를 일시적으로 보유하는 제1 보유부를 포함하는 n개의 보유부를 구비하고, 상기 제1 레지스터 파일부는 자신의 각 제1 레지스터가 데이터를 보유하는 경우, 데이터를 보유하는 제1 레지스터에 대응하는 상기 제2 레지스터 파일부의 제2 레지스터에 당해 데이터를 전송함과 함께, 상기 제1 보유부는, 자신이 보유하는 연산 결과를 상기 제2 연산부로 전송 가능하게 되어 있고, 상기 제2 연산부는, 상기 제2 레지스터 파일부의 각 제2 레지스터의 독출 데이터 및 상기 제1 보유부에 의해 전송되는 연산 결과 중 적어도 어느 하나를 이용하여 연산을 실행하는 것이다.
그러므로, 보다 많은 명령을 병렬적으로 실행할 수 있는 효과를 발휘한다.
도 1은 본 발명의 일 실시 형태에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다.
도 2는 본 발명의 다른 실시 형태에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다.
도 3은 본 발명의 다른 실시 형태에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다.
도 4는 본 발명의 다른 실시 형태에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다.
도 5는 본 발명의 다른 실시 형태에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다.
도 6은 본 발명의 다른 실시 형태에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다.
도 7은 본 발명의 다른 실시 형태에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다.
도 8은 본 발명의 다른 실시 형태에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다.
도 9는 명령 코드를 설명하기 위한 설명도이다.
도 10은 본 발명의 다른 실시 형태에 있어서의 데이터 처리 방법의 처리 순서를 설명하기 위한 도면이다(그 1).
도 11은 본 발명의 다른 실시 형태에 있어서의 데이터 처리 방법의 처리 순서를 설명하기 위한 도면이다(그 2).
도 12는 본 발명의 다른 실시 형태에 있어서의 데이터 처리 방법의 처리 순서를 설명하기 위한 도면이다(그 3).
도 13은 본 발명의 다른 실시 형태에 있어서의 데이터 처리 방법의 처리 순서를 설명하기 위한 도면이다(그 4).
도 14는 본 발명의 다른 실시 형태에 있어서의 데이터 처리 방법의 처리 순서를 설명하기 위한 도면이다(그 5).
도 15는 본 발명의 다른 실시 형태에 있어서의 데이터 처리 방법의 처리 순서를 설명하기 위한 도면이다(그 6).
도 16은 본 발명의 다른 실시 형태에 있어서의 데이터 처리 방법의 처리 순서를 설명하기 위한 도면이다(그 7).
도 17은 본 발명의 다른 실시 형태에 있어서의 데이터 처리 방법의 처리 순서를 설명하기 위한 도면이다(그 8).
도 18은 본 발명의 다른 실시 형태에 있어서의 데이터 처리 방법의 처리 순서를 설명하기 위한 도면이다(그 9).
도 19는 본 발명의 다른 실시 형태에 있어서의 데이터 처리 방법의 처리 순서를 설명하기 위한 도면이다(그 10).
도 20은 본 발명의 다른 실시 형태에 있어서의 데이터 처리 방법의 처리 순서를 설명하기 위한 도면이다(그 11).
이하, 도면을 참조하면서 본 발명의 실시 형태에 대하여 설명한다. 이하의 설명에 이용하는 도면에서는 동일한 부품에 동일한 부호를 부여하고 있다. 이것들의 명칭 및 기능도 동일하다. 따라서, 이것들에 대한 상세한 설명은 반복하지 않는다.
먼저, 본 발명에 있어서의 데이터 처리 장치의 구성에 대하여 실시 형태 1~10에서 설명하고, 이어서, 본 발명에 있어서의 데이터 처리 방법의 처리 순서에 대하여 실시 형태 11에서 설명한다.
(실시 형태 1)
도 1은, 본 발명의 실시 형태 1에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다. 도 1에 나타내는 바와 같이, 본 실시 형태에서의 데이터 처리 장치(101)는 명령 메모리부(10)와, 명령 인출부(명령 인출/디코딩부)(20)와, 명령 디코딩부(명령 인출/디코딩부)(30)와, 제1 레지스터 파일부(110)와, 제2 레지스터 파일부(210)와, 제1 연산 장치(제1 연산부, 제1 보유부)(120)와, 제2 연산 장치(제2 연산부, 제2 보유부)(220)를 구비하고 있다.
명령 메모리부(10)는 하드 디스크 드라이브 등의 자기 디스크 장치나 반도체 메모리 등의 공지의 기억 장치로부터 적절히 선택하여 이용할 수 있다. 명령 메모리부(10)는 복수의 명령으로 이루어지는 프로그램을 보유하며, 주기억의 일부 영역이거나, 또한 주기억의 일부를 보유하는 명령 버퍼일 수도 있다.
명령 인출부(20)는 명령 메모리부(10)로부터 필요한 명령을 인출하고, 명령 디코딩부(30)는 그 인출한 명령을 디코딩한다. 명령 디코딩부(30)에 의한 디코딩 결과에 의해, 제1 및 제2 연산 장치(120, 220)에서의 처리 내용이 결정된다.
본 실시 형태에서의 데이터 처리 장치(101)에서는, 공지의 VLIW 방식에 의한 프로세서 아키텍처를 전제로 하고 있으며, 명령 인출부(20)에 의해 예를 들어 32비트폭의 명령이 예를 들어 4개 동시에 인출되고, 명령 디코딩부(30)에 의해 이들 인출된 명령이 동시에 디코딩되는 것으로 상정한다.
제1 레지스터 파일부(110)는 제1 연산 장치(120)에 있어서의 연산 처리에 필요한 데이터를 보유한다. 제1 레지스터 파일부(110)는 복수의 레지스터(제1 레지스터) r0~r11으로 이루어지는 레지스터군(111)과, 레지스터군(111)의 각 레지스터 r0~r11의 독출 데이터를 제1 레지스터 파일부(110)의 외부로 전송하기 위한 전송기(112)를 포함한다.
레지스터군(111)의 각 레지스터 r0~r11에 대한 독출이나 기입은 명령 디코딩부(30)에 의한 디코딩 결과에 근거하여 실행된다. 레지스터군(111)의 각 레지스터 r0~r11은 자신의 레지스터 번호 0~11을 액세스의 키로 하여 독출이나 기입이 이루어진다.
전송기(112)는 독출 레지스터 번호가 지정되면, 그 지정된 번호가 부여된 레지스터에 보유되어 있는 데이터를 제1 레지스터 파일부(110)의 외부로 전송한다.
제2 레지스터 파일부(210)는 제2 연산 장치(220)에 있어서의 연산 처리에 필요한 데이터를 보유한다. 제2 레지스터 파일부(210)는 복수의 레지스터(제2 레지스터) r0~r11으로 이루어지는 레지스터군(211)과, 레지스터군(211)의 각 레지스터 r0~r11의 독출 데이터를 제2 레지스터 파일부(210)의 외부로 전송하기 위한 전송기(212)를 포함한다.
레지스터군(211)의 각 레지스터 r0~r11에 대한 독출이나 기입은 명령 디코딩부(30)에 의한 디코딩 결과에 근거하여 실행된다. 레지스터군(211)의 각 레지스터 r0~r11은 자신의 레지스터 번호 0~11을 액세스의 키로 하여 독출이나 기입이 이루어진다.
레지스터군(211)의 각 레지스터 r0~r11은 제1 레지스터 파일부(110)의 레지스터군(111)의 각 레지스터 r0~r11과 일대일로 대응되고, 레지스터군(111) 및 레지스터군(211)의 각 레지스터간에서 레지스터 번호가 동일한 것끼리 대응된다. 그리고, 제1 레지스터 파일부(110)의 전송기(112)는 레지스터군(111)의 각 레지스터 r0~r11의 독출 데이터를, 레지스터군(111)의 각 레지스터 r0~r11의 레지스터 번호와 동일한 레지스터 번호를 가지는 제2 레지스터 파일부(210)의 레지스터군(211)의 각 레지스터 r0~r11로 전송 가능하다. 예를 들어, 제1 레지스터 파일부(110)의 전송기(112)는 레지스터군(111)의 레지스터 r3의 독출 데이터를, 제2 레지스터 파일부(210)의 레지스터군(211)의 레지스터 r3으로 전송 가능하다. 또한, 제1 레지스터 파일부(110)의 전송기(112)는 레지스터군(111)의 레지스터 r9의 독출 데이터를, 제2 레지스터 파일부(210)의 레지스터군(211)의 레지스터 r9로 전송 가능하다.
전송기(212)는 독출 레지스터 번호가 지정되면, 그 지정된 번호가 부여된 레지스터에 보유되어 있는 데이터를 제2 레지스터 파일부(210)의 외부로 전송한다.
제1 연산 장치(120)는 데이터 처리 장치(101)에 있어서의 실체적인 처리를 행하는 것이다. 제1 연산 장치(120)는 연산기 1-1~1-4로 이루어지는 연산기군(121)과, 보유기 1-1~1-4로 이루어지는 보유기군(122)과, 전송기(123)를 포함한다.
제1 연산 장치(120)는 제1 레지스터 파일부(110)와 함께 제1 데이터 처리단(處理段)을 구성하고, 제1 레지스터 파일부(110)의 전송기(112)는 레지스터군(111)의 각 레지스터 r0~r11의 독출 데이터를 제1 연산 장치(120)로 전송 가능하다. 그리고, 제1 연산 장치(120)의 연산기군(121)의 각 연산기 1-1~1-4는 제1 레지스터 파일부(110)의 각 레지스터 r0~r11 중에서 2개의 독출 데이터를 취득하고, 이들 데이터를 이용해 사칙 연산이나 논리 연산 등 각종 연산 처리를 실행한다. 각 연산기 1-1~1-4의 연산 처리는 동시에 실행된다.
보유기군(122)의 보유기 1-1~1-4는 각각에 대응하는 연산기 1-1~1-4의 연산 결과를 저장한다. 각 보유기 1-1~1-4는 각 연산기 1-1~1-4와 일대일로 대응된다.
전송기(123)는 각 보유기 1-1~1-4에 저장되어 있는, 각 연산기 1-1~1-4의 연산 결과를 제1 연산 장치(120)의 외부로 전송한다.
제2 연산 장치(220)는 데이터 처리 장치(101)에 있어서의 실체적인 프로세스를 수행한다. 제2 연산 장치(220)는 연산기 2-1~2-4로 이루어지는 연산기군(221)과, 보유기 2-1~2-4로 이루어지는 보유기군(222)과, 전송기(223)를 포함한다.
제2 연산 장치(220)는 제2 레지스터 파일부(210)과 함께 제2 데이터 처리단을 구성하고, 제2 레지스터 파일부(210)의 전송기(212)는 레지스터군(211)의 각 레지스터 r0~r11의 독출 데이터를 제2 연산 장치(220)로 전송 가능하다. 그리고, 제2 연산 장치(220)의 연산기군(221)의 각 연산기 2-1~2-4는 제2 레지스터 파일부(210)의 각 레지스터 r0~r11 중에서 2개의 독출 데이터를 취득하고, 이들 데이터를 이용해 사칙 연산이나 논리 연산 등 각종 연산 처리를 실행한다. 각 연산기 2-1~2-4의 연산 처리는 동시에 실행된다.
또한, 제2 연산 장치(220)의 연산기군(221)의 각 연산기 2-1~2-4는 제1 연산 장치(120)의 보유기군(122)의 각 보유기 1-1~1-4에 저장되어 있는 연산 결과를 취득할 수 있다. 제1 연산 장치(120)의 전송기(123)는 각 보유기 1-1~1-4에 저장된 각 연산기 1-1~1-4의 연산 결과를 제2 연산 장치(220)로 전송할 수 있다.
또한, 제2 연산 장치(220)의 각 연산기 2-1~2-4는 제2 레지스터 파일부(210)의 각 레지스터 r0~r11의 독출 데이터 대신에, 연산기 1-1~1-4에 의해 처리된 연산 결과를 이용하여 연산 처리를 실행할 수 있다.
보유기군(222)의 보유기 2-1~2-4는 각각에 대응하는 연산기 2-1~2-4의 연산 결과를 저장한다. 각 보유기 2-1~2-4는 각 연산기 2-1~2-4와 일대일로 대응된다.
전송기(223)는 각 보유기 2-1~2-4에 저장되어 있는, 각 연산기 2-1~2-4의 연산 결과를 제2 연산 장치(220)의 외부로 전송한다.
이어서, 본 실시 형태에서의 데이터 처리 장치(101)의 동작에 대하여 설명한다.
본 실시 형태에서의 데이터 처리 장치(101)에 있어서, 제1 연산 장치(120)는 레지스터군(111)의 레지스터 r0~r11의 독출 데이터를 이용하여 연산 처리를 수행한다.
제1 연산 장치(120)에 의한 연산 처리와 동시에, 제1 연산 장치(120)에 의한 연산 처리 대상에서 제외된 레지스터군(111)의 레지스터 r0~r11의 독출 데이터가 제2 레지스터 파일부(210)로 전송된다.
그리고, 다음 사이클에서 제2 연산 장치(220)는 제2 레지스터 파일부(210)의 레지스터군(211)의 레지스터 r0~r11로 전송된 데이터를 이용하여 연산 처리를 수행한다.
제2 연산 장치(220)에 의한 연산 처리와 동시에, 제1 연산 장치(120)는 레지스터군(111)의 레지스터 r0~r11의 독출 데이터를 이용하여 연산 처리를 수행한다.
또한, 제2 연산 장치(220)가 제1 연산 장치(120)의 연산 결과를 필요로 하는 경우, 제1 연산 장치(120)의 전송기(123)는 각 보유기 1-1~1-4에 저장된 각 연산기 1-1~1-4의 연산 결과를 제2 연산 장치(220)로 전송한다.
(실시 형태 2)
이어서, 본 발명의 실시 형태 2에 대하여 설명한다. 도 2는 본 발명의 실시 형태 2에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다. 이하, 본 발명의 실시 형태 1과 동일한 부분에 대해서는 동일한 부호를 부여하고 그 상세한 설명은 생략한다.
도 2에 나타내는 바와 같이, 본 실시 형태에서의 데이터 처리 장치(102)와 상기 실시 형태 1에 있어서의 데이터 처리 장치(101)에서 다른 점은, 제3 레지스터 파일부(310)와, 제3 연산 장치(제3 연산부, 제3 보유부)(320)를 더 구비하고 있는 점이다. 이에 의해, 제1 연산 장치(120)에 의한 연산 처리 및 제2 연산 장치(220)에 의한 연산 처리에 더해, 제3 연산 장치(320)에 의한 연산 처리도 동시에 실행하는 것이다.
제3 레지스터 파일부(310)는 제3 연산 장치(320)에 있어서의 연산 처리에 필요한 데이터를 보유한다. 제3 레지스터 파일부(310)는 복수의 레지스터(제3 레지스터) r0~r11으로 이루어지는 레지스터군(311)과, 레지스터군(311)의 각 레지스터 r0~r11의 독출 데이터를 제3 레지스터 파일부(310)의 외부로 전송하기 위한 전송기(312)를 포함한다.
레지스터군(311)의 각 레지스터 r0~r11에 대한 독출이나 기입은 명령 디코딩부(30)에 의한 디코딩 결과에 근거하여 실행된다. 레지스터군(311)의 각 레지스터 r0~r11은 자신의 레지스터 번호 0~12를 액세스의 키로 하여 독출이나 기입이 이루어진다.
레지스터군(311)의 각 레지스터 r0~r11은 제2 레지스터 파일부(210)의 레지스터군(211)의 각 레지스터 r0~r11과 일대일로 대응되고, 레지스터군(211) 및 레지스터군(311)의 각 레지스터간에서 레지스터 번호가 동일한 것끼리 대응된다. 그리고, 제2 레지스터 파일부(210)의 전송기(212)는 레지스터군(211)의 각 레지스터 r0~r11의 독출 데이터를, 레지스터군(211)의 각 레지스터 r0~r11의 레지스터 번호와 동일한 레지스터 번호를 가지는, 제3 레지스터 파일부(310)의 레지스터군(311)의 각 레지스터 r0~r11로 전송 가능하다.
전송기(312)는 독출 레지스터 번호가 지정되면, 그 지정된 번호가 부여된 레지스터에 보유되어 있는 데이터를 제3 레지스터 파일부(310)의 외부로 전송한다.
또한, 제3 레지스터 파일부(310)는 제1 연산 장치(120)의 전송기(123)에 의해 제1 연산 장치(120)의 각 보유기 1-1~1-4에 저장되어 있는, 각 연산기 1-1~1-4의 연산 결과를 취득할 수 있다.
제3 연산 장치(320)는 데이터 처리 장치(102)에 있어서의 실체적인 프로세스를 수행한다. 제3 연산 장치(320)는 연산기 3-1~3-4로 이루어지는 연산기군(321)과, 보유기 3-1~3-4로 이루어지는 보유기군(322)과, 전송기(323)를 포함한다.
제3 연산 장치(320)는 제3 레지스터 파일부(310)과 함께, 제3 데이터 처리단을 구성하며, 제3 레지스터 파일부(310)의 전송기(312)는 레지스터군(311)의 각 레지스터 r0~r11의 독출 데이터를 제3 연산 장치(320)로 전송 가능하다. 그리고, 제3 연산 장치(320)의 연산기군(321)의 각 연산기 3-1~3-4는 제3 레지스터 파일부(310)의 각 레지스터 r0~r11 중에서 2개의 독출 데이터를 취득하고, 이들 데이터를 이용해 사칙 연산이나 논리 연산 등 각종 연산 처리를 실행한다. 각 연산기 3-1~3-4의 연산 처리는 동시에 실행된다.
보유기군(322)의 보유기 3-1~3-4는 각각에 대응하는 연산기 3-1~3-4의 연산 결과를 저장한다. 각 보유기 3-1~3-4는 각 연산기 3-1~3-4와 일대일로 대응된다.
전송기(323)는 각 보유기 3-1~3-4에 저장되어 있는, 각 연산기 3-1~3-4의 연산 결과를 제3 연산 장치(320)의 외부로 전송한다.
또한, 제3 연산 장치(320)는 제2 연산 장치(220)의 각 보유기 2-1~2-4에 저장된 각 연산기 2-1~2-4의 연산 결과를, 제2 연산 장치(220)의 전송기(223)를 통하여 취득할 수 있다.
이어서, 본 실시 형태에서의 데이터 처리 장치(102)의 동작에 대하여 설명한다.
본 실시 형태에서의 데이터 처리 장치(102)에 있어서, 제2 연산 장치(220)는 레지스터군(211)의 레지스터 r0~r11의 독출 데이터를 이용하여 연산 처리를 수행한다.
제2 연산 장치(220)에 의한 연산 처리와 동시에, 제2 연산 장치(220)에 의해 연산 처리 대상에서 제외된 레지스터군(211)의 레지스터 r0~r11의 독출 데이터가 제3 레지스터 파일부(310)로 전송된다.
그리고, 다음 사이클에서 제3 연산 장치(320)는 제3 레지스터 파일부(310)의 레지스터군(311)의 레지스터 r0~r11으로 전송된 데이터를 이용하여 연산 처리를 수행한다.
제3 연산 장치(320)에 의한 연산 처리와 동시에, 제2 연산 장치(220)는 레지스터군(211)의 레지스터 r0~r11의 독출 데이터를 이용하여 연산 처리를 수행한다.
또한, 제3 연산 장치(320)가 제2 연산 장치(120)의 연산 결과를 필요로 하는 경우, 제2 연산 장치(220)의 전송기(223)는 각 보유기 2-1~2-4에 저장된 각 연산기 2-1~2-4의 연산 결과를 제3 연산 장치(320)로 전송한다.
또한, 제1 연산 장치(120)의 연산 결과를 제2 연산 장치(220)가 필요로 하지 않고, 제3 연산 장치(320)가 제1 연산 장치(120)의 연산 결과를 필요로 하는 경우, 제1 연산 장치(120)에서 처리한 연산 결과가 제3 레지스터 파일부에 저장됨으로써, 제1 연산 장치(120)의 연산 결과가 간접적으로 제3 연산 장치(320)로 투입될 수 있다.
(실시 형태 3)
이어서, 본 발명의 실시 형태 3에 대하여 설명한다. 본 발명의 실시 형태는, 상기 실시 형태 2의 데이터 처리 장치(102)에 있어서의 제1~제3 데이터 처리단으로 이루어지는 제3 데이터 처리단의 구성을, N데이터 처리단의 구성으로 확장한 형태이다.
예를 들어, N을 1 이상의 정수로 한다. 이 경우, 제N 데이터 처리단을 구성하는 연산 장치에서 수행된 연산 결과가 제(N+2) 데이터 처리단 이후의 연산 장치가 사용되면, 상기 연산 결과는 제(N+2) 데이터 처리단의 레지스터 파일부에 기입된다.
한편, 그 연산 결과를 제(N+2) 데이터 처리단 이후의 연산 장치가 사용하지 않는 경우, 그 연산 결과를 제(N+2) 데이터 처리단의 레지스터 파일부에 기입하지 않고 제(N+1) 데이터 처리단의 연산 장치에 입력한다.
상술한 바와 같이, 본 실시 형태에서의 데이터 처리 장치에 따르면, 다음 단의 연산 장치에만 사용되는 전단(前段)의 연산 장치의 연산 결과는, 다음 단의 레지스터 파일부로의 기입이 불필요해진다. 따라서, 전후단에서의 레지스터 파일부간의 데이터 전송을 생략할 수 있다.
(실시 형태 4)
이어서, 본 발명의 실시 형태 4에 대하여 설명한다. 도 3은 본 발명의 실시 형태 4에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다. 이하, 본 발명의 실시 형태 2와 동일한 부분에 대해서는 동일한 부호를 부여하고 그 상세한 설명은 생략한다.
도 3에 나타내는 바와 같이, 본 실시 형태에서의 데이터 처리 장치(103)와 상기 실시 형태 2에 있어서의 데이터 처리 장치(102)에서 다른 점은, 제1 로드/저장부(로드부, 저장부)(130)와, 제1 캐시 메모리(140)를 더 구비하고 있는 점이다. 제1 로드/저장부(130) 및 제1 캐시 메모리(140)는 제1 연산 장치(120) 및 제1 레지스터 파일부(110)와 함께, 제1 데이터 처리단을 구성한다.
제1 로드/저장부(130)는 로드부(LD) 1-1, 1-2로 이루어지는 로드부군(131)과, 저장부(ST) 1-1, 1-2로 이루어지는 저장부군(132)을 포함한다.
제1 캐시 메모리(140)는 제1 로드/저장부(130)에 연결되고, 제1 로드/저장부(130)에 의한 로드, 저장 동작에 따라 독출 및 기입을 고속으로 실행한다.
제1 캐시 메모리(140)는 전체의 내용을 최대한 다음 단 이후로 전달하기 위하여 용량을 매우 작게 할 필요가 있기 때문에, 비(非)어레이 동작 시에 사용하는 대용량의 캐시 메모리와 구별되는 소용량의 캐시 메모리를 이용하여 구성된다.
이 경우, 비어레이 동작 시에 사용한 캐시 메모리의 내용 중에서 어레이 동작에 필요한 더티 라인은 일단 외부 메모리(도시 생략)에 임시적으로 저장되고, 이후에 상기 비어레이 동작은 제1 캐시 메모리(140)를 이용하여 어레이 동작으로 전환될 수 있다. 그렇게 함으로써, 비어레이 동작 시에 사용된 캐시 메모리의 내용과 제1 캐시 메모리(140)의 내용의 정합성을 유지하는 것이 가능해진다.
본 발명에 있어서의 데이터 처리 장치는, 공지의 VLIW 방식에 의한 프로세서 아키텍처를 전제로 하고 있으며, 이 때문에, VLIW 형식의 기계어 명령은 통상적으로 제1 레지스터 파일부(110), 제1 연산 장치(120), 제1 로드/저장부(130), 및, 제1 캐시 메모리(140)에 의해 실행된다. 즉, VLIW 방식에 의한 연산 처리의 동작(이하, ‘비어레이 동작’이라고 할 때도 있다.)은 제1 레지스터 파일부(110), 제1 연산 장치(120), 제1 로드/저장부(130), 및, 제1 캐시 메모리(140)에 의해 실행된다.
따라서, 상기 실시 형태 1 내지 3에 있어서의, 복수의 연산 장치에 의한 연산 처리의 동시 동작(이하, ‘어레이 동작’이라고 할 때도 있다.)을 개시하기 위해 필요한 레지스터 정보는 상기 제1 레지스터 파일부(110)에 저장된다.
그리고, 명령 디코딩부(30)에 의한 디코딩 결과로서 어레이 동작 개시 명령(동작 명령)이 검출된 경우, 각각의 데이터 처리단의 연산 장치에 대한 제어 정보(설정 정보) A가 설정된다. 상기 제어 명령 A는 각 연산 장치에 의한 연산 처리에 필요한 데이터를 저장하는 레지스터의 레지스터 번호를 나타내는 소스 레지스터 번호, 각 연산 장치에 의한 연산 처리의 연산 종별, 및 각 연산 장치의 연산 결과의 저장처인 레지스터의 레지스터 번호를 나타내는 데스티네이션 레지스터 번호를 포함한다.
이 제어 정보 A는 어레이 동작 개시 명령의 부가 정보로서 배치될 수 있다. 이 경우, 어레이 동작 개시 명령의 디코딩 시에 제어 정보 A를 한 번에 획득할 수 있다.
또한, 이 제어 정보 A는 후속의 VLIW 명령열로서 공급될 수 된다. 이 경우, 어레이 동작 개시 명령을 디코딩한 후, 계속 후속되는 VLIW 명령을 순서대로 디코딩하고, 루프의 반복을 의미하는 후방 분기 명령, 즉 어레이 동작의 최종단에 대응하는 명령을 디코딩할 때까지의 사이에, 루프로부터의 탈출을 의미하는 전방 분기 명령, 즉 어레이 동작의 종결 조건(동작 종결 조건)에 대응하는 명령을 검출하여 휴지 조건으로서 세팅할 수 있다. 따라서, 기존 명령열에 부가해야 하는 제어 정보를 삭감할 수 있다.
이때, 각 연산 장치에 의한 연산 처리에 필요한 데이터가 전단(前段)으로부터 순차적으로 전송되어 오는 것을 전제로 하면, 전체 단의 연산 장치에 대하여 일제히 제어 정보를 전송할 필요가 없고, 각 단에 있어서의 연산 장치에 최초의 데이터가 도착함과 동시에 제어 정보가 도착하는 것으로 구성될 수 있다.
예를 들어, 루프 구조의 1 이터레이션(iteration)이 연산 장치 네트워크와 매핑된 되고 이러한 상태에서 어레이 동작이 개시된 경우, 데이터가 순차적으로 입력되어 대량의 데이터가 처리된다.
즉, 어레이 동작 개시 후에는, 이 어레이 동작이 종료될 때까지, 각 연산 장치에 대한 제어 정보를 변경할 필요가 없고, 또한 비어레이 동작 시에 필요했던 명령 디코딩부(30)에 의한 디코딩 동작을 실행할 필요가 없어진다. 이에 따라, 명령 디코딩부(30)의 동작을 정지시킬 수 이꼬, 또한 명령 인출부(20)에 의한 인출 동작도 마찬가지로 정지시킬 수 있다.
또한, 제어 정보 A에 각 단에 있어서의 연산 장치의 어레이 동작을 정지시키기 위한 어레이 동작 종결 조건을 부가해 두고, 어레이 동작 중에 미리 지시한 조건이 만족된 경우, 자동으로 비어레이 동작으로 복귀하는 구성도 구현할 수 있다.
이 어레이 동작 종결 조건의 구체적 예에는, 각 데이터 처리단에 있어서의 연산 장치의 실행 사이클 수 등이 포함된다.
(실시 형태 5)
이어서, 본 발명의 실시 형태 5에 대하여 설명한다. 도 4는 본 발명의 실시 형태 5에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다. 이하, 본 발명의 실시 형태 4와 동일한 부분에 대해서는 동일한 부호를 부여하고 그 상세한 설명은 생략한다.
도 4에 나타내는 바와 같이, 본 실시 형태에서의 데이터 처리 장치(104)와 상기 실시 형태 4에 있어서의 데이터 처리 장치(103)에서 다른 점은, 외부 메모리(150)를 더 구비하고 있는 점이다.
외부 메모리(150)는 제1 로드/저장부(130)가 보유하는 제1 캐시 메모리(140)에만 연결된다. 그리고, 제2단 이후에는 제1 캐시 메모리(140)의 데이터가 순차적으로 전송된다. 이러한 구성에 의해, 외부 메모리(150)와 각 데이터 처리단의 캐시 메모리의 연결이 단순화된다.
로드 명령은 제1 레지스터 파일부(110)에 저장된 어드레스 정보를 제1 연산 장치(120)에서 가감산하여 얻어지는 어드레스에 따라 제1 캐시 메모리(140)를 참조하고, 얻어진 데이터는 제1 로드/저장부(130)의 저장부군(132)의 저장부 1-1, 1-2에 저장된다.
이 저장부 1-1, 1-2에 저장된 데이터는 다음 사이클에서 후단의 연산 장치 또는 레지스터 파일부로 입력된다.
(실시 형태 6)
이어서, 본 발명의 실시 형태 6에 대하여 설명한다. 도 5는 본 발명의 실시 형태 6에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다. 이하, 본 발명의 실시 형태 5와 동일한 부분에 대해서는 동일한 부호를 부여하고 그 상세한 설명은 생략한다.
도 5에 나타내는 바와 같이, 본 실시 형태에서의 데이터 처리 장치(105)와 상기 실시 형태 5에 있어서의 데이터 처리 장치(104)에서 다른 점은, 제2 로드/저장부(230)와, 제3 로드/저장부(330)와, 제2 캐시 메모리(240)와, 제3 캐시 메모리(340)를 더 구비하고 있는 점이다. 제2 로드/저장부(230) 및 제2 캐시 메모리(240)는 제2 연산 장치(220) 및 제2 레지스터 파일부(210)와 함께, 제2 데이터 처리단을 구성하고 있다. 또한, 제3 로드/저장부(330) 및 제3 캐시 메모리(340)는 제3 연산 장치(320) 및 제3 레지스터 파일부(310)와 함께, 제3 데이터 처리단을 구성하고 있다.
제2 로드/저장부(230)는 로드부(LD) 2-1, 2-2로 이루어지는 로드부군(231)과, 저장부(ST) 2-1, 2-2로 이루어지는 저장부군(232)을 포함한다. 또한, 제3 로드/저장부(330)는 로드부(LD) 3-1, 3-2로 이루어지는 로드부군(331)과, 저장부(ST) 3-1, 3-2로 이루어지는 저장부군(332)을 포함한다.
제2 캐시 메모리(240)는 제2 로드/저장부(230)에 연결되고, 제2 로드/저장부(230)에 의한 로드, 저장 동작에 따라 독출 및 기입이 고속으로 실행된다.
제3 캐시 메모리(340)는 제3 로드/저장부(330)에 연결되고, 제3 로드/저장부(330)에 의한 로드, 저장 동작에 따라 독출 및 기입이 고속으로 실행된다.
제2 및 제3 캐시 메모리(240, 340)는 제1 캐시 메모리(140)와 마찬가지로, 전체 내용을 최대한 다음 단 이후로 전송하기 위하여 용량을 매우 작게 할 필요가 있기 때문에, 비(非)어레이 동작 시에 사용하는 대용량의 캐시 메모리와 구별되는 소용량의 캐시 메모리를 이용하여 구성된다.
단, 제2 및 제3 캐시 메모리(240, 340)는 제1 캐시 메모리(140)와 달리, 외부 메모리(150)와 직접 데이터를 전송하기 위한 인터페이스가 구비되지 않는다. 이 때문에, 각각의 제2 및 제3 캐시 메모리(240, 340)는 제1 캐시 메모리(140)로부터 전단(前段)의 캐시 메모리를 경유하여 간접적으로 데이터를 공급받는다.
(실시 형태 7)
이어서, 본 발명의 실시 형태 7에 대하여 설명한다. 도 6은 본 발명의 실시 형태 7에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다. 이하, 본 발명의 실시 형태 6과 동일한 부분에 대해서는 동일한 부호를 부여하고 그 상세한 설명은 생략한다.
VLIW 명령뿐만 아니라 일반적인 기계어 명령에서도, 각 명령어 중에 기술된 레지스터 번호가 변화되지 않는다. 따라서, 상기 실시 형태 4 내지 6과 같이, 미리 각 연산 장치에 제어 정보를 세팅하고 레지스터의 내용이 전단(前段)으로부터 입력되는 구성으로 구현하면, 본래 VLIW 형식의 기계어 명령이 의도하는 연산 결과와 동일한 결과를 어레이 동작에 의해 연속적으로 얻을 수 있다.
한편, VLIW 명령뿐만 아니라 일반적인 로드 명령에서도, 레지스터의 내용으로부터 얻어지는 로드 어드레스를 이용해 캐시 메모리를 참조한 후, 후속 명령에 따라 레지스터의 내용을 감소시키거나 증가시키고, 이후의 다음 로드 명령을 실행할 때에 다른 어드레스를 이용한다.
동일한 결과를 어레이 동작에 의해 연속적으로 얻기 위해서는, 각 단에 있어서의 로드 명령이, 후속 명령의 결과를 기다리지 않고, 자율적으로 어드레스 정보를 증가시키거나 감소시키고, 연속적으로 캐시 메모리를 참조하는 구성이 필요하다.
이를 위해서, 본 실시 형태에서의 데이터 처리 장치(106)에서는, 도 6에 나타내는 바와 같이, 로드 어드레스를 계산하는 각 단의 연산 장치가, 전회(前回)의 연산 결과를 이용해 다음의 어드레스를 계산한다.
일반적으로, 로드 어드레스는, 베이스 레지스터의 값에 오프셋을 더한 것이며, 이 가산을 위해서 상기 베이스 레지스터의 값이 1단의 연산기를 통과해야 된다. 또한, 다음에 사용하는 어드레스는 오프셋을 더 더한 값은 아니며, 데이터폭(예를 들어, 4바이트 등)만을 더한 값이다. 이와 같은 어드레스 증가를 위해서, 통상의 프로그램에서는 로드 명령의 실행 후, 베이스 레지스터의 값을 4만큼 증가시키는 명령을 실행한다.
그러나, 본 실시 형태에 있어서, 후단에서 레지스터의 값을 증가시키고, 그 결과를 전단(前段)에서 사용하는 것으로 한 경우, 1 방향의 데이터 흐름을 효율적으로 제어할 수 없다.
이 때문에, 상술한 바와 같이, 본 실시 형태에서는, 후단의 값을 전단(前段)으로 되돌리지 않고, 전단이 자율적으로 베이스 어드레스를 갱신한다.
그렇게 함으로써, 각 단의 로드/저장부가 후단의 실행 결과를 기다리지 않게 되고, 이에 따라 각 단의 로드/저장부의 부하가 저감될 수 있다.
(실시 형태 8)
이어서, 본 발명의 실시 형태 8에 대하여 설명한다. 도 7은 본 발명의 실시 형태 8에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다. 이하, 본 발명의 실시 형태 7과 동일한 부분에 대해서는 동일한 부호를 부여하고 그 상세한 설명은 생략한다.
도 7에 나타내는 바와 같이, 본 실시 형태에서의 데이터 처리 장치(107)에서는, 제1 캐시 메모리(140)는 외부 메모리(150)에 접속되어 있다. 이하, 화상 처리의 하나인 윤곽 추출 처리를 예로 하여 본 실시 형태에 있어서의 데이터 처리 장치(107)의 동작에 대하여 설명한다.
화상 처리의 하나인 윤곽 추출 처리는, 예를 들어 3×3의 화소 영역에 대하여 가로 세로 대각선의 대각 화소의 차분을 구하고, 총화(總和)가 문턱값을 넘을 경우, 중앙 화소 위치에 윤곽을 생성하는 것이다. 일반적으로, 화상 데이터는 가로 방향으로 연속 어드레스가 부여되도록 외부 I/O 장치로부터 외부 메모리로 전송되고, 그 결과 세로 방향의 연속 화소는 메모리 어드레스로서 이산된다.
고속화를 위해 디자인된 종래의 캐시 메모리는, 외부 메모리보다 더 빠른 메모리를 구비하고, 수회의 재이용이 예상되는 16워드 정도의 연속 어드레스 영역을 상기 구비된 메모리에 저장하는 기술이다. 이 때문에, 세로 방향의 이산 어드레스를 빈번하게 참조하는 경우에는 상기의 효과를 기대할 수가 없다.
이러한 점을 고려해서, 본 실시 형태에서의 데이터 처리 장치(107)는, 버스트 전송(burst transmission)에 의한 높은 스루풋(throughput)을 기대하기 위해서, 외부 I/O 장치의 화소 데이터가 외부 메모리에 저장될 때, 전송 정보 F에 근거하여 어드레스가 연속되는 듯한 데이터 전송을 수행한다. 상기 전송 정보 F는 기입처인 외부 메모리의 베이스 어드레스와 전송 워드 수(화상 폭이 1024워드인 경우, 1024)를 포함한다.
한편, 본 실시 형태에서의 데이터 처리 장치(107)는 외부 메모리의 데이터를 제1 캐시 메모리로 전송할 때, 세로 방향으로 인접하는 화소 데이터를 연산 장치에 매 사이클 공급하기 위해서, 기입처인 제1 캐시 메모리의 베이스 어드레스와 전송 데이터 길이(화상의 폭이 1024워드인 경우, 상중하 3워드의 전송을 1024회 분에 상응하는 길이)로 구성되는 전송 정보 G에 근거하여, 외부 메모리의 서로 다른 뱅크에 속하는 복수의 짧은 데이터(예를 들어, 사이클당 3 워드)가 캐시 메모리의 복수의 라인에 매 사이클마다 전송되도록 구성된다.
이와 같은 전송 정보는 어레이 동작 개시 명령에 관련되고, 어레이 동작 개시 명령이 검출될 때 독출된다.
(실시 형태 9)
이어서, 본 발명의 실시 형태 9에 대하여 설명한다. 도 8은 본 발명의 실시 형태 9에 있어서의 데이터 처리 장치의 구성을 나타내는 도면이다. 이하, 본 발명의 실시 형태 8과 동일한 부분에 대해서는 동일한 부호를 부여하고 그 상세한 설명은 생략한다.
상기 실시 형태 8에서는, 어레이 동작 개시 명령에 관련되는 데이터 전송 정보에는 외부 I/O 장치에서 외부 메모리로 전송되는 전송 정보와, 외부 메모리에서 제1 캐시 메모리로 전송되는 전송 정보의 2가지가 있다.
그런데, 외부 메모리에서 제1 캐시 메모리로 전송되는 전송 정보에 대해서는, 제1 캐시 메모리와 제1 연산 장치를 동기화시키는 메커니즘이 필요하다.
상기 동기화 메커니즘의 목적은, 제1 캐시 메모리에 필요한 데이터가 모두 갖추어진 시점, 즉, 제2단 이후의 로드/저장부가 필요로 하는 데이터가 제1 캐시 메모리에 모두 존재함을 확인한 시점에서 전체 단의 연산 장치를 일제히 동작시키고, 필요로 하는 데이터가 제1 캐시 메모리에 존재하지 않는 동안에 전체 단의 연산 장치를 일제히 정지시키기 위함이다.
이 때문에, 본 실시 형태에 있어서의 데이터 처리 장치(108)에서, 전술한 데이터 전송 정보에, 연산 장치의 동작 개시까지 미리 동작시켜야 하는 로드 횟수(SKIP 정보)가 추가적으로 포함된다. 규정 횟수의 로드가 완료된 시점에, 후단의 연산 장치는 동작을 개시한다.
이후, 로드가 완료될 때마다 후단의 연산 장치는 동작된다. 한편, 외부 메모리의 지연 등에 의해 로드가 완료되지 않은 경우, 후단의 연산 장치는 정지된다.
또한, 최종단이 외부 메모리나 외부 I/O 장치에 결과를 저장할 때 지연이 발생한 경우에도, 어레이 동작은 일시정지되어 데이터 대기를 수행한다.
로드 완료 수가 지정 전송 워드 수에 도달했을 때에는, 제1단의 로드 동작은 정지되고 후단의 동작만 계속된다. 예를 들어, 최종단의 연산 장치에 있어서 연산수 카운터가 규정치에 도달했을 때 어레이 동작이 정지되게 함으로써, 어레이 동작을 정확하게 제어할 수 있다.
(실시 형태 10)
이어서, 본 발명의 실시 형태 10에 대하여 설명한다.
어레이 동작의 최종 결과는 저장 명령에 의해 외부 메모리 또는 외부 I/O 장치에 저장된다. 혹은, 또 다른 외부 메모리에 저장하고, 그 외부 메모리에 접속되는 별도의 N단 구성의 입력으로 함으로써, 복수 종류의 화상 처리를 연속적으로 행하는 것이 가능해진다.
또한, 하드웨어가 구비하는 어레이단 수보다 복잡한 처리를 행하는 경우에는, 외부 메모리를 인터페이스로 하여 다른 어레이 구조를 종속 접속하거나, 혹은, 다른 어레이 구조의 제1 캐시 메모리에 직접 접속함으로써, 연산 장치의 단수를 확장하여 대응할 수 있다.
(실시 형태 11)
이어서, 본 발명의 실시 형태 11에 대하여 설명한다. 본 실시 형태에서는, 본 발명에 있어서의 데이터 처리 방법의 처리 순서에 대하여 설명한다.
이하, 도 9에 기재한 명령 코드에 근거하는, 본 발명에 있어서의 데이터 처리 방법에 따른 연산기간 네트워크의 설정 과정에 대하여, 도 10 내지 20을 참조하면서 도 9의 명령 코드를 순서에 따라 설명한다.
먼저, 루프 구조에 들어가기 바로 전의 기계어 명령에서 어레이 동작 개시 명령이 검출되었다고 하자. 이 경우, 루프 구조가 종결, 즉, 후방 분기 명령이 검출될 때까지, 명령 디코딩 기능은 기계어 명령을 종래대로 해석하고, 제1 연산 장치를 제어하는 종래 동작을 정지시킨다.
그리고, 루프 구조 내의 기계어 명령에 근거하여 어레이 동작에 필요한 연산기간 네트워크의 설정을 행한다.
먼저, 도 10에서 도 9에 나타낸 명령 코드의 제1행째의 기계어 명령이 해석되고 있다. 한편, 도 10에서는 이 제1행째의 명령 코드에 근거하는 설정 개소를 ‘S1’으로 나타내고 있다.
이 제1행째의 명령 코드에는 2개의 로드 명령(ld)과, 1개의 감산 명령(subicc)이 기술되어 있다.
제1의 로드 명령(ld)은 제1 레지스터 파일부(110)의 레지스터(gr4)의 내용과 상수(-1284)(const.)를 가산하고, 그 결과를 주기억 어드레스로 하여 제1 캐시 메모리(140)를 참조하고, 상기 제 1 캐시 메모리(140)에서 독출한 값을 제4 레지스터 파일부(410)의 레지스터(fr1)에 저장한다.
이를 위한 연산기 네트워크는, 먼저 제1 레지스터 파일부(110)의 레지스터(gr4)의 내용이 독출되어 제1 연산 장치(120)에 속하는 연산기(제1 EAG)에 입력되도록 설정된다. 이 설정은, 일반적인 선택 회로에 대한 선택 신호의 설정과 동일하다.
또한, 제1 EAG의 가산 결과는 제1 EAG의 보유기에 기억된 후, 다음 사이클에서 제1 로드/저장부(130)로 전송된다.
이 제1 EAG와 제1 로드/저장부(130)의 로드부 및 저장부는 일대일로 연결되어 있으므로, 제1 로드/저장부(130)에서의 입력 선택 순서는 불필요하다.
또한, 제1 로드/저장부(130)의 결과가 제4 레지스터 파일부(410)의 레지스터(fr1)에 기입되도록 네트워크가 설정된다.
제2의 로드 명령(ld)은 제1의 로드 명령(ld)과 마찬가지로, 제1 레지스터 파일부(110)의 레지스터(gr4)의 내용과 상수(1284)(const.)를 가산하고, 그 결과를 주기억 어드레스로 하여 제1 캐시 메모리(140)를 참조하고, 상기 제 1 캐시 메모리(140)에서 독출한 값을 제4 레지스터 파일부(410)의 레지스터(fr2)에 저장한다.
이를 위하여, 먼저 제1 레지스터 파일부(110)의 레지스터(gr4)의 내용이 독출되어 제1 연산 장치(120)에 속하는 연산기(제2 EAG)에 입력되도록 연산기 네트워크가 설정된다.
또한, 제2 EAG의 가산 결과는 제2 EAG의 보유기에 기억된 후, 다음 사이클에서 제1 로드/저장부(130)로 전송된다.
이 제2 EAG와 제1 로드/저장부(130)의 로드부 및 저장부도 일대일로 연결되어 있으므로, 제1 로드/저장부(130)에서의 입력 선택 순서는 불필요하다.
또한, 제1 로드/저장부(130)의 결과가 제4 레지스터 파일부(410)의 레지스터(fr2)에 기입되도록 네트워크가 설정된다.
한편, 상수는 명령 디코딩 시에 상수 영역(const.)에 저장되도록 설정된다.
제3의 감산 명령(subicc)은 제1 레지스터 파일부(110)의 레지스터(gr7)의 내용에서 1을 감산하고, 그 결과를 같은 레지스터(gr7)에 저장하는 명령이다.
이를 위하여, 제1 레지스터 파일부(110)의 레지스터(gr7)의 내용에서 1을 감산되도록 제1 연산 장치(120)까지의 네트워크가 설정된다.
한편, 반복 감산을 수행하기 위하여, 다음 사이클 이후에 제1 레지스터 파일부(110)에 속하는 레지스터(gr7) 대신에 제1 연산 장치(120)에 속하는 연산기(subicc)의 출력이 입력값으로 이용되도록 네트워크가 설정된다.
그렇게 함으로써, 계속해서 감산을 행한 결과(후술하는 조건 코드)는 어레이 동작의 종결 조건으로 이용될 수 있다.
네트워크는 감산 결과에 수반하는 조건 코드가 제3 레지스터 파일부(310)의 레지스터(icc0)로 전송되도록 설정된다.
이어서, 도 11에서 도 9에 나타낸 명령 코드의 제2행째의 기계어 명령이 해석되고 있다. 한편, 도 11에서는 이 제2행째의 명령 코드에 근거하는 설정 개소를 ‘S2’로 나타내고 있다.
이 제2행째의 명령 코드에는 2개의 로드 명령(ld)과, 1개의 조건 분기 명령(beq)이 기술되어 있다.
제1의 로드 명령(ld)은 제2 레지스터 파일부(210)의 레지스터(gr4)의 내용과 상수(-1280)(const.)를 가산하고, 그 결과를 주기억 어드레스로 하여 제2 캐시 메모리(240)를 참조하고, 상기 제2 캐시 메모리(240)에서 독출한 값을 제5 레지스터 파일부(510)의 레지스터(fr3)에 저장한다.
이를 위하여, 먼저 제1 레지스터 파일부(110)의 레지스터(gr4)의 내용이 제2 레지스터 파일부(210)의 레지스터(gr4)로 전송되도록, 연산기 네트워크가 설정된다.
그리고, 제2 레지스터 파일부(210)의 레지스터(gr4)의 내용이 독출되어 제2 연산 장치(220)에 속하는 연산기(제1 EAG)로 입력되도록, 연산기 네트워크가 설정된다.
또한, 제1 EAG의 가산 결과는 제1 EAG의 보유기에 기억된 후, 다음 사이클에서 제2 로드/저장부(230)로 전송된다.
그리고, 이 제2 로드/저장부(230)의 결과가 제5 레지스터 파일부(510)의 레지스터(fr3)에 기입되도록 네트워크가 설정된다.
제2의 로드 명령(ld)은 제1의 로드 명령(ld)과 마찬가지로, 제2 레지스터 파일부(210)의 레지스터(gr4)의 내용과 상수(1280)(const.)를 가산하고, 그 결과를 주기억 어드레스로 하여 제2 캐시 메모리(240)를 참조하고, 제2 캐시 메모리(240)로부터 독출된 값을 제5 레지스터 파일부(510)의 레지스터(fr4)에 저장한다.
이를 위하여, 제2 레지스터 파일부(210)에서 레지스터(gr4)의 내용을 독출하여 제2 연산 장치(220)에 속하는 연산기(제2 EAG)로 입력되도록 연산기 네트워크가 설정된다.
또한, 제2 EAG의 가산 결과는 제2 EAG의 보유기에 기억된 후, 다음 사이클에서 제2 로드/저장부(230)로 전송된다.
그리고, 이 제2 로드/저장부(230)의 결과가 제5 레지스터 파일부(510)의 레지스터(fr4)에 기입되도록 네트워크가 설정된다.
도 9에 나타낸 제1행째의 명령 코드에 기술된 감산 명령(subicc)의 결과에 수반하는 조건 코드(icc0)가 0임을 나타내고 있는 경우, 조건 분기 명령(beq)은 edge exit로 분기하는 기계어 명령이다. 어레이 동작이 아닌 통상 동작 시(비어레이 동작 시)에 상기 조건 분기 명령(beq)은 종래의 조건 분기 명령으로서 실행된다.
한편, 어레이 동작 동안에, 상기 조건 코드(icc0)는 상술한 ‘어레이 동작 종결 조건’으로서 이용한다. 상기 조건 코드(icc0)가 감산 결과를 0으로 나타내고 있는 경우, 상기 조건 코드는 어레이 동작을 종결하고 통상 동작(비어레이 동작)으로 복귀하는 트리거(ARRAY-ABORT 신호)가 된다.
한편, 제1 연산 장치(120)에 의한 감산 명령 결과에 수반하는 조건 코드(icc0)는 제1 연산 장치(120)로부터 제2 연산 장치(220)로 바이패스할 수 있기 때문에, 최종적으로는 조건 코드를 제3 레지스터 파일부(310)의 레지스터(icc0)에 기입할 필요성이 없어진다.
이어서, 도 12에서 도 9에 나타낸 명령 코드의 제3행째의 기계어 명령이 해석되고 있다. 한편, 도 12에서는 이 제3행째의 명령 코드에 근거하는 설정 개소를 ‘S3’로 나타내고 있다.
이 제3행째의 명령 코드에는 2개의 로드 명령(ld)과, 1개의 SAD 명령(sad)이 기술되어 있다.
제1의 로드 명령(ld)은 레지스터(gr4)의 내용과 상수(-1276)를 가산하고, 그 결과를 주기억 어드레스로 하여 제3 캐시 메모리(340)를 참조하고, 제3 캐시 메모리(340)에서 독출한 값을 레지스터(fr5)에 저장한다.
이를 위하여, 먼저 제2 레지스터 파일부(210)의 레지스터(gr4)를 제3 레지스터 파일부(310)의 레지스터(gr4)로 전송되도록 한 연산기 네트워크가 설정된다.
게다가, 제3 레지스터 파일부(310)의 레지스터(gr4)의 내용이 독출되어 제3 연산 장치(320)에 속하는 연산기(제1 EAG)로 입력되도록 연산기 네트워크가 설정된다.
또한, 제1 EAG의 가산 결과는 제1 EAG의 보유기에 기억된 후, 다음 사이클에서 제3 로드/저장부(330)로 전송된다.
그리고, 제3 로드/저장부(330)의 결과가 제6 레지스터 파일부(610)의 레지스터(fr5)에 기입되도록 네트워크가 설정된다.
제2의 로드 명령(ld)은 제1의 로드 명령(ld)과 마찬가지로, 제3 레지스터 파일부(310)의 레지스터(gr4)의 내용과 상수(1276)(const.)를 가산하고, 그 결과를 주기억 어드레스로 하여 제3 캐시 메모리(340)를 참조하고, 상기 제3 캐시 메모리(340)로부터 독출한 값을 제6 레지스터 파일부(610)의 레지스터(fr6)에 저장한다.
이를 위하여, 제3 레지스터 파일부(310)의 레지스터(gr4)의 내용이 독출되어 제3 연산 장치(320)에 속하는 연산기(제2 EAG)로 입력되도록, 연산기 네트워크가 설정된다.
또한, 제2 EAG의 가산 결과는 제2 EAG의 보유기에 기억된 후, 다음 사이클에서 제3 로드/저장부(330)로 전송된다.
그리고, 제3 로드/저장부(330)의 결과가 제6 레지스터 파일부(610)의 레지스터(fr6)에 기입되도록 네트워크가 설정된다.
SAD 명령(sad)은 먼저 제1 로드/저장부(130)에 의해 로드된 제4 레지스터 파일부(410)의 레지스터(fr1) 및 레지스터(fr2)의 바이트별로 절대 차이(absolute differences)의 합을 구하고, 이 결과를 제5 레지스터 파일부(510)의 레지스터(fr1)에 기입하는 기계어 명령이다.
제1 로드/저장부(130)와 제3 연산 장치(320) 간의 바이패스를 이용하면, 제1 로드/저장부(130)는 제4 레지스터 파일부(410)의 레지스터(fr1) 및 레지스터(fr2)에 데이터를 기입하는 동시에, 제3 연산 장치(320)에 대해서도 데이터를 입력(ld-bypass)할 수 있다. 이에 따라, 최종적으로는 제4 레지스터 파일부(410)의 레지스터(fr1) 및 레지스터(fr2)로부터의 독출은 불필요해진다.
또한, SAD 명령(sad)의 결과가 제5 레지스터 파일부(510)의 레지스터(fr1)에 기입되도록 연산기 네트워크가 설정된다.
이어서, 도 13에서 도 9에 나타낸 명령 코드의 제4행째의 기계어 명령이 해석되고 있다. 한편, 도 13에서는 이 제4행째의 명령 코드에 근거하는 설정 개소를 ‘S4’로 나타내고 있다.
이 제4행째의 명령 코드에는 2개의 로드 명령(ld)과, 1개의 addi 명령과, 1개의 SAD 명령(sad)이 기술되어 있다.
제1의 로드 명령(ld)은 레지스터(gr4)의 내용과 상수(-4)(const.)를 가산하여 그 결과를 주기억 어드레스로 하여 제4 캐시 메모리(440)를 참조하고, 상기 제4 캐시 메모리(440)로부터 독출한 값을 제7 레지스터 파일부(710)의 레지스터(fr7)에 저장한다.
이를 위하여, 먼저 제3 레지스터 파일부(310)의 레지스터(gr4)의 내용이 제4 레지스터 파일부(410)의 레지스터(gr4)로 전송되도록, 연산기 네트워크가 설정된다.
그리고, 제4 레지스터 파일부(410)의 레지스터(gr4)의 내용이 독출되어 제4 연산 장치(420)에 속하는 연산기(제1 EAG)에 입력되도록 연산기 네트워크가 설정된다.
또한, 제1 EAG의 가산 결과는 제1 EAG의 보유기에 기억된 후, 다음 사이클에서 제4 로드/저장부(430)로 전송된다.
그리고, 제4 로드/저장부(430)의 결과가 제7 레지스터 파일부(710)의 레지스터(fr7)에 기입되도록 네트워크가 설정된다.
제2의 로드 명령(ld)은 제1의 로드 명령(ld)과 마찬가지로, 제3 레지스터 파일부(310)의 레지스터(gr4)의 내용과 상수(4)(const.)를 가산하여 그 결과를 주기억 어드레스로 하여 제4 캐시 메모리(440)를 참조하고, 제4 캐시 메모리(440)에서 독출한 값을 제7 레지스터 파일부(710)의 레지스터(fr8)에 저장한다.
이를 위하여, 제4 레지스터 파일부(410)에서 독출된 레지스터(gr4)의 내용이 제4 연산 장치(420)에 속하는 연산기(제2 EAG)로 입력되도록, 연산기 네트워크가 설정된다.
또한, 제2 EAG의 가산 결과는 제2 EAG의 보유기에 기억된 후, 다음 사이클에서 제4 로드/저장부(430)로 전송된다.
그리고, 제4 로드/저장부(430)의 결과가 제7 레지스터 파일부(710)의 레지스터(fr9)에 기입되도록 네트워크가 설정된다.
SAD 명령(sad)은 먼저 제2 로드/저장부(230)에 의해 로드된 제5 레지스터 파일부(510)의 레지스터(fr3) 및 레지스터(fr4)의 바이트별로 절대 차이(absolute differences)의 합을 구하고, 그 결과를 제6 레지스터 파일부(610)의 레지스터(fr3)에 기입하는 기계어 명령이다.
제2 로드/저장부(230)와 제4 연산 장치(420) 간의 바이패스를 이용하면, 제2 로드/저장부(230)는 제5 레지스터 파일부(510)의 레지스터(fr3) 및 레지스터(fr4)에 데이터를 기입하는 것과 동시에, 제4 연산 장치(420)에 대해서도 데이터를 입력(ld-bypass)할 수 있다. 이에 따라, 최종적으로는 제5 레지스터 파일부(510)의 레지스터(fr3) 및 레지스터(fr4)로부터의 독출은 불필요해진다.
그리고, SAD 명령(sad)의 결과가 제6 레지스터 파일부(610)의 레지스터(fr3)에 기입되도록 연산기 네트워크가 설정된다.
addi 명령은 레지스터(gr4)의 어드레스를 갱신하는 기계어 명령이다.
이 addi 명령이 검출되면, 레지스터(gr4)를 사용하는 연산 장치인 제1~제4 연산 장치(120~420)에 대하여 피드백 루프가 생성된다. 이들 피드백 루프의 생성에 의해, 제1~제4 연산 장치(120~420)의 로드 어드레스가 자동으로 갱신된다.
이어서, 도 14에서는 도 9에 나타낸 명령 코드의 제5행째의 기계어 명령이 해석되고 있다. 한편, 도 14에서는 이 제5행째의 명령 코드에 근거하는 설정 개소를 ‘S5’로 나타내고 있다.
이 제5행째의 명령 코드에는 1개의 SAD 명령(sad)과, 1개의 가산 명령(madd)이 기술되어 있다.
SAD 명령(sad)은 먼저 제3 로드/저장부(330)에 의해 로드된 제6 레지스터 파일부(610)의 레지스터(fr5) 및 레지스터(fr6)의 바이트별로 절대 차이의 합을 구하고, 그 결과를 제7 레지스터 파일부(710)의 레지스터(fr5)에 기입하는 기계어 명령이다.
제3 로드/저장부(330)와 제5 연산 장치(520) 간의 바이패스를 이용하면, 제3 로드/저장부(330)가 제6 레지스터 파일부(610)의 레지스터(fr5) 및 레지스터(fr6)에 데이터를 기입하는 것과 동시에, 제5 연산 장치(520)에 대해서도 데이터를 입력(ld-bypass)할 수 있다. 이에 따라, 최종적으로는 제6 레지스터 파일부(610)의 레지스터(fr5) 및 레지스터(fr6)로부터의 독출은 불필요해진다.
그리고, SAD 명령(sad)의 결과가 제7 레지스터 파일부(710)의 레지스터(fr5)에 기입되도록 연산기 네트워크가 설정된다.
가산 명령(madd)은 앞의 SAD 명령(sad)의 결과를 제7 레지스터 파일부(710)의 레지스터(fr1)에 누산하는 기계어 명령이다.
제5 레지스터 파일부(510)의 레지스터(fr1)에 대해서는, 제5 레지스터 파일부(510)와 제5 연산 장치(520) 간의 바이패스를 이용할 수 없기 때문에, 데이터가 제5 레지스터 파일부(510)로부터 독출된다. 제6 레지스터 파일부(610)의 레지스터(fr3)에 대해서는, 제4 연산 장치(420)에서 수행된 최근의 연산 결과가 바이패스(fr3-bypass)되어 제5 연산 장치(520)에 입력될 수 있다.
제5 연산 장치(520)의 연산 결과가 제7 레지스터 파일부(710)의 레지스터(fr1)에 저장되도록 연산기 네트워크가 설정된다.
이어서, 도 15에서는 도 9에 나타낸 명령 코드의 제6행째의 기계어 명령이 해석된다. 한편, 도 15에서는 이 제6행째의 명령 코드에 근거하는 설정 개소를 ‘S6’로 나타내고 있다.
이 제6행째의 명령 코드에는 1개의 SAD 명령(sad)과, 1개의 가산 명령(madd)이 기술되어 있다.
SAD 명령(sad)은 먼저 제4 로드/저장부(430)에 의해 로드된 제7 레지스터 파일부(710)의 레지스터(fr7) 및 레지스터(fr8)의 바이트별로 절대 차이의 합을 구하고, 그 결과를 제8 레지스터 파일부(810)의 레지스터(fr7)에 기입하는 기계어 명령이다.
제4 로드/저장부(430)와 제6 연산 장치(620) 간의 바이패스를 이용하면, 제4 로드/저장부(430)가 제7 레지스터 파일부(710)의 레지스터(fr7) 및 레지스터(fr8)에 데이터를 기입하는 것과 동시에, 제6 연산 장치(620)에 대해서도 데이터를 입력(ld-bypass)할 수 있다. 이 때문에, 최종적으로는 제7 레지스터 파일부(710)의 레지스터(fr7) 및 레지스터(fr8)로부터의 독출은 불필요해진다.
그리고, SAD 명령(sad)의 결과가 제8 레지스터 파일부(810)의 레지스터(fr7)에 기입되도록 연산기 네트워크가 설정된다.
가산 명령(madd)은 앞의 SAD 명령(sad)의 결과를 제8 레지스터 파일부(810)의 레지스터(fr1)에 누산하는 기계어 명령이다.
제7 레지스터 파일부(710)의 레지스터(fr1) 및 레지스터(fr5)에 대해서는 제5 연산 장치(520)에서 수행된 직전의 연산 결과가 바이패스(fr5, 1-bypass)되어 제6 연산 장치(620)에 입력할 수 있다.
제6 연산 장치(620)의 연산 결과가 제8 레지스터 파일부(810)의 레지스터(fr1)에 저장되도록 연산기 네트워크가 설정된다.
이어서, 도 16에서는 도 9에 나타낸 명령 코드의 제7행째의 기계어 명령이 해석된다. 한편, 도 16에서는 이 제7행째의 명령 코드에 근거하는 설정 개소를 ‘S7’으로 나타내고 있다.
이 제7행째의 명령 코드에는 1개의 가산 명령(madd)이 기술되어 있다.
가산 명령(madd)은 앞의 SAD 명령(sad)의 결과를 제9 레지스터 파일부(910)의 레지스터(fr1)에 누산하는 기계어 명령이다.
제8 레지스터 파일부(810)의 레지스터(fr1) 및 레지스터(fr7)에 대해서는 제6 연산 장치(620)에서 수행된 직전의 연산 결과가 바이패스(fr7, 1-bypass)되어 제7 연산 장치(720)에 입력할 수 있다.
제7 연산 장치(720)의 연산 결과가 제9 레지스터 파일부(910)의 레지스터(fr1)에 저장되도록 연산기 네트워크가 설정된다.
이어서, 도 17에서는 도 9에 나타낸 명령 코드의 제8행째의 기계어 명령이 해석된다. 한편, 도 17에서는 이 제8행째의 명령 코드에 근거하는 설정 개소를 ‘S8’으로 나타내고 있다.
이 제8행째의 명령 코드에는 1개의 보정 명령(msum)이 기술되어 있다.
보정 명령(msum)은 레지스터(fr1) 내부에서 상위 자리, 하위 자리 등으로 복수개로 분리된 부분합(partial sum)을 1개의 결과로 병합하는 명령(부분합을 가산하여 총합을 구하는 명령)이다. SAD 명령(SAD)이 1워드 중의 복수 바이트로 된 한 세트(set)부터 절대 차이(absolute differences)의 총합을 한번에 구하는 것이 어려울 경우, 상기 보정 명령에 의해 마지막에 상기 총합을 구할 수 있다.
연산에 필요한 레지스터(fr1)의 내용이 전단의 제7 연산 장치(720)로부터 바이패스(fr1-bypass)에 의해 제8 연산 장치(820)로 입력되고, 제8 연산 장치(820)의 연산 결과가 제10 레지스터 파일부(1010)의 레지스터(fr1)에 저장되도록 연산기 네트워크가 설정된다.
이어서, 도 18에서는 도 9에 나타낸 명령 코드의 제9행째의 기계어 명령이 해석된다. 한편, 도 18에서는 이 제9행째의 명령 코드에 근거하는 설정 개소를 ‘S9’으로 나타내고 있다.
이 제9행째의 명령 코드에는 1개의 조건부 세트 명령(cset)이 기술되어 있다.
조건부 세트 명령(cset)은 보정 명령(msum)에 의해 구한 총합이 레지스터(fr9)에 의해 주어지는 문턱값 미만인 경우에 ‘0’, 그 이외의 경우에 ‘1’을 제11 레지스터 파일부(1110)의 레지스터(fr1)에 저장하는 명령이다.
연산에 필요한 레지스터(fr1)의 내용은 전단의 제8 연산 장치(820)로부터 바이패스(fr1-bypass)에 의해 제9 연산 장치(920)로 입력되고, 상기 문턱값은 제1 레지스터 파일부(110)로부터 순차적으로 전송되어 제9 레지스터 파일부(910)의 레지스터(fr9)에 저장되고 이에 따라 제9 레지스터 파일부(910)의 레지스터(fr9)에서 독출되며, 또한 제9 연산 장치(920)의 연산 결과가 제11 레지스터 파일부(1110)의 레지스터(fr1)에 저장되도록 연산기 네트워크가 설정된다.
이어서, 도 19에서는 도 9에 나타낸 명령 코드의 제10행째의 기계어 명령이 해석된다. 한편, 도 19에서는 이 제10행째의 명령 코드에 근거하는 설정 개소를 ‘S10’으로 나타내고 있다.
이 제10행째의 명령 코드에는 1개의 저장 명령(stb)과, 1개의 addi 명령과, 1개의 무조건 분기 명령(bra)이 기술되어 있다.
저장 명령(stb)은 레지스터(gr5)의 내용과 상수(0)(const.)를 가산하고, 그 결과를 주기억 어드레스로 하여 저장 버퍼(STBF)에 데이터를 저장한다.
이를 위하여, 제10 레지스터 파일부(1010)의 레지스터(gr5)의 내용이 독출되어 제10 연산 장치(1020)에 속하는 연산기(EAG)로 입력되도록, 연산기 네트워크가 설정된다.
또한, EAG의 가산 결과는 EAG의 보유기에 기억된 후, 다음 사이클에서 제10 로드/저장부(1030)로 전송된다.
저장 버퍼(STBF)의 내용은 순차적으로 외부 메모리로 출력된다.
addi 명령은 레지스터(gr5)의 어드레스를 갱신하는 기계어 명령이다.
가산 명령이 검출되면, 레지스터(gr5)를 사용하는 연산 장치인 제10 연산 장치(1020)에 대하여, 피드백 루프가 생성된다. 이 피드백 루프의 생성에 의해, 제10 연산 장치(1020)의 저장 어드레스가 자동으로 갱신된다.
무조건 분기 명령(bra)이 검출된 경우, 후술하는 네트워크 설정 완료 프로세스가 실행된다.
이어서, 도 20에서는 최종적으로 불필요해지는 네트워크 설정 부분의 삭제가 행해진다.
상술한 바와 같이, 기계어 명령을 순차적으로 디코딩하여 네크워크 설정을 점진적으로 증가시키는 경우, 전단의 연산 장치의 실행 결과는 다음 단의 연상 장치에서 이용되도록 상기 다음 단의 연산 장치로 바이패스될 필요가 있고, 다음 단의 레지스터 파일부에 기입될 필요가 있다. 이는, 연산 장치의 실행 결과가 다음 단의 연산 장치에 한정되지 않고, 보다 후단의 연산 장치에서 사용되는 경우에도 대응하기 위해서이다.
그러나, 루프 구조를 모두 파악한 후에는 불필요한 레지스터 값의 전송을 생략할 수 있고, 마지막에 사용한 연산 장치 이후에 속하는 레지스터에 레지스트 값을 기입하는 것도 불필요하다. 이와 같이, 불필요한 네트워크의 설정 개소를 삭제하는 것이 네트워크 설정 완료 처리이다.
구체적으로, 도 20에서 X부분이 최종적으로 불필요하고 판단된 레지스터로의 기입 경로이다. 이 경우, 레지스터 파일부 간의 경로는 레지스터(gr4), 레지스터(gr5) 및 레지스터(fr9)만이 남게 된다.
마찬가지로, 캐시 메모리의 내용을 전송하는 도중에, 일부의 경로가 제거될 수 있다.
상술한 바와 같이, 본 발명에 있어서의 데이터 처리 장치 및 그 데이터 처리 방법은, 레지스터 파일부, 연산 장치 및 로드/저장부로 이루어지는 하나의 세트를 기본 구성으로 유지하면서, 복수 세트를 종렬 배치하고, 인접하는 레지스터 파일부 간에 필요한 레지스터 값을 전송시키는 구성으로 한다.
또한, 로드/저장부에 대해서도, 복수 세트를 종렬 배치함과 함께, 인접하는 소규모의 캐시 메모리 간에서 필요한 데이터를 전송시키는 구성으로 한다.
이와 같이 함으로써, 동시에 동작하는 레지스터 수와 연산 장치 수를 선형으로 증가시키면서, 임의의 번호의 레지스터 내용을 임의의 연산 장치에 공급하는 복잡함을 단일 세트의 기본 구조에 넣을 수 있다.
따라서, 본 발명에 있어서의 데이터 처리 장치 및 그 데이터 처리 방법은, 종래에 불가능했던 대규모의 병렬 처리를 실현할 수 있다.
또한, 본 발명에 있어서의 데이터 처리 장치 및 그 데이터 처리 방법은, 각 세트 간의 데이터 전송을 효율적으로 수행할 수 있고, 기존의 VLIW 형식의 기계어 명령을 이용할 수도 있다.
한편, 인접하는 레지스터 파일 간에서의 레지스터 값의 전송 기능에 대해서는, 예를 들어, 서로 동수(同數)의 물리적인 레지스터를 배치하는 구성을 이용할 수 있다. 또한, 보다 소수의 물리적인 레지스터와, 각 레지스터 번호의 대응 관계를 보유하는 표를 조합한 구성도 이용할 수 있다.
마찬가지로, 인접하는 소규모의 캐시 메모리 간에 있어서의 데이터의 전송 기능에 대해서는, 캐시 메모리 전체를 한번에 복제하는 구성을 이용할 수 있다. 또한, 전단의 캐시 메모리로부터 입력되는 차분 데이터만 다음 단으로 전송시킴으로써, 실질적으로 동일한 내용을 다음 단에 복제하는 구성을 이용해도 된다.
본 발명은 상술한 각 실시 형태로 한정되는 것은 아니며, 청구항에 나타낸 범위에서 다양한 변경이 가능하고, 다른 실시 형태에 각각 개시된 기술적 수단을 적저히 조합하여 얻어지는 실시 형태에 대해서도 본 발명의 기술적 범위에 포함된다.
한편, 실시 형태는 상술한 것 이외에, 이하와 같이 표현할 수도 있다.
본 발명에 있어서의 데이터 처리 장치는, 기계어 명령을 해석 실행하는 데이터 처리 장치로서, 기계어 명령 중에 기술되는 복수의 레지스터 번호에 대응하여 데이터를 일시적으로 보유하는 복수의 레지스터로 구성되는 제1단의 레지스터 파일 장치와, 이 제1단의 레지스터 파일 장치로부터 독출한 1개 또는 복수의 데이터를 입력으로서 연산을 행하는 제1단의 연산 장치와, 이 제1단의 연산 장치의 연산 결과를 일시적으로 보유하는 제1단의 연산 결과 보유 수단과, 상기 제1단의 레지스터 파일 장치와 동량 또는 동량 이상의 데이터를 보유하는 제2단의 레지스터 파일 장치와, 이 제2단의 레지스터 파일 장치로부터 독출한 1개 또는 복수의 데이터를 입력으로서 연산을 행하는 제2단의 연산 장치와, 이 제2단의 연산 장치의 연산 결과를 일시적으로 보유하는 제2단의 연산 결과 보유 수단을 구비하고, 상기 제2단의 레지스터 파일 장치는 상기 제1단의 레지스터 파일 장치의 내용을 입력으로 하고, 상기 제2단의 연산 장치는 상기 제1단의 연산 결과 보유 수단의 내용 또는 상기 제2단의 레지스터 파일 장치의 내용을 입력으로 하고, 상기 제1단의 연산 장치와 상기 제2단의 연산 장치가 일제히 동작한다.
상기 제1단의 레지스터 파일 장치와 동량 또는 동량 이상의 데이터를 보유하는 제3단의 레지스터 파일 장치와, 이 제3단의 레지스터 파일 장치로부터 독출한 1개 또는 복수의 데이터를 입력으로서 연산을 행하는 제3단의 연산 장치와, 이 제3단의 연산 장치의 연산 결과를 일시적으로 보유하는 제3단의 연산 결과 보유 수단을 구비하고, 상기 제3단의 레지스터 파일 장치는 상기 제1단의 연산 결과 보유 수단의 내용 또는 상기 제2단의 레지스터 파일 장치의 내용을 입력으로 하고, 상기 제3단의 연산 장치는 상기 제2단의 연산 결과 보유 수단의 내용 또는 상기 제3단의 레지스터 파일 장치의 내용을 입력으로 하고, 상기 제2단의 연산 장치와 상기 제3단의 연산 장치가 일제히 동작하는 것이 바람직하다.
N을 1 이상의 정수로 하는 제N단의 레지스터 파일 장치와 제N단의 연산 장치와 제N단의 연산 결과 보유 수단을 구비하고, 제N단의 연산 결과 보유 수단의 내용은, 이 내용을 제(N+2)단 이후의 연산 장치가 사용하는 경우에는 제(N+2)단의 레지스터 파일 장치에 기입하고, 이 내용을 제(N+2)단 이후의 연산 장치가 사용하지 않는 경우에는 제(N+2)단의 레지스터 파일 장치에 기입하지 않고 제(N+1)단의 연산 장치의 입력으로 하는 것이 바람직하다.
기계어 명령을 실행 중에, N을 2 이상의 정수로 하는 상기 제N단의 레지스터 파일 장치와 제N단의 연산 장치와 제N단의 연산 결과 보유 수단의 동작을 개시시키는 어레이 동작 개시 명령을 검출할 때까지 동안, 상기 제1단의 레지스터 파일 장치와 제1단의 연산 장치와 제1단의 연산 결과 보유 수단만 동작시키고, 상기 어레이 동작 개시 명령을 검출한 경우, 이 명령에 관련되는 연산 장치 제어 정보를 상기 제N단의 연산 장치에 세팅하고, 상기 제N단의 레지스터 파일 장치와 제N단의 연산 장치와 제N단의 연산 결과 보유 수단의 동작을 개시시키고, 상기 어레이 동작 개시 명령에 지시된 어레이 동작 종결 조건에 따라, 상기 제N단의 레지스터 파일 장치와 제N단의 연산 장치와 제N단의 연산 결과 보유 수단의 동작을 정지시키는 것이 바람직하다.
상기 제1단의 연산 장치가, 외부 메모리의 내용을 일시적으로 보유하는 캐시 메모리와, 로드 명령에 부수되는 어드레스 정보를 이용하여 이 캐시 메모리를 독출하는 수단과, 독출한 데이터를 일시적으로 저장하는 제1단의 로드 결과 보유 수단을 구비하고, 이 로드 결과 보유 수단으로부터 독출한 데이터를 후단의 연산 장치 또는 레지스터 파일 장치의 입력으로 하는 것이 바람직하다.
N을 2 이상의 정수로 하는 상기 제N단의 연산 장치가, 외부 메모리의 내용을 일시적으로 보유하는 캐시 메모리와, 로드 명령에 부수되는 어드레스 정보를 이용하여 이 캐시 메모리를 독출하는 수단과, 독출한 데이터를 일시적으로 저장하는 제N단의 로드 결과 보유 수단을 구비하고, 이 로드 결과 보유 수단으로부터 독출한 데이터를 후단의 연산 장치 또는 레지스터 파일 장치의 입력으로 하고, 또한 제(N-1)단의 연산 장치가 구비하는 캐시 메모리의 내용이 다음의 시각에서 제N단의 연산 장치가 구비하는 캐시 메모리에 반영되는 것이 바람직하다.
상기 로드 명령에 부수되는 어드레스 정보는, 상기 연산 장치가 구비하는, 로드 명령에 부수되는 어드레스 정보를 이용하여 이 캐시 메모리를 독출하는 수단 에 보유함과 함께, 1번의 로드 동작을 완료할 때마다 보유한 어드레스 정보를 로드 데이터폭만큼 증가 또는 감소시킴으로써, 자율적으로 연속 어드레스로부터 로드하는 것이 바람직하다.
상기 제1단의 캐시 메모리가, 복수의 뱅크로부터 구성되는 외부 메모리와의 접속 수단과, 상기 어레이 동작 개시 명령에 관련되는 기입처 캐시 메모리의 베이스 어드레스와 전송 데이터 길이로 구성되는 전송 정보에 근거해 데이터 전송을 행하는 데이터 전송 수단을 구비하고, 외부 메모리상의 복수의 서로 다른 어드레스로부터 동시에 복수의 데이터를 상기 제1단의 캐시 메모리에 연속 전송하는 것이 바람직하다.
복수의 뱅크로 구성되는 상기 외부 메모리가, 외부 I/O 장치와의 접속 수단과, 상기 어레이 동작 개시 명령에 관련되는 기입처 외부 메모리의 베이스 어드레스와 전송 워드 수로 구성되는 전송 정보에 근거해 데이터 전송을 행하는 데이터 전송 수단을 구비하고, 외부 I/O 장치로부터 복수의 데이터를 상기 외부 메모리의 가장 오래된 뱅크로 연속 전송하는 것이 바람직하다.
상기 로드 명령에 부수되는 어드레스 정보에 대응하는 영역이 상기 제1단의 캐시 메모리에 존재하지 않을 경우, 외부 메모리로부터 이 캐시 메모리로의 데이터 전송을 대기하고, 상기 어레이 동작 개시 명령에 관련되는 전송 워드 수에 관련하는 횟수만큼 후단의 연산 장치가 동작했을 때 상기 어레이 동작 종결 조건으로 하는 것이 바람직하다.
연산 결과를 저장 명령에 의해 상기 외부 메모리 또는 상기 외부 I/O 장치에 저장하거나, 또는, 다른 외부 메모리에 저장하거나, 또는, 다른 N단 어레이 구성의 제1의 캐시 메모리로의 입력으로 하는 것이 바람직하다.
이상과 같이, 본 발명에 있어서의 데이터 처리 장치는, 복수의 기계어 명령으로 이루어지는 명령 코드를 실행하기 위한 데이터 처리 장치로서, 상기 명령 코드를 보유하는 명령 메모리부와, 상기 명령 메모리부로부터 상기 명령 코드를 취출하여 디코딩하는 명령 인출/디코딩부와, 상기 명령 인출/디코딩부에 의해 디코딩되는 상기 명령 코드에 기술된 복수의 레지스터 번호 각각에 일대일로 대응하고, 또한 상기 각 레지스터 번호에 대응하는 데이터를 일시적으로 보유하는 복수의 제1 레지스터를 포함하는 제1 레지스터 파일부와, 상기 제1 레지스터 파일부의 각 제1 레지스터와 일대일로 대응하는 복수의 제2 레지스터를 포함하는 제2 레지스터 파일부를 포함하는 n(n은 1 이상의 정수)개의 레지스터 파일부와, 상기 제1 레지스터 파일부의 각 제1 레지스터의 독출 데이터를 이용해 연산을 실행하는 제1 연산부와, 제2 연산부를 포함하는 n개의 연산부와, 상기 제1 연산부의 연산 결과를 일시적으로 보유하는 제1 보유부를 포함하는 n개의 보유부를 구비하고, 상기 제1 레지스터 파일부는 자신의 각 제1 레지스터가 데이터를 보유하는 경우에는, 데이터를 보유하는 제1 레지스터에 대응하는 상기 제2 레지스터 파일부의 제2 레지스터에 당해 데이터를 전송함과 함께, 상기 제1 보유부는 자신이 보유하는 연산 결과를 상기 제2 연산부로 전송 가능하게 되어 있고, 상기 제2 연산부는 상기 제2 레지스터 파일부의 각 제2 레지스터의 독출 데이터 및 상기 제1 보유부에 의해 전송되는 연산 결과 중 적어도 어느 하나를 이용하여 연산을 실행하는 것을 특징으로 한다.
상기 데이터 처리 장치에서는, 제1 레지스터 파일부의 각 제1 레지스터의 데이터가, 제1 레지스터 파일부의 각 제1 레지스터에 대응하는 제2 레지스터 파일부의 각 제2 레지스터로 전송되고 있다.
이 때문에, 제2 연산부는 제1 레지스터 파일부의 제1 레지스터의 데이터가 제1 연산부의 연산 실행에 이용되고 있는 경우라도, 그 데이터를 제2 레지스터 파일부의 제2 레지스터로부터 독출하여 연산 실행에 이용할 수 있다.
또한, 제1 연산부의 연산 결과가, 제2 연산부로 전송되어 있다.
이 때문에, 제2 연산부는 제1 연산부에 의한 연산 종료 후, 즉시, 제1 연산부의 연산 결과를 연산 실행에 이용할 수 있다.
따라서, 상기 데이터 처리 장치에서는, 제1 및 제2 연산부에 의한 2개의 연산을 병렬적으로 실행시킬 수 있다.
상기 n개의 레지스터 파일부는 상기 제2 레지스터 파일부의 각 제2 레지스터와 일대일로 대응하는 복수의 제3 레지스터를 포함하는 제3 레지스터 파일부를 더 포함하고, 상기 n개의 연산부는 제3 연산부를 더 포함하고, 상기 n개의 보유부는 상기 제2 연산부의 연산 결과를 일시적으로 보유하는 제2 보유부를 더 포함하고 있고, 상기 제2 레지스터 파일부는 자신의 각 제2 레지스터가 데이터를 보유하는 경우에는, 데이터를 보유하는 제2 레지스터에 대응하는 상기 제3 레지스터 파일부의 제3 레지스터에 당해 데이터를 전송함과 함께, 상기 제2 보유부는 자신이 보유하는 연산 결과를 상기 제3 연산부로 전송 가능하게 되어 있고, 상기 제3 연산부는 상기 제3 레지스터 파일부의 각 제3 레지스터의 독출 데이터 및 상기 제2 보유부에 의해 전송되는 연산 결과 중 적어도 어느 하나를 이용하여 연산을 실행하는 것이 바람직하다.
이 경우, 제2 레지스터 파일부의 각 제2 레지스터의 데이터가, 제2 레지스터 파일부의 각 제2 레지스터에 대응하는 제3 레지스터 파일부의 각 제3 레지스터로 전송되어 있다.
이 때문에, 제3 연산부는 제2 레지스터 파일부의 제2 레지스터의 데이터가 제2 연산부의 연산 실행에 이용되고 있는 경우라도, 그 데이터를 제3 레지스터 파일부의 제3 레지스터로부터 독출하여 연산 실행에 이용할 수 있다.
또한, 제2 연산부의 연산 결과가 제3 연산부로 전송되어 있다.
이 때문에, 제3 연산부는 제2 연산부에 의한 연산 종료 후, 즉시, 제2 연산부의 연산 결과를 연산 실행에 이용할 수 있다.
따라서, 상기 데이터 처리 장치에서는, 제1, 제2 및 제3의 연산부에 의한 3개의 연산을 병렬적으로 실행시킬 수 있다.
상기 n개의 보유부에 포함되는 N번째 보유부는, 자신이 보유하는 연산 결과가 상기 n개의 연산부에 포함되는 (N+2)번째 이후의 연산부에 의한 연산 실행에 이용되는 경우에는, 당해 연산 결과를 상기 n개의 레지스터 파일부에 포함되는 (N+2)번째의 레지스터 파일부로 전송하는 한편, 자신이 보유하는 연산 결과가 상기 (N+2)번째 이후의 연산부에 의한 연산 실행에 이용되지 않는 경우에는, 당해 연산 결과를 상기 n개의 연산부에 포함되는 (N+1)번째 연산부로 전송하는 것이 바람직하다.
이 경우, N번째의 보유부가 보유하는 연산 결과가 (N+2)번째 이후의 연산부에 의한 연산 실행에 이용되지 않는 경우에는 (N+1)번째 연산부로 전송하고 있으므로, 이 경우, 레지스터 파일부 간에서의 불필요한 데이터 전송이 저감되고, 그 결과, 소비 전력을 보다 저하시킬 수 있다.
상기 명령 인출/디코딩부가 상기 n개의 레지스터 파일부에 포함되는 복수의 레지스터 파일부, 상기 n개의 연산부에 포함되는 복수의 연산부, 상기 n개의 보유부에 포함되는 복수의 보유부 각각을 동시에 동작시킬 수 있도록 기술된 명령 코드에 포함되는 동작 명령을 디코딩한 경우, 상기 동작 명령의 디코딩 결과에 근거해 상기 복수의 레지스터 파일부, 상기 복수의 연산부 및 상기 복수의 보유부를 동시에 동작시키고, 또한 상기 명령 인출/디코딩부의 동작을 정지시키는 것이 바람직하다.
이 경우, 복수의 레지스터 파일부, 복수의 연산부 및 복수의 보유부를 동시에 동작시키는 ‘어레이 동작’을 동작 명령의 디코딩 결과에 근거해 행할 수 있으므로, 이것들의 동시 동작을 보다 효율적으로 개시시킬 수 있다.
상기 동작 명령은 동시에 동작시켜야 하는 상기 복수의 레지스터 파일부, 상기 복수의 연산부 및 상기 복수의 보유부의 각 동작을 제어하기 위하여, 각각에 설정해야 하는 설정 정보와, 상기 복수의 레지스터 파일부, 상기 복수의 연산부 및 상기 복수의 보유부의 동시 동작을 정지해야 하는 동작 종결 조건을 포함하고, 상기 명령 인출/디코딩부가 상기 동작 명령을 디코딩할 때까지는, 상기 명령 인출/디코딩부, 상기 제1 레지스터 파일부, 상기 제1 연산부 및 상기 제1 보유부를 동시에 동작시키고, 상기 동작 명령을 디코딩한 경우, 상기 동작 명령의 디코딩 결과에 근거하여, 상기 명령 인출/디코딩부의 동작을 정지시키고, 또한 상기 복수의 레지스터 파일부, 상기 복수의 연산부 및 상기 복수의 보유부를 동시에 동작시키고, 상기 동작 명령에 포함되는 상기 동작 종결 조건이 만족되면, 상기 제1 레지스터 파일부, 상기 제1 연산부 및 상기 제1 보유부를 제외한 상기 복수의 레지스터 파일부, 상기 복수의 연산부 및 상기 복수의 보유부의 동작을 정지시키고, 또한 상기 명령 인출/디코딩부, 상기 제1 레지스터 파일부, 상기 제1 연산부 및 상기 제1 보유부를 동시에 동작시키는 것이 바람직하다.
이 경우, 동작 명령의 디코딩 결과에 근거해 개시된, 복수의 레지스터 파일부, 복수의 연산부 및 복수의 보유부의 동시 동작을, 동작 종결 조건이 만족되는지 여부에 따라 정지시킬 수 있다. 이 때문에, 명령 인출/디코딩부의 동작이 정지하고 있어도, 상기 명령 인출/디코딩부, 상기 제1 레지스터 파일부, 상기 제1 연산부 및 상기 제1 보유부를 동시에 동작시키는 ‘비어레이 동작’으로 되돌릴 수 있다.
상기 n개의 연산부 각각은 상기 데이터 처리 장치의 외부에 배치된 외부 메모리의 내용을 일시적으로 보유하는 캐시 메모리와, 상기 명령 코드에 포함되는 상기 로드 명령에 부수되는 어드레스 정보를 이용해 상기 캐시 메모리를 독출하는 로드부와, 상기 로드부에 의해 독출된 데이터를 일시적으로 보유하는 저장부를 포함하고, 상기 n개의 연산부에 포함되는 N번째 연산부는 자신의 저장부가 보유하는 데이터를 상기 n개의 연산부에 포함되는 (N+1)번째 이후의 연산부 및 상기 n개의 레지스터 파일부에 포함되는 (N+1)번째 이후의 레지스터 파일부로 전송 가능하게 되어 있는 것이 바람직하다.
이 경우, N번째 연산부의 저장부가 보유하는 데이터가 (N+1)번째 이후의 연산부 및 (N+1)번째 이후의 레지스터 파일부로 전송 가능하므로, (N+1)번째 이후의 연산부는 N번째 연산부에 의한 독출 데이터를 이용한 연산을 조기에 개시할 수가 있고, 그 결과, 각 연산부에 의한 연산을 보다 고속화시킬 수 있다.
상기 n개의 연산부에 포함되는 N번째 연산부는 자신의 캐시 메모리가 데이터를 보유하는 경우, 상기 n개의 연산부에 포함되는 (N+1)번째 연산부의 캐시 메모리로 전송 가능하게 되어 있는 것이 바람직하다.
이 경우, N번째 연산부의 캐시 메모리가 (N+1)번째 연산부의 캐시 메모리로 전송 가능하므로, (N+1)번째 연산부는 N번째 연산부의 캐시 메모리에 보유된 데이터를 이용한 연산을 조기에 개시할 수 있고, 그 결과, 각 연산부에 의한 연산을 보다 고속화시킬 수 있다.
상기 n개의 연산부 각각은 자신의 로드부에 의한 상기 캐시 메모리의 독출을 행하는 경우, 상기 로드 명령에 부수되는 어드레스 정보를 보유함과 함께, 상기 로드부에 의한 독출이 완료될 때마다 상기 보유한 어드레스 정보를 독출된 데이터폭만큼 증가 또는 감소시켜서, 상기 로드부에 의한 다음 독출을 위한 어드레스 정보를 생성하는 것이 바람직하다.
이 경우, 각 연산부는 다음 독출을 위한 어드레스 정보를 스스로 생성할 수 있으므로, 새로운 어드레스 정보를 취득하지 않고 다음 연산을 실행할 수 있기 때문에, 각 연산부에 의한 연산을 보다 고속화시킬 수 있다.
상기 제1 연산부는 상기 데이터 처리 장치의 외부에 배치된 외부 메모리와 직접 접속된 상기 캐시 메모리를 포함하고, 상기 캐시 메모리는 상기 동작 명령에 관련되는 기입처 어드레스와 전송 데이터 길이로 이루어지는 전송 정보에 근거해 데이터 전송을 행하는 데이터 전송 수단을 포함하고, 상기 데이터 전송 수단은 상기 외부 메모리상에 있어서의 서로 다른 복수의 어드레스로부터 동시에 복수의 데이터를 연속 전송하는 것이 바람직하다.
이 경우, 외부 메모리상에 있어서의 데이터를 보다 효율적으로 캐시 메모리로 전송할 수 있으므로, 각 연산부에 의한 연산을 보다 고속화시킬 수 있다.
상기 외부 메모리는 상기 동작 명령에 관련되는 기입처 어드레스와 전송 워드 수로 이루어지는 전송 정보에 근거해 데이터 전송을 행하는 데이터 전송 수단을 포함하고, 상기 데이터 전송 수단은 외부 I/O 장치로부터 복수의 데이터를 상기 외부 메모리의 가장 오래된 뱅크로 연속 전송하는 것이 바람직하다.
이 경우, 외부 I/O 장치로부터 데이터를 더욱 효율적으로 외부 메모리로 전송할 수 있으므로, 캐시 메모리의 데이터 갱신이 효율화되고, 그 결과, 각 연산부에 의한 연산을 더욱 고속화시킬 수 있다.
상기 제1 연산부는 자신의 캐시 메모리에 상기 로드 명령에 부수되는 어드레스 정보에 대응하는 영역이 존재하지 않는 경우, 외부 메모리로부터의 데이터 전송을 대기함과 함께, 2번째 이후의 연산부가 상기 동작 명령에 관련되는 전송 워드 수에 따른 횟수만큼 동작한 것을 상기 동작 종결 조건으로 하는 것이 바람직하다.
이 경우, 어레이 구조의 선두 단(段)인 제1 연산부에서만 데이터의 대기를 행하므로, 데이터 처리 장치 전체의 구성을 간략화할 수 있다. 또한, 복수의 동작 종결 조건이 존재하는 경우, 각 단에 분산하여 연산을 행함으로써 고속화를 실현할 수 있다.
[산업상 이용가능성]
본 발명은 복수의 기계어 명령을 고속으로 동시 실행하는 데이터 처리 장치에 적합하게 이용할 수 있다.
10…명령 메모리부
20…명령 인출부(명령 인출/디코딩부)
30…명령 디코딩부(명령 인출/디코딩부)
101, 102, 103, 104, 105, 106, 107, 108…데이터 처리 장치
110, 210, 310, 410, 510, 610, 710, 810, 910, 1010, 1110…레지스터 파일부
120, 220, 320, 420, 520, 620, 720, 820, 920, 1020…연산 장치(연산부, 보유부)
130, 230, 330, 430, 1030…로드/저장부(로드부, 저장부)
130, 230, 330, 430…캐시 메모리
150…외부 메모리

Claims (11)

  1. 복수의 행의 기계어 명령으로 이루어지는 명령 코드를 실행하기 위한 데이터 처리 장치로서,
    상기 명령 코드를 보유하는 명령 메모리부와,
    상기 명령 메모리부로부터 상기 명령 코드에 포함되는 상기 복수의 행의 기계어 명령을 취출하여, 상기 복수의 행의 기계어 명령을 디코딩하는 명령 인출/디코딩부와,
    상기 명령 인출/디코딩부에 의해 디코딩되는 상기 명령 코드에 기술된 복수의 레지스터 번호 각각에 일대일로 대응하고, 또한 상기 각 레지스터 번호에 대응하는 데이터를 일시적으로 보유하는 복수의 제1 레지스터를 포함하는 제1 레지스터 파일부와, 상기 제1 레지스터 파일부의 각 제1 레지스터와 일대일로 대응하는 복수의 제2 레지스터를 포함하는 제2 레지스터 파일부를 포함하는 n(n은 1 이상의 정수)개의 레지스터 파일부와,
    상기 제1 레지스터 파일부의 각 제1 레지스터의 독출 데이터를 이용해 상기 복수의 행의 기계어 명령 중 적어도 하나의 기계어 명령을 이용해 연산을 실행하는 제1 연산부와, 상기 복수의 행의 기계어 명령 중, 상기 제1 연산부가 이용한 기계어 명령과는 다른 기계어 명령을 이용해 연산을 실행하는 제2 연산부를 포함하는 n개의 연산부와,
    상기 제1 연산부가 연산을 실행했을 때의 상기 제1 연산부의 연산 결과의 출력처이고, 또한 상기 제1 연산부의 연산 결과를 일시적으로 보유하는 제1 보유부를 포함하는 n개의 보유부를 구비하고,
    상기 제1 레지스터 파일부는 상기 제1 연산부에 의한 연산 처리의 대상외였던 데이터를 보유하는 제1 레지스터에 대응하는 상기 제2 레지스터 파일부의 제2 레지스터에, 당해 데이터를 전송함과 함께,
    상기 제1 보유부는 자신이 상기 제1 연산부의 연산 결과를 보유하는 경우, 상기 제1 연산부의 연산 결과의 출력처를 상기 제2 연산부로 하여, 상기 제1 연산부의 연산 결과를 상기 제2 연산부로 전송하고,
    상기 제2 연산부는 상기 제2 레지스터 파일부의 각 제2 레지스터의 독출 데이터 및 상기 제1 보유부에 의해 전송되는 연산 결과 중 적어도 어느 하나를 이용하여 연산을 실행하고, 상기 제1 연산부에 의해 실행되는 연산과 병렬 처리하는 것을 특징으로 하는 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 n개의 레지스터 파일부는 상기 제2 레지스터 파일부의 각 제2 레지스터와 일대일로 대응하는 복수의 제3 레지스터를 포함하는 제3 레지스터 파일부를 더 포함하고,
    상기 n개의 연산부는 상기 복수의 행의 기계어 명령 중, 상기 제1 연산부 및 상기 제2 연산부가 이용한 기계어 명령과는 다른 기계어 명령을 이용해 연산을 실행하는 제3 연산부를 더 포함하고,
    상기 n개의 보유부는 상기 제2 연산부가 연산을 실행했을 때의 상기 제2 연산부의 연산 결과의 출력처이고, 또한 상기 제2 연산부의 연산 결과를 일시적으로 보유하는 제2 보유부를 더 포함하고 있고,
    상기 제2 레지스터 파일부는 상기 제2 연산부에 의한 연산 처리의 대상외였던 데이터를 보유하는 제2 레지스터에 대응하는 상기 제3 레지스터 파일부의 제3 레지스터에, 당해 데이터를 전송함과 함께,
    상기 제2 보유부는 자신이 상기 제2 연산부의 연산 결과를 보유하는 경우, 상기 제2 연산부의 연산 결과의 출력처를 상기 제3 연산부로 하여, 상기 제2 연산부의 연산 결과를 상기 제3 연산부로 전송하고,
    상기 제3 연산부는 상기 제3 레지스터 파일부의 각 제3 레지스터의 독출 데이터 및 상기 제2 보유부에 의해 전송되는 연산 결과 중 적어도 어느 하나를 이용하여 연산을 실행하고, 상기 제1 연산부에 의해 실행되는 연산 및 상기 제2 연산부에 의해 실행되는 연산과 병렬 처리하는 것을 특징으로 하는 데이터 처리 장치.
  3. 제1항에 있어서,
    상기 n개의 보유부에 포함되는 N(N은 1 이상의 정수로서, n 이하)번째 보유부는,
    자신이 보유하는 연산 결과가 상기 n개의 연산부에 포함되는 (N+2)번째 이후의 연산부에 의한 연산 실행에 이용되는 경우에는, 당해 연산 결과를 상기 n개의 레지스터 파일부에 포함되는 (N+2)번째 레지스터 파일부로 전송하는 한편,
    자신이 보유하는 연산 결과가 상기 (N+2)번째 이후의 연산부에 의한 연산 실행에 이용되지 않는 경우에는, 당해 연산 결과를 상기 n개의 연산부에 포함되는 (N+1)번째 연산부로 전송하는 것을 특징으로 하는 데이터 처리 장치.
  4. 제1항에 있어서,
    상기 명령 인출/디코딩부가 상기 n개의 레지스터 파일부에 포함되는 복수의 레지스터 파일부, 상기 n개의 연산부에 포함되는 복수의 연산부, 상기 n개의 보유부에 포함되는 복수의 보유부 각각을 동시에 동작 시킬 수 있도록 기술된 명령 코드에 포함되는 동작 명령을 디코딩한 경우, 상기 동작 명령의 디코딩 결과에 근거해 상기 복수의 레지스터 파일부, 상기 복수의 연산부 및 상기 복수의 보유부를 동시에 동작 시키고, 또한 상기 명령 인출/디코딩부의 동작을 정지시키는 것을 특징으로 하는 데이터 처리 장치.
  5. 제4항에 있어서,
    상기 동작 명령은, 동시에 동작 시켜야 하는 상기 복수의 레지스터 파일부, 상기 복수의 연산부 및 상기 복수의 보유부의 각 동작을 제어하기 위해 각각에 설정해야 하는 설정 정보와, 상기 복수의 레지스터 파일부, 상기 복수의 연산부 및 상기 복수의 보유부의 동시 동작을 정지해야 하는 동작 종결 조건을 포함하고,
    상기 명령 인출/디코딩부가 상기 동작 명령을 디코딩할 때까지 상기 명령 인출/디코딩부, 상기 제1 레지스터 파일부, 상기 제1 연산부 및 상기 제1 보유부를 동시에 동작 시키고,
    상기 동작 명령을 디코딩한 경우, 상기 동작 명령의 디코딩 결과에 근거해, 상기 명령 인출/디코딩부의 동작을 정지시키고, 또한 상기 복수의 레지스터 파일부, 상기 복수의 연산부 및 상기 복수의 보유부를 동시에 동작 시키고,
    상기 동작 명령에 포함되는 상기 동작 종결 조건이 만족되면, 상기 제1 레지스터 파일부, 상기 제1 연산부 및 상기 제1 보유부를 제외한 상기 복수의 레지스터 파일부, 상기 복수의 연산부 및 상기 복수의 보유부의 동작을 정지시키고, 또한 상기 명령 인출/디코딩부, 상기 제1 레지스터 파일부, 상기 제1 연산부 및 상기 제1 보유부를 동시에 동작 시키는 것을 특징으로 하는 데이터 처리 장치.
  6. 제1항에 있어서,
    상기 n개의 연산부 각각은,
    상기 데이터 처리 장치의 외부에 배치된 외부 메모리의 내용을 일시적으로 보유하는 캐시 메모리와,
    상기 명령 코드에 포함되는 로드 명령에 부수되는 어드레스 정보를 이용해 상기 캐시 메모리를 독출하는 로드부와,
    상기 로드부에 의해 독출된 데이터를 일시적으로 보유하는 저장부를 포함하고,
    상기 n개의 연산부에 포함되는 N번째 연산부는, 자신의 저장부가 보유하는 데이터를 상기 n개의 연산부에 포함되는 (N+1)번째 이후의 연산부 및 상기 n개의 레지스터 파일부에 포함되는 (N+1)번째 이후의 레지스터 파일부로 전송 가능하게 되어 있는 것을 특징으로 하는 데이터 처리 장치.
  7. 제6항에 있어서,
    상기 n개의 연산부에 포함되는 N번째 연산부는, 자신의 캐시 메모리가 데이터를 보유하는 경우, 상기 n개의 연산부에 포함되는 (N+1)번째 연산부의 캐시 메모리로 전송 가능하게 되어 있는 것을 특징으로 하는 데이터 처리 장치.
  8. 제6항 또는 제7항에 있어서,
    상기 n개의 연산부 각각은, 자신의 로드부에 의한 상기 캐시 메모리의 독출을 행하는 경우, 상기 로드 명령에 부수되는 어드레스 정보를 보유함과 함께, 상기 로드부에 의한 독출이 완료될 때마다, 상기 보유한 어드레스 정보를 독출된 데이터폭만큼 증가 또는 감소시켜서, 상기 로드부에 의한 다음 독출을 위한 어드레스 정보를 생성하는 것을 특징으로 하는 데이터 처리 장치.
  9. 제4항 또는 제5항에 있어서,
    상기 제1 연산부는 상기 데이터 처리 장치의 외부에 배치된 외부 메모리와 직접 접속된 캐시 메모리를 포함하고,
    상기 캐시 메모리는 상기 동작 명령에 관련되는 기입처 어드레스와 전송 데이터 길이로 이루어지는 전송 정보에 근거해 데이터 전송을 행하는 데이터 전송 수단을 포함하고,
    상기 데이터 전송 수단은 상기 외부 메모리상에 있어서의 서로 다른 복수의 어드레스로부터 동시에 복수의 데이터를 연속 전송하는 것을 특징으로 하는 데이터 처리 장치.
  10. 제9항에 있어서,
    상기 외부 메모리는 상기 동작 명령에 관련되는 기입처 어드레스와 전송 워드 수로 이루어지는 전송 정보에 근거해 데이터 전송을 행하는 데이터 전송 수단을 포함하고,
    상기 데이터 전송 수단은 외부 I/O 장치로부터 복수의 데이터를, 상기 외부 메모리를 구성하는 복수의 뱅크 중 가장 오래된 데이터를 저장하는 뱅크로 연속 전송하는 것을 특징으로 하는 데이터 처리 장치.
  11. 제5항에 있어서,
    상기 제1 연산부는 자신의 캐시 메모리에 상기 명령 코드에 포함된 로드 명령에 부수되는 어드레스 정보에 대응하는 데이터가 존재하지 않는 경우, 외부 메모리로부터의 데이터 전송을 대기함과 함께, 2번째 이후의 연산부가 상기 동작 명령에 관련되는 전송 워드 수에 따른 횟수만큼 동작한 것을 상기 동작 종결 조건으로 하는 것을 특징으로 하는 데이터 처리 장치.
KR1020117010698A 2008-10-14 2009-10-13 데이터 처리 장치 KR101586770B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2008-265312 2008-10-14
JP2008265312 2008-10-14

Publications (2)

Publication Number Publication Date
KR20110084915A KR20110084915A (ko) 2011-07-26
KR101586770B1 true KR101586770B1 (ko) 2016-01-19

Family

ID=42106414

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117010698A KR101586770B1 (ko) 2008-10-14 2009-10-13 데이터 처리 장치

Country Status (5)

Country Link
US (1) US20110264892A1 (ko)
EP (1) EP2352082B1 (ko)
JP (1) JP5279046B2 (ko)
KR (1) KR101586770B1 (ko)
WO (1) WO2010044242A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6164616B2 (ja) * 2012-03-16 2017-07-19 国立大学法人 奈良先端科学技術大学院大学 データ供給装置及びデータ処理装置
KR101975534B1 (ko) 2012-09-11 2019-05-07 삼성전자주식회사 연산기능을 갖는 반도체 메모리 장치
GB2519108A (en) * 2013-10-09 2015-04-15 Advanced Risc Mach Ltd A data processing apparatus and method for controlling performance of speculative vector operations
GB2576572B (en) * 2018-08-24 2020-12-30 Advanced Risc Mach Ltd Processing of temporary-register-using instruction
GB2584268B (en) * 2018-12-31 2021-06-30 Graphcore Ltd Load-Store Instruction
US11237827B2 (en) 2019-11-26 2022-02-01 Advanced Micro Devices, Inc. Arithemetic logic unit register sequencing
US11862289B2 (en) 2021-06-11 2024-01-02 International Business Machines Corporation Sum address memory decoded dual-read select register file

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0883264A (ja) 1994-09-12 1996-03-26 Nippon Telegr & Teleph Corp <Ntt> 1次元シストリックアレイ型演算器とそれを用いたdct/idct演算装置
JP3547139B2 (ja) * 1995-03-17 2004-07-28 株式会社 日立製作所 プロセッサ
US6665792B1 (en) * 1996-11-13 2003-12-16 Intel Corporation Interface to a memory system for a processor having a replay system
JP2000259609A (ja) * 1999-03-12 2000-09-22 Hitachi Ltd データ処理プロセッサおよびシステム
JP2001147799A (ja) * 1999-10-01 2001-05-29 Hitachi Ltd データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法
JP3674515B2 (ja) 2000-02-25 2005-07-20 日本電気株式会社 アレイ型プロセッサ
US7308559B2 (en) * 2000-02-29 2007-12-11 International Business Machines Corporation Digital signal processor with cascaded SIMD organization
JP2003099249A (ja) * 2001-07-17 2003-04-04 Sanyo Electric Co Ltd データ処理装置
US7069372B1 (en) * 2001-07-30 2006-06-27 Cisco Technology, Inc. Processor having systolic array pipeline for processing data packets
JP3528922B2 (ja) 2001-08-31 2004-05-24 日本電気株式会社 アレイ型プロセッサ、データ処理システム
US7263602B2 (en) * 2002-08-16 2007-08-28 Carnegie Mellon University Programmable pipeline fabric utilizing partially global configuration buses
US20040128482A1 (en) * 2002-12-26 2004-07-01 Sheaffer Gad S. Eliminating register reads and writes in a scheduled instruction cache
US8024549B2 (en) * 2005-03-04 2011-09-20 Mtekvision Co., Ltd. Two-dimensional processor array of processing elements

Also Published As

Publication number Publication date
EP2352082A4 (en) 2012-04-11
EP2352082A1 (en) 2011-08-03
US20110264892A1 (en) 2011-10-27
KR20110084915A (ko) 2011-07-26
JP5279046B2 (ja) 2013-09-04
WO2010044242A1 (ja) 2010-04-22
JPWO2010044242A1 (ja) 2012-03-15
EP2352082B1 (en) 2018-11-28

Similar Documents

Publication Publication Date Title
US5333280A (en) Parallel pipelined instruction processing system for very long instruction word
KR101586770B1 (ko) 데이터 처리 장치
US5450556A (en) VLIW processor which uses path information generated by a branch control unit to inhibit operations which are not on a correct path
US6178498B1 (en) Storing predicted branch target address in different storage according to importance hint in branch prediction instruction
US10114647B2 (en) Reducing data hazards in pipelined processors to provide high processor utilization
US5131086A (en) Method and system for executing pipelined three operand construct
US7484078B2 (en) Pipelined asynchronous instruction processor having two write pipeline stages with control of write ordering from stages to maintain sequential program ordering
KR20180137521A (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
US5274777A (en) Digital data processor executing a conditional instruction within a single machine cycle
CN108139911A (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
KR101545701B1 (ko) 프로세서 및 그 명령어 번들 복원 방법
US20050149912A1 (en) Dynamic online optimizer
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
KR102295677B1 (ko) 연속적인 데이터 병렬처리가 가능한 병렬 처리장치
US8055883B2 (en) Pipe scheduling for pipelines based on destination register number
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
US7437544B2 (en) Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction
JP2004503872A (ja) 共同利用コンピュータシステム
US20130232317A1 (en) Vector processing apparatus and vector processing method
KR102358612B1 (ko) 연속적인 데이터 병렬처리가 가능한 병렬 처리장치
JP3771682B2 (ja) ベクトル処理装置
JP2002318689A (ja) 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法
JP2015184979A (ja) 演算装置および命令フェッチ方法
JP5170021B2 (ja) ベクトル演算装置およびベクトル演算方法
JP2007087264A (ja) プロセッサ、コンパイラ装置及びプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 5