KR20040086529A - 벡터 데이터의 어드레스 참조 방법 및 벡터 프로세서 - Google Patents

벡터 데이터의 어드레스 참조 방법 및 벡터 프로세서 Download PDF

Info

Publication number
KR20040086529A
KR20040086529A KR1020040011855A KR20040011855A KR20040086529A KR 20040086529 A KR20040086529 A KR 20040086529A KR 1020040011855 A KR1020040011855 A KR 1020040011855A KR 20040011855 A KR20040011855 A KR 20040011855A KR 20040086529 A KR20040086529 A KR 20040086529A
Authority
KR
South Korea
Prior art keywords
register
address
vector
index
stored
Prior art date
Application number
KR1020040011855A
Other languages
English (en)
Other versions
KR100539112B1 (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 KR20040086529A publication Critical patent/KR20040086529A/ko
Application granted granted Critical
Publication of KR100539112B1 publication Critical patent/KR100539112B1/ko

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B62LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
    • B62DMOTOR VEHICLES; TRAILERS
    • B62D5/00Power-assisted or power-driven steering
    • B62D5/06Power-assisted or power-driven steering fluid, i.e. using a pressurised fluid for most or all the force required for steering a vehicle
    • B62D5/08Power-assisted or power-driven steering fluid, i.e. using a pressurised fluid for most or all the force required for steering a vehicle characterised by type of steering valve used
    • B62D5/087Sliding spool valves
    • 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
    • G06F9/355Indexed addressing
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B62LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
    • B62DMOTOR VEHICLES; TRAILERS
    • B62D5/00Power-assisted or power-driven steering
    • B62D5/06Power-assisted or power-driven steering fluid, i.e. using a pressurised fluid for most or all the force required for steering a vehicle
    • B62D5/07Supply of pressurised fluid for steering also supplying other consumers ; control thereof
    • B62D5/075Supply of pressurised fluid for steering also supplying other consumers ; control thereof using priority valves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60YINDEXING SCHEME RELATING TO ASPECTS CROSS-CUTTING VEHICLE TECHNOLOGY
    • B60Y2304/00Optimising design; Manufacturing; Testing
    • B60Y2304/05Reducing production costs, e.g. by redesign
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60YINDEXING SCHEME RELATING TO ASPECTS CROSS-CUTTING VEHICLE TECHNOLOGY
    • B60Y2304/00Optimising design; Manufacturing; Testing
    • B60Y2304/07Facilitating assembling or mounting
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60YINDEXING SCHEME RELATING TO ASPECTS CROSS-CUTTING VEHICLE TECHNOLOGY
    • B60Y2400/00Special features of vehicle units
    • B60Y2400/40Actuators for moving a controlled member
    • B60Y2400/404Electro-magnetic actuators, e.g. with an electromagnet not rotating for moving a clutching member
    • B60Y2400/4045Electro-magnetic valves, i.e. solenoids
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60YINDEXING SCHEME RELATING TO ASPECTS CROSS-CUTTING VEHICLE TECHNOLOGY
    • B60Y2410/00Constructional features of vehicle sub-units
    • B60Y2410/10Housings

Abstract

본 발명은 간접 지표 벡터 참조를 보다 효율적으로 행하기 위한 것이다.
인덱스에 의해서 지정된 벡터 레지스터의 요소 레지스터 또는 스칼라 레지스터를 다수의 영역으로 분할하고, 분할한 영역 중 어느 하나를 선택함으로써, 소정의 인덱스 벡터(지표 벡터)를 취득하는 것으로 하고 있다. 따라서, 1개의 벡터 레지스터에, 실질적으로 다수의 인덱스 벡터를 격납할 수 있게 되어, 벡터 레지스터를 효율적으로 사용하는 것이 가능해진다. 또, 인덱스 벡터를 준비하는 절차로서는, 1개의 인덱스 벡터의 경우와 동일하기 때문에, 프로그램의 코드 사이즈나 처리 사이클이 거의 증가하지 않는다. 즉, 본 발명에 의하면, 간접 지표 벡터 참조를 보다 효율적으로 행하는 것이 가능해진다.

Description

벡터 데이터의 어드레스 참조 방법 및 벡터 프로세서{METHOD FOR REFERRING TO ADDRESS OF VECTOR DATA AND VECTOR PROCESSOR}
본 발명은, 벡터 데이터의 독출 또는 기입에서의 어드레스 참조 방법 및 벡터 프로세서에 관한 것이다.
종래, 화상 처리 등에서, 불규칙하게 메모리 상의 데이터를 독출 또는 기입하는 것이 행해지고 있고, 그와 같은 처리를 효율적으로 행하기 위해서 다양한 방법이 제안되어 있다.
예를 들면, 화상 처리에서, 1장의 화상 데이터 중에서, 특정한 블록의 데이터를 메모리로부터 레지스터에 격납하는 경우, 블록의 1행분의 화소 데이터를 레지스터에 격납한 후, 블록의 다음 행의 화소 데이터를 읽어 들이기 위해서, 메모리 상의 소정 길이 떨어진 어드레스가 참조된다.
이와 같이, 복잡한 어드레스 참조를 행하기 위한 방법으로서, 참고 문헌「슈퍼 컴퓨터」(옴사, 長島重夫, 田中義一저)에 기재된 기술이 알려져 있다.
본 문헌에서는, 다차원 배열 데이터를 메모리로부터 벡터 레지스터에 읽어 들이거나, 벡터 레지스터로부터 메모리에 기입하거나 하는 경우에, 간접 지표 벡터 참조를 이용하는 기술이 개시되어 있다.
간접 지표 벡터 참조란, 메모리 상의 참조하는 어드레스 순서를 격납한 리스트(지표 벡터)를 준비해 두고, 그 리스트를 순서대로 참조함으로써, 간접적으로 메모리 상의 소정의 어드레스를 참조하는 방식이다.
이와 같은 간접 지표 벡터 참조를 이용함으로써, 메모리 상의 복잡한 어드레스 참조를 행하는 것이 가능해진다.
(비특허 문헌 1)
長島重夫, 田中義一저「슈퍼 컴퓨터」옴사, p.35-41
그러나, 종래의 기술에서는, 지표 벡터를 벡터 레지스터에 격납해 둘 필요가 있기 때문에, 이하와 같은 문제가 발생하고 있었다.
첫번째로, 지표 벡터를 준비해 두는 절차가 필요하게 되기 때문에, 프로그램의 코드 사이즈나 처리 사이클수가 증가하여 버린다.
두번째로, 준비해 둔 지표 벡터가 증가하면, 지표 벡터를 격납해 둔 벡터 레지스터도 증가하기 때문에, 원래의 연산 처리에 이용하는 레지스터 리소스가 부족하여, 연산 효율의 저하를 초래해 버린다.
본 발명의 과제는, 간접 지표 벡터 참조를 보다 효율적으로 행하는 것이다.
도 1은, 로드 명령 또는 스토어 명령의 포맷을 도시하는 도면,
도 2는, 인덱스 수식 어드레싱의 경우에서, 익스텐션에 의해서 나타내지는 코드와, 어드레스 수식의 확장 사양의 대응 관계를 도시하는 도면,
도 3은, 포스트·레지스터·업데이트·어드레싱의 경우에서, 익스텐션에 의해서 나타내지는 코드와, 어드레스 수식의 확장 사양의 대응 관계를 도시하는 도면,
도 4는, 본 실시 형태에 관한 벡터 프로세서(1)의 구성을 도시하는 도면,
도 5는, 로드 유닛(50)의 내부 구성을 도시하는 블록도,
도 6은, 어드레스 연산 회로(54)의 구성예를 도시하는 도면,
도 7은, 인덱스 수식 어드레싱의 경우에서, 익스텐션에 의해서 나타내지는 코드와, 어드레스 수식의 확장 사양의 대응 관계를 도시하는 도면,
도 8은, 포스트·레지스터·업데이트·어드레싱의 경우에서, 익스텐션에 의해서 나타내지는 코드와, 어드레스 수식의 확장 사양의 대응 관계를 도시하는 도면,
도 9는, 본 실시 형태에 관한 벡터 프로세서(2)의 구성을 도시하는 도면,
도 10은, 레지스터 스위칭 패턴의 데이터 구성을 도시하는 도면,
도 11은, 로드 유닛(150)의 내부 구성을 도시하는 블록도,
도 12는, 어드레스 연산 회로(154)의 구성예를 도시하는 도면,
도 13은, 레지스터 스위칭 패턴을 명령 코드의 인덱스 필드에 포함시키는 경우의 데이터 구성을 도시하는 도면,
도 14는, 레지스터 스위칭 패턴을 명령 코드의 인덱스 필드에 포함시키는 경우의 어드레스 연산 회로(154)의 구성을 도시하는 도면이다.
<도면의 주요부분에 대한 부호의 설명>
1, 2 : 벡터 프로세서 10, 110 : 메모리
20, 120 : 메모리 제어부 30, 130 : 명령 페치부
40, 140 : 레지스터 파일 50, 50 : 로드 유닛
51, 151 : 명령 파이프 라인 제어부
52, 152 : 인덱스 레지스터 결정 회로
53, 153 : 데스티네이션 레지스터 결정 회로
54, 154 : 어드레스 연산 회로
54a, 154a : I레지스터 54b, 154b : T레지스터
54c∼54e, 154c∼154e, 154g : MUX(멀티 플렉서)
54f, 154f : 가산기 145h : J레지스터
154i : 시프터
55, 56, 155, 156 : PR(파이프 라인 레지스터)
57, 157 : 레지스터 60, 160 : 스토어 유닛
70, 170 : 연산 유닛
이상의 과제를 해결하기 위해서, 본 발명은,
지표 벡터를 이용하여, 벡터 데이터의 독출 또는 기입에서의 메모리 어드레스의 참조를 행하는 어드레스 참조 방법에 있어서, 지표 벡터의 요소를 격납하는 요소 격납용 레지스터(예를 들면, 도 4의 레지스터 파일(40)에서의 인덱스 벡터를격납하고 있는 레지스터)를 다수 영역(예를 들면, 상위 및 하위의 영역)으로 분할하여, 각 영역에 소정의 코드를 격납하고, 상기 지표 벡터의 요소 격납용 레지스터 각각의 소정 영역에 격납된 코드를 이용하여, 다수의 지표 벡터를 생성 가능하게 하는 것을 특징으로 하고 있다.
예를 들면, 발명의 실시 형태에서의 명령 코드 내의 "익스텐션"에 의해서, 인덱스 레지스터에서 분할된 어느 하나의 영역을 선택한다. 그리고, 선택된 영역의 코드에 의해서, 지표 벡터(인덱스 벡터)의 요소가 결정되고, 소정의 메모리 어드레스를 지정하는 지표 벡터가 생성된다.
또, 상기 요소 격납용 레지스터의 각 영역은, 상기 지표 벡터의 참조 기준 어드레스(예를 들면, 베이스 어드레스)에 대한 상대 어드레스를 나타내는 코드를 격납하고, 상기 요소 격납용 레지스터 각각의 분할된 영역 중, 선택된 영역의 코드(예를 들면, 상위 16비트 또는 하위 16비트 등)와, 이 기준 어드레스에 기초하여, 참조처의 메모리 어드레스인 타깃 어드레스(메모리 상의 참조 어드레스)를 산출하는 것을 특징으로 하고 있다.
이 방법은, 발명의 실시 형태에서의 인덱스 수식(修飾) 어드레싱에 관련된다.
또, 요소 격납용 레지스터에서의 분할된 영역 중 어느 것을 선택할지는, 명령 코드 중에서 지정하거나, 선택하는 영역을 지정하는 지정 패턴을 레지스터 등에 기억해 두고, 기억된 지정 패턴을 입력하여 영역을 지정하는 것이 가능하다.
또, 상기 지표 벡터를 벡터 레지스터에 격납하고, 이 벡터 레지스터의 각 요소 레지스터를 분할한 각 영역에, 상기 상대 어드레스를 나타내는 코드를 격납하는 것을 특징으로 하고 있다.
또, 상기 요소 격납용 레지스터의 각 영역은, 상기 지표 벡터의 참조 기준 어드레스에 대한 상대 어드레스를 나타내는 코드를 격납하고, 상기 요소 격납용 레지스터 각각의 분할된 영역 중, 선택된 영역의 코드와, 이 기준 어드레스에 기초하여, 참조처의 메모리 어드레스인 타깃 어드레스를 산출하고, 산출된 타깃 어드레스를 새로운 참조 기준 어드레스로 하는 것을 특징으로 하고 있다.
이 방법은, 발명의 실시 형태에서의 포스트·레지스터·업데이트·어드레싱에 관련된다.
또, 상기 상대 어드레스를 나타내는 코드를 상기 요소 격납용 레지스터로서의 스칼라 레지스터에 격납하고, 이 스칼라 레지스터를 분할한 각 영역에, 상기 상대 어드레스를 나타내는 코드를 격납하는 것을 특징으로 하고 있다.
또, 상기 벡터 데이터의 독출 또는 기입에 관한 벡터 명령의 실행 중에, 상기 분할된 각 영역 중, 선택하는 영역을 동적으로 변화시키는 것을 특징으로 하고 있다.
또, 상기 요소 격납용 레지스터의 상기 분할된 각 영역 중, 선택하는 영역을 지정하기 위한 지정 패턴을 소정의 레지스터에 격납하고, 이 지정 패턴에 기초하여 상기 분할된 영역을 지정함으로써, 소정의 지표 벡터를 생성하는 것을 특징으로 하고 있다.
또, 제1 지표 벡터의 요소가 격납된 상기 요소 격납용 레지스터를 포함하는제1 레지스터(예를 들면, 발명의 실시 형태 중의「인덱스 레지스터」)와, 제2 지표 벡터의 요소가 격납된 상기 요소 격납용 레지스터를 포함하는 제2 레지스터(예를 들면, 도 9의 서브인덱스 레지스터(141, 142))를 준비하고, 제1 및 제2 레지스터 각각에서의 소정 영역에 격납된 코드를 이용하여, 다수의 지표 벡터를 생성 가능하게 하는 것을 특징으로 하고 있다.
또, 본 발명은,
지표 벡터를 이용하여, 벡터 데이터의 독출 또는 기입에서의 메모리 어드레스의 참조를 행하는 벡터 프로세서에 있어서, 지표 벡터의 요소를 격납하는 요소 격납용 레지스터(예를 들면, 발명의 실시 형태 중의「인덱스 레지스터」의 요소 레지스터)를 구비하고, 이 요소 격납용 레지스터는, 다수 영역으로 분할되어 각 영역에 소정의 코드가 격납되며, 이 요소 격납용 레지스터 각각의 소정 영역에 격납된 코드를 이용하여, 다수의 지표 벡터를 생성 가능한 것을 특징으로 하고 있다.
또, 제1 지표 벡터의 요소가 격납된 상기 요소 격납용 레지스터를 포함하는 제1 레지스터(예를 들면, 발명의 실시 형태 중의「인덱스 레지스터」)와, 제2 지표 벡터의 요소가 격납된 상기 요소 격납용 레지스터를 포함하는 제2 레지스터(예를 들면, 도 9의 서브인덱스 레지스터(141, 142))를 구비하고, 제1 및 제2 레지스터 각각에서의 소정 영역에 격납된 코드를 이용하여, 다수의 지표 벡터를 생성 가능한 것을 특징으로 하고 있다.
여기에서, 제1 레지스터 및 제2 레지스터의 요소 격납용 레지스터에서의 분할된 영역 중 어느 것을 선택할지는, 명령 코드 중에서 지정하거나, 선택하는 영역을 지정하는 지정 패턴을 레지스터 등에 기억해 두고, 기억된 지정 패턴을 입력하여 영역을 지정하는 것이 가능하다.
본 발명에 의하면, 벡터 레지스터의 요소 레지스터 또는 스칼라 레지스터를 다수의 영역으로 분할하고, 각각의 영역에 지표 벡터의 요소가 되는 소정의 코드를 격납한다. 그리고, 분할한 영역 중 어느 하나를 선택하고, 그 영역에 격납된 코드를 이용하여, 소정의 지표 벡터를 취득하는 것으로 하고 있다.
따라서, 1개의 지표 벡터를 격납하는 레지스터의 영역에, 실질적으로 다수의 인덱스 벡터를 격납할 수 있게 되어, 레지스터 리소스를 효율적으로 사용하는 것이 가능해진다.
이하, 도면을 참조하여 본 발명에 관한 벡터 프로세서의 실시 형태를 설명한다.
(제1 실시 형태)
본 발명에 관한 벡터 프로세서는, 지표 벡터를 격납하는 벡터 레지스터 또는 스칼라 레지스터에서, 벡터 레지스터의 요소 레지스터 또는 스칼라 레지스터를 분할하여 사용하고, 어드레싱 기능을 확장하고 있다.
따라서, 첫번째로, 이와 같은 기능을 실현하기 위한 기본이 되는 사고방식에 대해서 설명한다. 또한, 본 발명은, 벡터 프로세서에서의 로드 명령 및 스토어 명령에 관한 것이기 때문에, 이들을 중심으로 설명한다.
벡터 프로세서에서, 로드 명령 또는 스토어 명령의 코드 타입에는, 어드레싱모드(어드레스 참조의 방법)에 따라서, 이하의 3종류가 규정되어 있다.
도 1은, 로드 명령 또는 스토어 명령의 포맷을 도시하는 도면으로, (a)는 베이스 상대 어드레싱에 대응하는 LS0 타입, (b)는 포스트·오프셋·업데이트·어드레싱에 대응하는 LS1 타입, (c)는 인덱스 수식 어드레싱 및 포스트·레지스터·업데이트·어드레싱에 대응하는 LS2 타입을 도시하고 있다.
도 1에서, LS0 타입은 스칼라 데이터의 로드 명령 및 스토어 명령에 대응하고 있고, LS1 타입 및 LS2 타입은, 스칼라 데이터 및 벡터 데이터의 로드 명령 및 스토어 명령에 대응하고 있다.
본 발명은, 벡터 데이터의 로드 명령 및 스토어 명령을 취급하는 것으로, 인덱스 수식 어드레싱 및 포스트·레지스터·업데이트·어드레싱에 관한 것이기 때문에, LS2 타입에 대해서 설명한다.
도 1(c)에서, LS2 타입의 포맷에는, 오퍼레이션 코드(opecode), 데스티네이션(dst), 베이스(base), 리피트 어마운트(rptamt), 익스텐션(extension), 인덱스(index)의 6개의 필드가 포함되어 있다.
오퍼레이션 코드는, 명령의 내용을 나타내는 필드로, 로드 명령 또는 스토어 명령 중 어느 하나를 나타내는 코드가 포함되어 있다.
데스티네이션은, 로드 또는 스토어의 대상이 되는 데이터가 격납된 레지스터의 어드레스를 지정하는 필드이다. 즉, 로드 명령의 경우, 메모리로부터 독출한 데이터를 기입하는 레지스터의 어드레스이고, 스토어 명령의 경우, 메모리에 기입하는 데이터를 독출하는 레지스터의 어드레스이다.
베이스는, 기준이 되는 메모리 어드레스가 격납된 레지스터의 어드레스를 지정하는 필드이다.
리피트 어마운트는, 벡터 명령에서의 명령의 반복 회수(요소 데이터 수)를 나타내는 필드이고, 명령 반복 회수가 "1"인 경우에는 스칼라 명령, "1"이외인 경우에는 벡터 명령이 된다.
익스텐션은, 기능 확장용으로 준비된 5비트의 필드이고, 본 발명에서는, 후술하는 바와 같이, 익스텐션을 이용하여, 분할한 요소 레지스터의 어드레스를 지정한다.
인덱스는, 베이스에 나타난 어드레스에 대해서, 어떠한 수식을 행할지, 즉, 베이스에 나타난 어드레스로부터 참조하는 어드레스 순서를 나타내는 필드이다. 본 발명에서는, 후술하는 바와 같이, 인덱스를 이용하여, 어드레스 수식의 확장 사양을 규정한다.
또한, 인덱스는, 상술한 지표 벡터가 격납된 벡터 레지스터 또는 스칼라 레지스터(이하, 지표 벡터가 격납된 레지스터를「인덱스 레지스터」라고 한다)를 지정하고 있고, 인덱스를 참조함으로써, 간접 지표 벡터 참조가 행해진다.
계속해서, 본 발명에서의 어드레스 수식의 확장 사양에 대해서 구체적으로 설명한다.
도 2는, 인덱스 수식 어드레싱의 경우에서, 익스텐션에 의해서 나타내지는 코드와, 어드레스 수식의 확장 사양의 대응 관계를 도시하는 도면이다. 또한, 도 2에서는, 어드레스 수식의 확장 사양을 설명하기 위해서, C 언어에 준한 기술 스타일의 프로그래밍 예를 더불어 도시하고 있으며, 후술하는 도 3에서도 동일하다.
도 2에서, 익스텐션이 "000"인 경우, 인덱스로서 지정된 레지스터(인덱스 레지스터)의 내용(지표 벡터)을 부호를 첨부하여 해석하고, 어드레스 수식을 행한다.
구체적으로는, 베이스에 나타난 레지스터의 값을 항상 기준으로 하고, 그 값에 인덱스에 나타내지는 어드레스를 순차적으로 가산함으로써, 어드레스 수식을 행한다.
또, 익스텐션이 "001"인 경우, 인덱스로서 지정된 레지스터의 하위 16비트를 부호를 첨부하여 해석하고, 어드레스 수식을 행한다.
또, 익스텐션이 "010"인 경우, 인덱스로서 지정된 레지스터의 상위 16비트를 부호를 첨부하여 해석하고, 어드레스 수식을 행한다.
또한, 익스텐션이 "011"인 경우, 인덱스로서 지정된 레지스터의 하위 16비트 및 상위 16비트를 각각 부호를 첨부하여 해석하고, 교대로 어드레스 수식을 행한다. 구체적으로는, 벡터 명령에서의 반복의 실행 순서가 짝수인 경우, 하위 16비트에 의해서 어드레스 수식을 행하고, 홀수인 경우, 상위 16비트에 의해서 어드레스 수식을 행한다.
다음에, 포스트·레지스터·업데이트·어드레싱의 확장 사양에 대해서 설명한다.
도 3은, 포스트·레지스터·업데이트·어드레싱의 경우에서,
익스텐션에 의해서 나타내지는 코드와, 어드레스 수식의 확장 사양의 대응 관계를 도시하는 도면이다.
도 3에서, 익스텐션이 "000"인 경우, 인덱스로서 지정된 레지스터의 내용을 부호를 첨부하여 해석하고, 어드레스의 갱신을 행한다.
구체적으로는, 베이스로 지정된 레지스터의 값을 소정의 레지스터(도 3 중의 파라미터(T)의 값을 격납하는 레지스터)에 일단 격납하고, 그 레지스터의 값을 갱신하면서 어드레스 수식을 행한다.
또, 익스텐션이 "001"인 경우, 인덱스로서 지정된 레지스터의 하위 16비트를 부호를 첨부하여 해석하고, 어드레스의 갱신을 행한다.
또, 익스텐션이 "010"인 경우, 인덱스로서 지정된 레지스터의 상위 16비트를 부호를 첨부하여 해석하고, 어드레스의 갱신을 행한다.
또한, 익스텐션이 "011"인 경우, 인덱스로서 지정된 레지스터의 하위 16비트 및 상위 16비트를 각각 부호를 첨부하여 해석하고, 교대로 어드레스의 갱신을 행한다.
여기에서, 익스텐션이 "000"∼"011"까지인 경우, 벡터 명령에서의 명령의 반복 회수의 사이에, 인덱스로서 지정된 내용에 따라서 어드레스 수식이 행해지고, 반복 회수가 종료된 후, 베이스에 지정된 레지스터의 값이 갱신된다.
따라서, 다수의 로드 명령 또는 스토어 명령을 이용하여, 반복 로드 또는 스토어를 행하는 경우, 베이스에 지정된 레지스터가 자동적으로 갱신되기 때문에, 명령이 발행될 때마다, 베이스의 어드레스를 별도의 명령으로 갱신할 필요가 없고, 즉시 명령의 실행을 행하는 것이 가능하다.
또, 도 3에서, 익스텐션이 "100"∼"111"인 경우, 익스텐션이 "000"∼"011"인경우와 각각 동일하게 어드레스의 갱신을 행한다. 단, 익스텐션이 "100"∼"111"인 경우, 명령의 반복 회수가 종료된 후, 베이스에 지정된 레지스터의 값을 갱신하지 않고 명령의 실행을 종료한다.
다음에, 본 실시 형태에 관한 벡터 프로세서의 구성을 설명한다.
도 4는, 본 실시 형태에 관한 벡터 프로세서(1)의 구성을 도시하는 도면이다.
도 4에서, 벡터 프로세서(1)는, 메모리(10)와, 메모리 제어부(20)와, 명령 페치부(30)와, 레지스터 파일(40)과, 로드 유닛(50)과, 스토어 유닛(60)과, 연산 유닛(70)을 포함하여 구성된다.
메모리(10)는, 벡터 프로세서(1)에 부여되는 명령 코드 및 연산 대상이 되는 데이터를 기억하고 있다.
메모리 제어부(20)는, 메모리(10)에 대한 액세스, 즉, 데이터의 독출이나 기입을 제어한다. 예를 들면, 메모리 제어부(20)는, 로드 유닛(50) 또는 스토어 유닛(60)에 의해서 지정된 메모리(10)의 어드레스로부터 데이터를 독출하거나, 메모리(10)로부터 독출된 데이터를 레지스터 파일(40)에 출력하거나 한다.
명령 페치부(30)는, 메모리 제어부(20)를 통해서, 메모리(10)로부터 명령 코드를 페치하여, 일시적으로 기억한다. ·
레지스터 파일(40)는, 32개의 스칼라 레지스터(SR0∼SR31)와, 8개의 요소 레지스터로 이루어지는 8개의 벡터 레지스터(VR0∼VR7)를 포함하여 구성되고, 메모리(10)로부터 독출된 데이터 및 연산 결과를 일시적으로 기억한다. 또한, 이하의 설명에서, 벡터 레지스터의 요소 레지스터 및 스칼라 레지스터는, 32비트의 폭을 갖는 것으로서 설명한다.
로드 유닛(50)은, 명령 페치부(30)에 기억된 명령 코드가 로드 명령인 경우에, 메모리(10)로부터 명령 코드 또는 데이터를 독출하는 처리를 행한다.
스토어 유닛(60)은, 명령 페치부(30)에 기억된 명령 코드가 스토어 명령인 경우에, 메모리(10)에 데이터를 기입하는 처리를 행한다.
연산 유닛(70)은, 명령 페치부(30)에 기억된 명령 코드가 소정의 연산 명령인 경우에, 레지스터 파일(40)에 기억된 소정 데이터를 대상으로 하여 연산 처리를 행한다.
여기에서, 로드 유닛(50)의 구성에 대해서, 상세히 설명한다.
도 5는, 로드 유닛(50)의 내부 구성을 도시하는 블록도이다.
도 5에서, 로드 유닛(50)은, 명령 파이프 라인 제어부(51)와, 인덱스 레지스터 결정 회로(52)와, 데스티네이션 레지스터 결정 회로(53)와, 어드레스 연산 회로(54)와, 파이프 라인 레지스터(PR)(55, 56)와, 레지스터(57)를 포함하여 구성된다.
명령 파이프 라인 제어부(51)는, 로드 유닛(50) 전체를 제어하는 것이다.
인덱스 레지스터 결정 회로(52)는, 명령 코드의 인덱스 필드에 기초하여, 지표 벡터가 격납된 인덱스 레지스터를 선택하는 신호(인덱스 레지스터 선택 신호)를 생성한다.
또한, 인덱스 수식 어드레싱의 경우, 기준으로서 지정된 어드레스(베이스 어드레스)를 유지하고, 그 어드레스에 대한 각 요소의 상대 어드레스를 지정함으로써 참조 어드레스를 생성한다. 즉, 인덱스 수식 어드레싱의 경우, 요소마다 상대 어드레스를 지정하기 때문에, 인덱스 레지스터로서 벡터 레지스터가 지정된다.
한편, 포스트·레지스터·업데이트·어드레싱의 경우, 기준으로서 지정된 어드레스(베이스 어드레스)를 참조 어드레스로 하는 동시에, 그 어드레스에 대한 상대 어드레스를 지정하여 베이스 어드레스가 갱신된다. 그리고, 그 갱신된 베이스 어드레스에 대한, 다음 요소의 상대 어드레스를 지정하는 것을 반복하여, 참조 어드레스를 생성한다. 그 때문에, 포스트·레지스터·업데이트·어드레싱의 경우, 인덱스 레지스터로서 스칼라 레지스터와 벡터 레지스터의 양쪽이 지정 가능하다.
데스티네이션 레지스터 결정 회로(53)는, 명령 코드의 데스티네이션 필드 및 리피트 어마운트 필드에 기초하여, 데스티네이션 어드레스를 격납하기 위한 데스티네이션 레지스터를 선택하는 신호(데스티네이션 레지스터 선택 신호)를 생성한다.
어드레스 연산 회로(54)는, 명령 파이프 라인 제어부(51)의 지시에 기초하여, 레지스터 파일(40)로부터 입력되는 베이스 어드레스 및 인덱스 어드레스(인덱스에 의해서 지정되는 어드레스)로부터, 로드 명령의 대상이 되는 메모리(10) 상의 어드레스(로드 어드레스)를 산출한다.
PR(55, 56)은, 명령 페치부(30)로부터 입력되는 데스티네이션 필드 및 리피트 어마운트 필드의 코드를 일시적으로 기억하고, 파이프 라인 처리에서 1사이클 지연시켜서, 데스티네이션 레지스터 결정 회로(53)에 출력한다.
레지스터(57)는, 명령 페치부(30)로부터 입력되는 베이스 필드의 코드를 일시적으로 기억한다.
여기에서, 도 5에서의 어드레스 연산 회로(54)의 구성에 대해서 설명한다.
도 6은, 어드레스 연산 회로(54)의 구성예를 도시하는 도면이다.
도 6에서, 어드레스 연산 회로(54)는, I레지스터(54a)와, T레지스터(54b)와, 멀티 플렉서(MUX)(54c∼54e)와, 가산기(54f)를 포함하여 구성된다.
I레지스터(54a)는, 레지스터 파일(40)로부터 입력되는 인덱스 어드레스를 일시적으로 기억한다.
T레지스터(54b)는, MUX(54c)를 통해서 레지스터 파일(40)로부터 입력되는 베이스 어드레스를 일시적으로 기억한다.
MUX(54c)는, 레지스터 파일(40)로부터 입력되는 베이스 어드레스와 가산기(54f)의 출력인 업데이트·베이스 어드레스 중 어느 하나를 전환하여 T레지스터(54b)에 출력한다.
MUX(54d)는, I레지스터(54a)로부터 입력되는 인덱스 어드레스의 상위 또는 하위의 어드레스 중 어느 하나를 선택하여 가산기(54f)에 출력한다.
MUX(54e)는, T레지스터(54b)로부터 입력되는 베이스 어드레스와 가산기(54f)의 출력인 업데이트·베이스 어드레스 중 어느 하나를 전환하여, 벡터 명령의 각 반복에서, 로드 명령을 실행하는 타깃 어드레스로서 출력한다.
가산기(54f)는, T레지스터(54b)로부터 입력되는 베이스 어드레스의 값과, MUX(54d)로부터 입력되는 인덱스 어드레스의 상위 또는 하위의 데이터에 기초하는 어드레스를 가산하여, 업데이트·베이스 어드레스(갱신된 베이스 어드레스의 값)로서 출력한다.
또한, 도 6에서, MUX(54c∼54e)는 명령 파이프 라인 제어부(51)에 의해서 제어된다. 즉, MUX(54c∼54e)에는, 입력되는 데이터 중 어느 하나를 선택하기 위한 신호(선택 지시 신호)가 명령 파이프 라인 제어부(51)로부터 입력된다.
또, 어드레스 연산 회로(54)는, 인덱스 수식 어드레싱의 경우 및 포스트·업데이트·어드레싱의 경우 각각에 대응하여, 소정의 동작을 행한다.
다음에, 동작을 설명한다.
첫번째로, 도 4를 참조하여, 벡터 프로세서(1) 전체의 동작에 대해서 설명한다.
벡터 프로세서(1)에서 처리가 행해지는 경우, 메모리 제어부(20)를 통해서 메모리(10)로부터 명령 페치부(30)에 명령 코드가 독출된다.
그리고, 로드 유닛(50), 스토어 유닛(60) 및 연산 유닛(70)의 각각에, 명령 페치부(30)로부터 명령 코드가 출력된다.
명령 코드가 입력된 로드 유닛(50), 스토어 유닛(60) 및 연산 유닛(70)은, 그 명령 코드를 디코드하여, 각각의 유닛에 대응하는 명령인 경우에만, 명령을 실행한다.
여기에서는, 도 5를 참조하면서, 명령 코드가 로드 명령인 경우에 대해서 설명한다.
명령 코드의 오퍼레이션 코드가 로드 명령을 나타내고 있는 경우(보다 상세하게는 prefix 코드가 "000"인 경우), 로드 유닛(50)이 동작한다.
먼저, 로드 유닛(50)은, 명령 페치부(30)로부터 수취한 베이스 필드의 코드를, 베이스 레지스터·리드 선택 신호(데이터의 독출시에 베이스 레지스터를 선택하는 신호)로서 레지스터 파일(40)에 출력한다. 베이스 레지스터·리드 선택 신호는, 레지스터 파일(40) 내의 스칼라 레지스터(SR0∼SR31) 중 어느 하나를 베이스 레지스터로서 선택하기 위한 신호이다.
그리고, 베이스 레지스터·리드 선택 신호를 수취한 레지스터 파일(40)로부터, 베이스 레지스터·리드 선택 신호에 의해서 지정된 레지스터에 기억된 베이스 어드레스의 값이 로드 유닛(50)에 입력된다.
레지스터 파일(40)로부터 입력된 베이스 어드레스의 값은, 어드레스 연산 회로(54)에 입력된다.
또, 인덱스 레지스터 결정 회로(52)는, 명령 페치부(30)로부터 입력된 인덱스 필드의 코드 및 리피트 어마운트 필드의 코드를 수취한다. 그리고, 인덱스 레지스터 결정 회로(52)는, 명령 파이프 라인 제어부(51)로부터의 지시에 따라서, 명령 코드가 벡터 명령인지 스칼라 명령인지를 판정하여, 벡터 명령인 경우, 인덱스 레지스터 선택 신호를 리피트 어마운트에 나타나는 요소 데이터 수만큼, 레지스터 파일(40)에 순차적으로 출력한다. 이 때, 인덱스 레지스터 선택 신호에 의해서 지정된 레지스터가 벡터 레지스터인 경우, 지정된 벡터 레지스터 내의 각 요소 레지스터를 특정하기 위한 소정의 선택 신호가 출력된다.
인덱스 레지스터 선택 신호가 입력된 레지스터 파일(40)로부터는, 인덱스 레지스터 선택 신호에 나타나는 레지스터로부터, 인덱스 어드레스의 값이, 어드레스연산 회로(54)에 순차적으로 입력된다.
인덱스 어드레스의 값을 수취한 어드레스 연산 회로(54)는, 베이스 어드레스의 값과, 인덱스 어드레스의 값으로부터 로드 어드레스를 산출하여, 메모리 제어부(20)에 출력한다. 또한, 어드레스 연산 회로(54)의 동작에 대해서는 후술한다.
또, 명령 페치부(30)로부터 입력된 데스티네이션 필드의 코드 및 리피트 어마운트 필드의 코드는, 파이프 라인 처리에서의 타이밍을 맞추기 위해서, PR(55, 56)에 일단 기억된 후, 데스티네이션 레지스터 결정 회로(53)에 입력된다.
그렇게 하면, 데스티네이션 레지스터 결정 회로(53)는, 데스티네이션 레지스터 선택 신호를, 메모리(10)로부터 로드된 데이터와 동기시켜서 레지스터 파일(40)에 출력한다.
그리고, 레지스터 파일(40)에서, 메모리(10)로부터 로드된 데이터가, 소정의 데스티네이션 레지스터에 순차적으로 기억된다.
또한, 포스트·레지스터·업데이트·어드레싱의 경우, 어드레스 연산 회로(54)에 의해서 출력되는 업데이트·베이스 어드레스를 베이스 레지스터에 기입한다.
따라서, 베이스 필드의 코드를 레지스터(57)에 유지시켜 두고, 레지스터(57)에 의해서 출력되는 코드를 베이스 레지스터·라이트 선택 신호(데이터의 기입시에 베이스 레지스터를 선택하는 신호)로서 이용하여, 베이스 레지스터·라이트 신호(베이스 레지스터에 대한 기입 지시 신호)가 입력되는 것에 대응하여, 베이스 레지스터의 데이터가 갱신된다.
다음에, 어드레스 연산 회로(54)의 동작에 대해서 설명한다.
먼저, 인덱스 수식 어드레싱의 경우에 대해서 설명한다.
인덱스 수식 어드레싱의 경우, 사이클"1"에서, 베이스 어드레스의 값이, MUX(54c)를 통해서 T레지스터(54b)에 격납된다.
한편, 인덱스 어드레스의 값은, I레지스터(54a)에 격납된다.
다음에, 사이클"2"에서, T레지스터(54b)의 베이스 어드레스의 값과, I레지스터(54a)의 상위 또는 하위 반분 중 어느 하나의 어드레스의 값이, 가산기(54f)에 의해서 가산되어, MUX(54e)를 통해서 타깃 어드레스(로드 어드레스)로서 출력된다.
그리고, 제3 사이클 이후는, 베이스 어드레스의 값이 T레지스터(54b)에 유지된 상태 그대로, 새롭게 인덱스 어드레스가 입력되고, 가산기(54f)에 의해서, 베이스 어드레스와의 가산이 순차적으로 행해진다.
이 때, 익스텐션 필드의 코드가 입력된 명령 파이프 라인 제어부(51)가, MUX(54d)를 제어함으로써, 도 2에 도시하는 인덱스 수식 어드레싱의 확장 사양이 실현된다.
즉, 익스텐션이 "000"인 경우, I레지스터(54a)에 격납된 데이터(여기에서는 32비트)가, 그대로 가산기(54f)에 입력된다.
한편, 익스텐션이 "001"인 경우, I레지스터(54a)의 하위 16비트를 부호 확장하여, 32비트로 된 데이터가 가산기(54f)에 입력된다.
또, 익스텐션이 "010"인 경우, I레지스터(54a)의 상위 16비트를 부호 확장하여, 32비트로 된 데이터가 가산기(54f)에 입력된다.
또한, 익스텐션이 "011"인 경우, 1사이클마다, I레지스터(54a)의 하위 16비트와 상위 16비트를 교대로 선택하여, 32비트로 부호 확장된 데이터가 가산기(54f)에 입력된다.
계속해서, 포스트·레지스터·업데이트·어드레싱의 경우에 대해서 설명한다.
포스트·레지스터·업데이트·어드레싱의 경우, 사이클"1"에서, 베이스 어드레스의 값이 MUX(54c)를 통해서 T레지스터(54b)에 격납된다.
한편, 인덱스 어드레스의 값은, I레지스터(54a)에 격납된다.
다음에, 사이클"2"에서, T레지스터(54b)의 베이스 어드레스의 값이, MUX(54e)를 통해서, 그대로 타깃 어드레스(로드 어드레스)로서 출력된다.
또, 동시에, T레지스터(54b)의 베이스 어드레스의 값은, 가산기(54f)에도 출력되고, I레지스터(54a)에 기억되어 있는 인덱스 어드레스의 값과 가산된다.
다음에, 가산기(54f)의 가산 결과는, MUX(54c)를 통해서, T레지스터(54b)에 격납되고, T레지스터(54b)가 베이스 어드레스로서 기억하는 값이 갱신된다.
그리고, 제3 사이클 이후는, 새롭게 인덱스 어드레스가 입력되고, 사이클"1", "2"와 동일하게, T레지스터(54b)의 출력을 타깃 어드레스로서 출력하는 동시에, T레지스터(54b)가 베이스 어드레스로서 기억하는 값이 갱신된다.
그 후, 실행되고 있는 로드 명령의 최후의 요소 데이터의 타깃 어드레스를 출력하는 것과 동일한 타이밍으로, 가산기(54f)의 출력이 업데이트·베이스 어드레스로서 레지스터 파일(40)에 출력된다.
레지스터 파일(40)에서는, 베이스 레지스터·라이트 신호에 의해서 지시된 타이밍으로, 동시에 입력되는 베이스 레지스터·라이트 선택 신호에 의해서 지정된 레지스터에 업데이트·베이스 어드레스를 기억한다.
이 때, 익스텐션 필드의 코드가 입력된 명령 파이프 라인 제어부(51)가 MUX(54d)를 제어함으로써, 도 3에 도시하는 포스트. 레지스터·업데이트·어드레싱의 확장 사양이 실현된다.
즉, 익스텐션이 "000"인 경우, I레지스터(54a)에 격납된 데이터(여기에서는 32비트)가, 그대로 가산기(54f)에 입력된다.
한편, 익스텐션이 "001"인 경우, I레지스터(54a)의 하위 16비트를 부호 확장하여, 32비트로 된 데이터가 가산기(54f)에 입력된다.
또, 익스텐션이 "010"인 경우, I레지스터(54a)의 상위 16비트를 부호 확장하여, 32비트로 된 데이터가 가산기(54f)에 입력된다.
또한, 익스텐션이 "011"인 경우, 1사이클마다, I레지스터(54a)의 하위 16비트와 상위 16비트를 교대로 선택하여, 32비트로 부호 확장된 데이터가 가산기(54f)에 입력된다.
또, 익스텐션이 "100"∼"111"까지인 경우, 익스텐션이 "000"∼"011"까지인 경우와 각각 동일한 기능 확장을 행하지만, 명령 파이프 라인 제어부(51)가 베이스 레지스터·라이트 신호를 출력하지 않고, 베이스 레지스터의 갱신을 행하지 않도록 제어한다.
이상과 같이, 본 실시 형태에 관한 벡터 프로세서(1)는, 인덱스에 의해서 지정된 벡터 레지스터의 요소 레지스터 또는 스칼라 레지스터를 다수의 영역으로 분할하고, 분할한 영역 중 어느 하나를 선택함으로써, 소정의 인덱스 벡터(지표 벡터)를 취득하는 것으로 하고 있다.
따라서, 1개의 벡터 레지스터에, 실질적으로 다수의 인덱스 벡터를 격납할 수 있게 되어, 레지스터 리소스를 효율적으로 사용하는 것이 가능해진다.
또, 인덱스 벡터를 준비하는 절차로서는, 1개의 인덱스 벡터(지표 벡터)의 경우와 동일하기 때문에, 프로그램의 코드 사이즈나 처리 사이클이 거의 증가하지 않는다.
또한, 포스트·레지스터·업데이트·어드레싱의 경우, 인덱스 레지스터로서 스칼라 레지스터가 지정되고, 그 레지스터를 다수의 영역으로 분할하여, 분할한 영역 중 어느 하나를 선택함으로써, 소정의 인덱스 벡터(지표 벡터)를 취득하는 것으로 하고 있다.
그 때문에, 인덱스 레지스터로서 벡터 레지스터를 이용하는 경우, 벡터 레지스터 모두에 데이터를 격납한 후가 아니면 후단의 처리를 개시할 수 없는 것에 반해서, 스칼라 레지스터를 사용할 수 있기 때문에, 스칼라 레지스터에 데이터를 격납한 후, 즉시 후단의 처리를 개시할 수 있다.
따라서, 인덱스 벡터(지표 벡터)를 준비하는 절차가 경감되어, 프로그램의 코드 사이즈나 처리 사이클수를 감소시키는 것이 가능해진다.
즉, 본 발명에 의하면, 간접 지표 벡터 참조를 보다 효율적으로 행하는 것이가능해진다.
또한, 본 실시 형태에서는, 어드레싱의 기능 확장를 위해서, 레지스터를 상위 및 하위의 2개의 영역으로 분할하여 사용하는 것으로서 설명하였지만, 3개 이상의 영역으로 나누어 사용하는 것도 가능하다.
또한, 본 실시 형태에서는, 명령 코드에 포함되는 익스텐션에 의해서, 그 명령 전체에서의 요소 레지스터의 어드레스를 고정적으로 지정하는(단일한 레지스터를 지정하거나, 2개의 레지스터를 교대로 지정하는 등) 것으로서 설명하였지만, 명령 실행 중에, 요소 레지스터의 지정 패턴을 동적으로 변화시키는 것도 가능하다. 즉, 익스텐션의 데이터 길이에는 한계가 있고, 복잡한 패턴을 지정할 수 없기 때문에, 복잡한 지정 패턴을 입력 가능한 수단을 구비함으로써, 익스텐션에 의해서 지정 가능한 패턴보다 복잡한 패턴을 지정하는 것이 가능하다. 또, 명령 실행 중에, 요소 레지스터를 지정하기 위한 다른 지정 패턴을 입력하거나 하는 것도 가능하다.
(제2 실시 형태)
본 실시 형태에 관한 벡터 프로세서는, 제1 실시 형태에 관한 벡터 프로세서에서, 도 2 및 도 3에 도시하는 어드레스 수식의 확장 사양을 더욱 발전시킨 사양으로 되어 있다.
구체적으로는, 명령 코드에 어드레싱의 기능 확장을 위한 코드를 포함시키고, 인덱스 레지스터의 분할된 영역을 다양하게 지정하는 것에 더하여, 어드레싱의 기능 확장을 위한 지표 벡터를 기억하는 2개의 레지스터(이하, 「서브인덱스 레지스터(A, B)」라고 한다)를 지정 대상으로서 또한 설치하고 있다. 그리고, 명령 코드의 익스텐션 중 4비트를 사용하여, 어드레스 수식의 방법을 지정함으로써, 다양한 어드레스 수식을 가능하게 하고 있다.
따라서, 첫번째로, 본 실시 형태에 관한 벡터 프로세서의 확장 사양에 대해서 구체적으로 설명한다.
도 7은, 인덱스 수식 어드레싱의 경우에서, 익스텐션에 의해서 나타내지는 코드와, 어드레스 수식의 확장 사양의 대응 관계를 도시하는 도면이다. 또한, 도 7에서는, 어드레스 수식의 확장 사양을 설명하기 위해서, C 언어에 준한 기술 스타일의 프로그래밍 예를 더불어 도시하고 있으며, 후술하는 도 8에서도 동일하다.
도 7에서, 익스텐션이 "0000"인 경우, 인덱스로서 지정된 레지스터의 내용(지표 벡터)을 부호를 첨부하여 해석하고, 어드레스 수식을 행한다.
구체적으로는, 베이스에 나타난 레지스터의 값을 항상 기준으로 하고, 그 값에 인덱스에 나타나는 어드레스를 순차적으로 가산함으로써, 어드레스 수식을 행한다.
또, 익스텐션이 "0100"인 경우, 인덱스로서 지정된 레지스터의 하위 16비트를 부호를 첨부하여 해석하고, 어드레스 수식을 행한다.
또한, 익스텐션이 "0110"인 경우, 인덱스로서 지정된 레지스터의 상위 16비트를 부호를 첨부하여 해석하고, 어드레스 수식을 행한다.
다음에, 포스트·레지스터·업데이트·어드레싱의 확장 사양에 대해서 설명한다.
도 8은, 포스트·레지스터·업데이트·어드레싱의 경우에서, 익스텐션에 의해서 나타내지는 코드와, 어드레스 수식의 확장 사양의 대응 관계를 도시하는 도면이다.
도 8에서, 익스텐션이 "0000", "0100", "0101", "0110" 및 "0111"인 경우, 도 3에서의 "000", "001", "101", "010", "110"과 각각 동일하게 어드레스의 갱신을 행한다.
또, 익스텐션이 "1100"인 경우, 인덱스로서 지정된 인덱스 레지스터 및 서브인덱스 레지스터(A)에서, 하위 16비트 또는 상위 16비트 중 소정의 데이터를 부호를 첨부하여 해석하고, 어드레스의 갱신을 행한다. 이 때, 소정의 레지스터(이하, 「인덱스 스위치 레지스터」라고 한다)에 기억된 지정 패턴에 기초하여, 인덱스 레지스터 및 서브인덱스 레지스터(A)의 상위 16비트 또는 하위 16비트 중 어느 하나가 지정된다.
구체적으로는, 베이스에 지정된 레지스터의 값을 소정의 레지스터(도 8 중의 파라미터(T)의 값을 격납하는 레지스터)에 일단 격납하고, 그 레지스터의 값을 갱신하면서 어드레스 수식을 행한다.
또, 익스텐션이 "1110"인 경우, 인덱스로서 지정된 인덱스 레지스터 및 서브인덱스 레지스터(B)에서, 하위 16비트 또는 상위 16비트 중 소정의 데이터를 부호를 첨부하여 해석하고, 어드레스의 갱신을 행한다. 이 때, 인덱스 스위치 레지스터에 기억된 지정 패턴(후술하는「레지스터 스위칭 패턴」)에 기초하여, 인덱스 레지스터 및 서브인덱스 레지스터(B)의 상위 16비트 또는 하위 16비트 중 어느 하나가 지정된다.
여기에서, 익스텐션이 "1100" 및 "1110"인 경우, 벡터 명령에서의 명령의 반복 회수의 사이에, 인덱스로서 지정된 내용에 따라서 어드레스 수식이 행해지고, 반복 회수가 종료된 후, 베이스에 지정된 레지스터의 값이 갱신된다.
따라서, 다수의 로드 명령 또는 스토어 명령을 이용하여, 반복 로드 또는 스토어를 행하는 경우, 베이스에 지정된 레지스터가 자동적으로 갱신되기 때문에, 명령을 발생할 때마다, 베이스의 어드레스를 별도의 명령으로 갱신할 필요가 없고, 즉시 명령의 실행을 행하는 것이 가능하다.
또, 도 8에서, 익스텐션이 "1101" 및 "1111"인 경우, 익스텐션이 "1100" 및 "1110"인 경우와 각각 동일하게 어드레스의 갱신을 행한다. 단, 익스텐션이 "1101" 및 "1111"인 경우, 명령의 반복 회수가 종료된 후, 베이스에 지정된 레지스터의 값을 갱신하지 않고 명령의 실행을 종료한다.
다음에, 본 실시 형태에 관한 벡터 프로세서의 구성을 설명한다.
도 9는, 본 실시 형태에 관한 벡터 프로세서(2)의 구성을 도시하는 도면이다.
도 9에서, 벡터 프로세서(2)의 구성은, 레지스터 파일(140)에 서브인덱스 레지스터(141, 142)와 인덱스 스위치 레지스터(143)가 포함되는 것을 제외하고, 제1 실시 형태에서의 벡터 프로세서(1)의 구성과 동일하다. 따라서, 서브인덱스 레지스터(141, 142) 및 인덱스 스위치 레지스터(143)에 대해서만 설명하고, 다른 부분에 대해서는, 도 4에서 대응하는 부분을 참조하는 것으로 한다.
서브인덱스 레지스터(141, 142)는, 레지스터 파일(140)에 포함되는 스칼라레지스터 또는 벡터 레지스터(여기에서는, 스칼라 레지스터(SR30, 31)로 한다)에 의해서 구성된다. 그리고, 서브인덱스 레지스터(141, 142)에는, 소정의 지표 벡터가 각각 격납되어 있다.
인덱스 스위치 레지스터(143)는, 레지스터 파일(140)에 포함되는 스칼라 레지스터(여기에서는, 스칼라 레지스터(SR29)로 한다)에 의해서 구성되고, 인덱스 레지스터 및 서브인덱스 레지스터(141, 142)에 포함되는 어느 데이터를 인덱스 어드레스로서 선택할지를 나타내는 데이터(이하, 「레지스터 스위칭 패턴」이라고 한다)를 기억하고 있다.
레지스터 스위칭 패턴은, 구체적으로는, 서브인덱스 레지스터(141, 142) 중 어느 한쪽에서의 상위 16비트 및 하위 16비트와, 후술하는 도 11의 I레지스터에서의 상위 16비트 및 하위 16비트를 포함하는 4개의 영역 중, 어드레스 수식을 행하는 요소마다, 1개의 영역을 선택하기 위한 데이터이다.
도 10은, 레지스터 스위칭 패턴의 데이터 구성을 도시하는 도면이다.
도 10에서, 레지스터 스위칭 패턴의 상위 반분에는, 서브인덱스 레지스터(141)가 선택된 경우의 스위칭 패턴이 격납되고, 하위 반분에는, 서브인덱스 레지스터(142)가 선택된 경우의 스위칭 패턴이 격납되어 있다.
다음에, 도 11은, 로드 유닛(150)의 내부 구성을 도시하는 블록도이다.
도 11에서, 로드 유닛(150)의 내부 구성은, 명령 파이프 라인 제어부(151) 및 어드레스 연산 회로(154)의 기능을 제외하고, 제1 실시 형태에서의 로드 유닛(50)의 내부 구성과 동일하다. 따라서, 명령 파이프 라인 제어부(151) 및 어드레스 연산 회로(154)에 대해서만 설명하고, 다른 부분에 대해서는, 도 5에서 대응하는 부분의 설명을 참조하는 것으로 한다.
명령 파이프 라인 제어부(151)는, 로드 유닛(150) 전체를 제어하는 것이다. 또, 명령 파이프 라인 제어부(151)는, 명령 코드에 포함되는 익스텐션 필드의 코드에 따라서, 서브인덱스 레지스터(141, 142) 중 어느 하나의 서브인덱스 어드레스를 어드레스 연산 회로(154)(보다 상세하게는 MUX(154g))에 선택시키는 동시에, 레지스터 파일(140)의 인덱스 스위치 레지스터(143)에서의 상위 또는 하위 반분의 레지스터 스위칭 패턴을 후술하는 J레지스터(154h)에 기억시킨다.
어드레스 연산 회로(154)는, 명령 파이프 라인 제어부(151)의 지시에 기초하여, 레지스터 파일(140)로부터 입력되는, 베이스 어드레스 및 인덱스 어드레스(인덱스 필드에 의해서 지정된 어드레스)와, 서브인덱스 레지스터(141, 142)에 기억된 어드레스(이하, 「서브인덱스 어드레스」라고 한다)와, 인덱스 스위치 레지스터(143)에 기억된 레지스터 스위칭 패턴으로부터, 로드 명령의 대상이 되는 메모리(110) 상의 어드레스(로드 어드레스)를 산출한다.
계속해서, 도 11에서의 어드레스 연산 회로(154)의 구성에 대해서 설명한다.
도 12는, 어드레스 연산 회로(154)의 구성예를 도시하는 도면이다.
도 12에서, 어드레스 연산 회로(154)의 구성은, 멀티 플렉서(MUX)(154d, 154g)와, J레지스터(154h)와, 시프터(154i)를 제외하고, 제1 실시 형태에서의 어드레스 연산 회로(54)의 구성과 동일하다. 따라서, MUX(154d, 154g)와, J레지스터(154h)와, 시프터(154i)에 대해서만 설명하고, 다른 부분에 대해서는, 도6을 참조에서 대응하는 부분을 참조하는 것으로 한다.
MUX(154d)는, I레지스터(154a)로부터 입력되는 인덱스 어드레스의 상위 또는 하위의 어드레스와, 후술하는 MUX(154g)로부터 입력되는 서브인덱스 어드레스의 상위 또는 하위의 어드레스 중 어느 하나를 선택하여 가산기(154f)에 출력한다. 이 때, MUX(154d)는, 후술하는 시프터(154i)로부터 입력되는 지시 신호에 기초하여, 입력된 인덱스 어드레스 또는 서브인덱스 어드레스의 상위 또는 하위의 어드레스 중 어느 하나를 선택한다.
MUX(154g)는, 서브인덱스 레지스터(141, 142)로부터 입력되는 서브인덱스 어드레스 중, 어느 하나를 선택하여 MUX(154d)에 출력한다. 이 때, MUX(154g)는, 명령 파이프 라인 제어부(151)로부터 입력되는 선택 지시 신호에 기초하여, 어느 하나의 서브인덱스 어드레스를 선택한다.
J레지스터(154h)는, 레지스터 파일(140)로부터 입력되는 인덱스 레지스터 선택 데이터를 일시적으로 기억한다.
시프터(154i)는, J레지스터(154h)로부터 레지스터 스위칭 패턴을 수취하여, 1 사이클마다, 레지스터 스위칭 패턴에 기초하여, MUX(154d)가 선택하는 어드레스를 지시하기 위한 신호를 출력한다.
다음에, 동작을 설명한다.
첫번째로, 도 9를 참조하여, 벡터 프로세서(2) 전체의 동작에 대해서 설명한다.
벡터 프로세서(2)에서 처리가 행해지는 경우, 메모리 제어부(120)를 통해서메모리(110)로부터 명령 페치부(130)에 명령 코드가 독출된다.
그리고, 로드 유닛(150), 스토어 유닛(160) 및 연산 유닛(170)의 각각에 명령 페치부(130)로부터 명령 코드가 출력된다.
명령 코드가 입력된 로드 유닛(150), 스토어 유닛(160) 및 연산 유닛(170)은, 그 명령 코드를 디코드하여, 각각의 유닛에 대응하는 명령인 경우에만, 명령을 실행한다.
여기에서는, 도 11을 참조하면서, 명령 코드가 로드 명령인 경우에 대해서 설명한다.
명령 코드의 오퍼레이션 코드가 로드 명령을 나타내고 있는 경우(보다 상세하게는 prefix 코드가 "000"인 경우), 로드 유닛(150)이 동작한다.
먼저, 로드 유닛(150)은, 명령 페치부(130)로부터 수취한 베이스 필드의 코드를, 베이스 레지스터·리드 선택 신호(데이터의 독출시에 베이스 레지스터를 선택하는 신호)로서 레지스터 파일(140)에 출력한다.
그리고, 베이스 레지스터·리드 선택 신호를 수취한 레지스터 파일(140)로부터, 베이스 레지스터·리드 선택 신호에 의해서 지정된 레지스터에 기억된 베이스 어드레스의 값이 로드 유닛(150)에 입력된다.
레지스터 파일(140)로부터 입력된 베이스 어드레스의 값은, 어드레스 연산 회로(154)에 입력된다.
또, 인덱스 레지스터 결정 회로(152)는, 명령 페치부(130)로부터 입력된 인덱스 필드의 코드 및 리피트 어마운트 필드의 코드를 수취한다. 그리고, 인덱스레지스터 결정 회로(152)는, 명령 파이프 라인 제어부(151)로부터의 지시에 따라서, 명령 코드가 벡터 명령인지 스칼라 명령인지를 판정하여, 벡터 명령인 경우, 인덱스 레지스터 선택 신호를, 리피트 어마운트에 나타내는 요소 데이터 수만큼, 레지스터 파일(140)에 순차적으로 출력한다. 이 때, 인덱스 레지스터 선택 신호에 의해서 지정된 레지스터가 벡터 레지스터인 경우, 지정된 벡터 레지스터 내의 각 요소 레지스터를 특정하기 위한 소정의 선택 신호가 출력된다.
인덱스 레지스터 선택 신호가 입력된 레지스터 파일(140)로부터는, 인덱스 레지스터 선택 신호에 나타나는 레지스터로부터, 인덱스 어드레스의 값이, 어드레스 연산 회로(154)에 순차적으로 입력된다.
또, 명령 파이프 라인 제어부(151)는, 레지스터 파일(140)에, 서브인덱스 어드레스(141, 142) 및 인덱스 스위치 레지스터(143)의 어드레스를 출력한다. 그리고, 인덱스 어드레스의 값이 어드레스 연산 회로(154)에 입력되는 타이밍에 맞추어, 서브인덱스 어드레스의 값도, 어드레스 연산 회로(154)에 순차적으로 입력된다.
인덱스 어드레스 및 서브인덱스 어드레스의 값을 수취한 어드레스 연산 회로(154)는, 레지스터 스위칭 패턴에 기초하여, 인덱스 어드레스 및 서브인덱스 어드레스 중, 소정의 영역을 선택하고, 베이스 어드레스의 값과, 선택한 영역에 기억되어 있는 어드레스의 값으로부터 로드 어드레스를 산출하여, 메모리 제어부(120)에 출력한다. 또한, 어드레스 연산 회로(154)의 동작에 대해서는 후술한다.
또, 명령 페치부(130)로부터 입력된 데스티네이션 필드의 코드 및 리피트 어마운트 필드의 코드는, 파이프 라인 처리에서의 타이밍을 맞추기 위해서, PR(155, 156)에 일단 기억된 후, 데스티네이션 레지스터 결정 회로(153)에 입력된다.
그렇게 하면, 데스티네이션 레지스터 결정 회로(153)는, 데스티네이션 레지스터 선택 신호를 메모리(110)로부터 로드된 데이터와 동기시켜서 레지스터 파일(140)에 출력한다.
그리고, 레지스터 파일(140)에서, 메모리(110)로부터 로드된 데이터가, 소정의 데스티네이션 레지스터에 순차적으로 기억된다.
또한, 포스트·레지스터·업데이트·어드레싱의 경우, 어드레스 연산 회로(154)에 의해서 출력되는 업데이트·베이스 어드레스를 베이스 레지스터에 기입한다.
따라서, 베이스 필드의 코드를 레지스터(157)에 유지시켜 두고, 레지스터(157)에 의해서 출력되는 코드를 베이스 레지스터·라이트 선택 신호(데이터의 기입시에 베이스 레지스터를 선택하는 신호)로서 이용하여, 베이스 레지스터·라이트 신호(베이스 레지스터에 대한 기입 지시 신호)가 입력되는 것에 대응하여, 베이스 레지스터의 데이터가 갱신된다.
다음에, 어드레스 연산 회로(154)의 동작에 대해서 설명한다.
먼저, 인덱스 수식 어드레싱의 경우에 대해서 설명한다.
인덱스 수식 어드레싱의 경우, 사이클 "1"에서, 베이스 어드레스의 값이, MUX(154c)를 통해서 T레지스터(154b)에 격납된다.
한편, 인덱스 어드레스의 값은, I레지스터(154a)에 격납되고, 레지스터 스위칭 패턴의 상위 또는 하위 반분의 데이터가, J레지스터(154h)에 격납된다.
다음에, 사이클"2"에서, J레지스터(154h)에 격납되어 있는 레지스터 스위칭 패턴(상위 또는 하위 반분)에서의 최하위 2비트가 시프터(154i)에 의해서 MUX(154d)에 출력된다. 그리고, MUX(154d)는, 시프터(154i)로부터 입력된 2비트의 데이터에 기초하여, MUX(154g)를 통해서 입력된 서브인덱스 어드레스의 상위 또는 하위 중 어느 하나의 16비트의 데이터를 선택하여, 가산기(154f)에 출력한다. 또, T레지스터(154b) 베이스 어드레스의 값과, MUX(154d)로부터 출력된 어드레스의 값이, 가산기(154f)에 의해서 가산되어, MUX(154e)를 통해서 타깃 어드레스(로드 어드레스)로서 출력된다.
그리고, 제3 사이클 이후는, 베이스 어드레스의 값이 T레지스터(154b)에 유지된 상태 그대로, 시프터(154i)에 의해서, J레지스터(154h)에 격납된 레지스터 스위칭 패턴(상위 또는 하위 반분)에서, 하위로부터 2비트씩이 MUX(154d)에 순차적으로 출력되고, 가산기(154f)에 의해서, MUX(154d)로부터 출력되는 어드레스가 베이스 어드레스와 순차적으로 가산된다.
이 때, 익스텐션 필드의 코드가 입력된 명령 파이프 라인 제어부(151)가, MUX(154g)를 제어하는 동시에, 익스텐션 필드의 코드에 따라서, 레지스터 스위칭 패턴의 상위 또는 하위 반분의 데이터 중 어느 하나를 선택하여 J레지스터(154h)에 기억시킴으로써, 도 7에 도시하는 인덱스 수식 어드레싱의 확장 사양이 실현된다.
즉, 익스텐션이 "0000"인 경우, I레지스터(154a)에 격납된 데이터(여기에서는 32비트)가 MUX(154d)에 의해서 선택되고, 그대로 가산기(154f)에 입력된다.
한편, 익스텐션이 "0100"인 경우, I레지스터(154a)의 하위 16비트를 부호 확장하여, 32비트로 된 데이터가 MUX(154d)에 의해서 선택되어, 가산기(154f)에 입력된다.
또, 익스텐션이 "0110"인 경우, I레지스터(154d)의 상위 16비트를 부호 확장하여, 32비트로 된 데이터가 MUX(154d)에 의해서 선택되어, 가산기(154f)에 입력된다.
계속해서, 포스트·레지스터·업데이트·어드레싱의 경우에 대해서 설명한다.
포스트·레지스터·업데이트·어드레싱의 경우, 사이클 "1"에서, 베이스 어드레스의 값이, MUX(154c)를 통해서 T레지스터(154b)에 격납된다.
한편, 인덱스 어드레스의 값은, I레지스터(154a)에 격납되고, 레지스터 스위칭 패턴의 상위 또는 하위 반분의 데이터가, 명령 파이프 라인 제어부(151)의 지시에 따라서 J레지스터(154h)에 격납된다.
다음에, 사이클"2"에서, T레지스터(154b)의 베이스 어드레스의 값이, MUX(154e)를 통해서, 그대로 타깃 어드레스(로드 어드레스)로서 출력된다.
또, 동시에, T레지스터(154b)의 베이스 어드레스의 값은, 가산기(154f)에도 출력되고, MUX(154d)로부터 출력된 어드레스의 값과 가산된다.
다음에, 가산기(154f)의 가산 결과는, MUX(154c)를 통해서, T레지스터(154b)에 격납되고, T레지스터(154b)가 베이스 어드레스로서 기억하는 값이 갱신된다.
그리고, 제3 사이클 이후는, 시프터(154i)에 의해서, J레지스터(154h)에 격납된 레지스터 스위칭 패턴(상위 또는 하위 반분)에서, 하위로부터 2비트씩이 MUX(154d)에 순차적으로 출력되고, 사이클"1", "2"와 동일하게, T레지스터(154b)의 출력을 타깃 어드레스로서 출력하는 동시에, T레지스터(154b)가 베이스 어드레스로서 기억하는 값이 갱신된다.
그 후, 실행되어 있는 로드 명령의 최후의 요소 데이터의 타깃 어드레스를 출력하는 것과 동일한 타이밍으로, 가산기(154f)의 출력이 업데이트·베이스 어드레스로서 레지스터 파일(140)에 출력된다.
레지스터 파일(140)에서는, 베이스 레지스터·라이트 신호에 의해서 지시된 타이밍으로, 동시에 입력되는 베이스 레지스터·라이트 선택 신호에 의해서 지정된 레지스터에 업데이트·베이스 어드레스를 기억한다.
이 때, 익스텐션 필드의 코드가 입력된 명령 파이프 라인 제어부(151)가, MUX(154g)를 제어하는 동시에, 익스텐션 필드의 코드에 따라서, 레지스터 스위칭 패턴의 상위 또는 하위 반분의 데이터의 어느 하나를 선택하여 J레지스터(154h)에 기억시킴으로써, 도 8에 도시하는 포스트·레지스터·업데이트·어드레싱의 확장 사양이 실현된다.
즉, 익스텐션이 "0000"인 경우, I레지스터(154a)에 격납된 데이터(여기에서는 32비트)가 MUX(154d)에 의해서 선택되고, 그대로 가산기(154f)에 입력된다.
한편, 익스텐션이 "0100"인 경우, I레지스터(154a)에 격납된 데이터의 하위 16비트가 MUX(154d)에 의해서 선택되고, 부호 확장하여 32비트로 된 데이터가 가산기(154f)에 입력된다.
또, 익스텐션이 "0110"인 경우, I레지스터(154a)에 격납된 데이터의 상위 16비트가 MUX(154d)에 의해서 선택되고, 부호 확장하여 32비트로 된 데이터가 가산기(154f)에 입력된다.
또, 익스텐션이 "1100"인 경우, I레지스터(154a)에 격납된 데이터 및 서브인덱스 레지스터(141)에 격납된 데이터 각각에서, 하위 16비트 또는 상위 16비트 중, 레지스터 스위칭 패턴에 나타나는 데이터가 MUX(154d)에 의해서 순차적으로 선택되고, 부호 확장하여 32비트로 된 데이터가 가산기(154f)에 입력된다.
또, 익스텐션이 "1110"인 경우, I레지스터(154a)에 격납된 데이터 및 서브인덱스 레지스터(142)에 격납된 데이터 각각에서, 하위 16비트 또는 상위 16비트 중, 레지스터 스위칭 패턴에 나타나는 데이터가 MUX(154d)에 의해서 순차적으로 선택되고, 부호 확장하여 32비트로 된 데이터가 가산기(154f)에 입력된다.
또, 익스텐션이 "0101", "0111", "1101" 및 "1111"인 경우, 익스텐션이 "0100", "0110" ,"1100" 및 "1110"인 경우와 각각 동일한 기능 확장을 행하지만, 명령 파이프 라인 제어부(151)가 베이스 레지스터·라이트 신호를 출력하지 않고, 베이스 레지스터의 갱신을 행하지 않도록 제어한다.
이상과 같이, 본 실시 형태에 관한 벡터 프로세서(2)는, 인덱스에 의해서 지정된 벡터 레지스터의 요소 레지스터 또는 스칼라 레지스터를 다수의 영역으로 분할하는 동시에, 지표 벡터를 격납한 다른 레지스터(서브인덱스 레지스터(141, 142))를 준비하여, 이 레지스터도 동일하게, 다수의 영역으로 분할하여 사용한다.그리고, 인덱스에 의해서 지정된 레지스터 및 준비한 다른 레지스터에서, 분할한 영역 중 어느 하나를 선택함으로써, 소정의 인덱스 벡터(지표 벡터)를 취득하는 것으로 하고 있다.
따라서, 소수의 레지스터에, 실질적으로, 보다 많은 인덱스 벡터를 격납할 수 있게 되어, 레지스터 리소스를 효율적으로 사용하는 것이 가능해진다.
또, 벡터 프로세서(2)는, 인덱스 스위치 레지스터(143)를 구비하고 있다. 그리고, 인덱스 스위치 레지스터(143)에 기억된 레지스터 스위칭 패턴에 의해서, 어드레스 수식을 행하는 요소마다, 인덱스 레지스터 및 서브인덱스 레지스터(141, 142)의 상위 또는 하위의 영역 중 어느 하나를 임의로 지정하는 것이 가능하다.
따라서, 1개의 명령을 실행할 때에, 인덱스 레지스터 및 서브인덱스 레지스터(141, 142)에서의 영역 중 어느 것을 선택할지를 동적으로 변화시킬 수 있고, 영역을 지정함으로써 얻어지는 인덱스 벡터를 보다 다양한 것으로 할 수 있다.
즉, 본 발명에 의하면, 간접 지표 벡터 참조를 보다 효율적으로 행하는 것이 가능해진다.
또한, 본 실시 형태에서는, 레지스터 스위칭 패턴을 인덱스 스위치 레지스터(143)에 격납해 두는 것으로서 설명하였지만, 레지스터 스위칭 패턴을 명령 코드의 인덱스 필드에 포함시키는 것으로 해도 좋다.
도 13은, 레지스터 스위칭 패턴을 명령 코드의 인덱스 필드에 포함시키는 경우의 데이터 구성을 도시하는 도면이다.
도 13에서, 인덱스 필드에는, 레지스터 스위칭 패턴과, 제1 및 제2 인덱스가격납된 각각의 영역(예를 들면, 인덱스 레지스터의 상위 및 하위 16비트)을 나타내는 어드레스가 포함되어 있다.
그리고, 어드레스 수식을 행하는 8개의 요소 각각에 대해서, 2개의 인덱스 중 어느 하나에 의해서, 어드레스 수식을 행할지가 임의로 지정되어 있다.
또, 이 경우, 도 12의 어드레스 연산 회로(154)의 구성은, 이하와 같이 된다.
도 14는, 레지스터 스위칭 패턴을 명령 코드의 인덱스 필드에 포함시키는 경우의 어드레스 연산 회로(154)의 구성을 도시하는 도면이다.
도 14에서는, 레지스터 스위칭 패턴이 명령 코드에 포함되어 있기 때문에, 인덱스 스위치 레지스터(143)에 상당하는 레지스터가 설치되어 있지 않고, 레지스터 파일(140)을 통해서, I레지스터(154a)에 레지스터 스위칭 패턴과, 제1 및 제2 인덱스가 격납된 각각의 영역의 어드레스가 입력된다.
그리고, 입력된 레지스터 스위칭 패턴은, 시프터(154i)에 입력되고, 어드레스 수식을 행하는 요소마다, I레지스터(154a)에 기억된 2개의 인덱스 중 어느 하나를 선택하기 위한 신호를 MUX(154d)에 출력한다.
이와 같은 구성으로 함으로써, 인덱스 스위치 레지스터(143)를 설치하지 않고, 영역을 지정함으로써 얻어지는 인덱스 벡터를, 다양한 것으로 하는 것이 가능해진다.
상술한 본 발명에 의하면, 1개의 벡터 레지스터에, 실질적으로 다수의 인덱스 벡터를 격납할 수 있게 되어, 벡터 레지스터를 효율적으로 사용하는 것이 가능해진다. 또, 인덱스 벡터를 준비하는 절차로서는, 1개의 인덱스 벡터의 경우와 동일하기 때문에, 프로그램의 코드 사이즈나 처리 사이클이 거의 증가하지 않는다. 즉, 본 발명에 의하면, 간접 지표 벡터 참조를 보다 효율적으로 행하는 것이 가능해진다.

Claims (10)

  1. 지표 벡터를 이용하여, 벡터 데이터의 독출 또는 기입에서의 메모리 어드레스 참조를 행하는 어드레스 참조 방법에 있어서,
    지표 벡터의 요소를 격납하는 요소 격납용 레지스터를 다수 영역으로 분할하여, 각 영역에 소정의 코드를 격납하고, 상기 지표 벡터의 요소 격납용 레지스터 각각의 소정 영역에 격납된 코드를 이용하여, 다수의 지표 벡터를 생성 가능하게 하는 것을 특징으로 하는 벡터 데이터의 어드레스 참조 방법.
  2. 제1항에 있어서, 상기 요소 격납용 레지스터의 각 영역은, 상기 지표 벡터의 참조 기준 어드레스에 대한 상대 어드레스를 나타내는 코드를 격납하고,
    상기 요소 격납용 레지스터 각각의 분할된 영역 중, 선택된 영역의 코드와, 이 기준 어드레스에 기초하여, 참조처의 메모리 어드레스인 타깃 어드레스를 산출하는 것을 특징으로 하는 벡터 데이터의 어드레스 참조 방법.
  3. 제2항에 있어서, 상기 지표 벡터를 벡터 레지스터에 격납하고, 이 벡터 레지스터의 각 요소 레지스터를 분할한 각 영역에, 상기 상대 어드레스를 나타내는 코드를 격납하는 것을 특징으로 하는 벡터 데이터의 어드레스 참조 방법
  4. 제1항에 있어서, 상기 요소 격납용 레지스터의 각 영역은, 상기 지표 벡터의참조 기준 어드레스에 대한 상대 어드레스를 나타내는 코드를 격납하고,
    상기 요소 격납용 레지스터 각각의 분할된 영역 중, 선택된 영역의 코드와, 이 기준 어드레스에 기초하여, 참조처의 메모리 어드레스인 타깃 어드레스를 산출하고, 산출된 타깃 어드레스를 새로운 참조 기준 어드레스로 하는 것을 특징으로 하는 벡터 데이터의 어드레스 참조 방법.
  5. 제4항에 있어서, 상기 상대 어드레스를 나타내는 코드를 상기 요소 격납용 레지스터로서의 스칼라 레지스터에 격납하고, 이 스칼라 레지스터를 분할한 각 영역에, 상기 상대 어드레스를 나타내는 코드를 격납하는 것을 특징으로 하는 벡터 데이터의 어드레스 참조 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 벡터 데이터의 독출 또는 기입에 관한 벡터 명령의 실행 중에, 상기 분할된 각 영역 중, 선택하는 영역을 동적으로 변화시키는 것을 특징으로 하는 벡터 데이터의 어드레스 참조 방법.
  7. 제6항에 있어서, 상기 요소 격납용 레지스터의 상기 분할된 각 영역 중, 선택하는 영역을 지정하기 위한 지정 패턴을 소정의 레지스터에 격납하고, 이 지정 패턴에 기초하여 상기 분할된 영역을 지정함으로써, 소정의 지표 벡터를 생성하는 것을 특징으로 하는 벡터 데이터의 어드레스 참조 방법.
  8. 제1항 내지 제5항 중 어느 한 항에 있어서, 제1 지표 벡터의 요소가 격납된 상기 요소 격납용 레지스터를 포함하는 제1 레지스터와, 제2 지표 벡터의 요소가 격납된 상기 요소 격납용 레지스터를 포함하는 제2 레지스터를 준비하고, 제1 및 제2 레지스터 각각에서의 소정 영역에 격납된 코드를 이용하여, 다수의 지표 벡터를 생성 가능하게 하는 것을 특징으로 하는 벡터 데이터의 어드레스 참조 방법.
  9. 지표 벡터를 이용하여, 벡터 데이터의 독출 또는 기입에서의 메모리 어드레스 참조를 행하는 벡터 프로세서에 있어서,
    지표 벡터의 요소를 격납하는 요소 격납용 레지스터를 구비하고,
    이 요소 격납용 레지스터는, 다수 영역으로 분할되어 각 영역에 소정의 코드가 격납되며,
    이 요소 격납용 레지스터 각각의 소정 영역에 격납된 코드를 이용하여, 다수의 지표 벡터를 생성 가능한 것을 특징으로 하는 벡터 프로세서.
  10. 제9항에 있어서, 제1 지표 벡터의 요소가 격납된 상기 요소 격납용 레지스터를 포함하는 제1 레지스터와, 제2 지표 벡터의 요소가 격납된 상기 요소 격납용 레지스터를 포함하는 제2 레지스터를 구비하고, 제1 및 제2 레지스터 각각에서의 소정 영역에 격납된 코드를 이용하여, 다수의 지표 벡터를 생성 가능한 것을 특징으로 하는 벡터 프로세서.
KR10-2004-0011855A 2003-03-28 2004-02-23 벡터 데이터의 어드레스 참조 방법 및 벡터 프로세서 KR100539112B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2003092381 2003-03-28
JPJP-P-2003-00092381 2003-03-28
JP2003203856A JP3659252B2 (ja) 2003-03-28 2003-07-30 ベクトルデータのアドレス参照方法およびベクトルプロセッサ
JPJP-P-2003-00203856 2003-07-30

Publications (2)

Publication Number Publication Date
KR20040086529A true KR20040086529A (ko) 2004-10-11
KR100539112B1 KR100539112B1 (ko) 2005-12-26

Family

ID=32829074

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-0011855A KR100539112B1 (ko) 2003-03-28 2004-02-23 벡터 데이터의 어드레스 참조 방법 및 벡터 프로세서

Country Status (5)

Country Link
US (1) US7093103B2 (ko)
EP (1) EP1462931B1 (ko)
JP (1) JP3659252B2 (ko)
KR (1) KR100539112B1 (ko)
DE (1) DE602004008818T2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140113556A (ko) * 2013-03-15 2014-09-24 인텔 코오퍼레이션 제한 범위 벡터 메모리 액세스 인스트럭션들, 프로세서들, 방법들 및 시스템들

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346763B2 (en) * 2004-06-02 2008-03-18 Broadcom Corporation Processor instruction with repeated execution code
US7747843B2 (en) * 2004-06-02 2010-06-29 Broadcom Corporation Microprocessor with integrated high speed memory
US7216218B2 (en) * 2004-06-02 2007-05-08 Broadcom Corporation Microprocessor with high speed memory integrated in load/store unit to efficiently perform scatter and gather operations
JP2010039503A (ja) * 2008-07-31 2010-02-18 Panasonic Corp シリアルメモリ装置及び信号処理システム
US8914619B2 (en) 2010-06-22 2014-12-16 International Business Machines Corporation High-word facility for extending the number of general purpose registers available to instructions
US9830151B2 (en) * 2014-12-23 2017-11-28 Intel Corporation Method and apparatus for vector index load and store
US11507374B2 (en) 2019-05-20 2022-11-22 Micron Technology, Inc. True/false vector index registers and methods of populating thereof
US11403256B2 (en) 2019-05-20 2022-08-02 Micron Technology, Inc. Conditional operations in a vector processor having true and false vector index registers
US11327862B2 (en) 2019-05-20 2022-05-10 Micron Technology, Inc. Multi-lane solutions for addressing vector elements using vector index registers
US11340904B2 (en) * 2019-05-20 2022-05-24 Micron Technology, Inc. Vector index registers
CN111782270B (zh) * 2020-06-09 2023-12-19 Oppo广东移动通信有限公司 一种数据处理方法及装置、存储介质
CN115794671B (zh) * 2023-02-07 2023-04-14 成都申威科技有限责任公司 一种兼容向量数据的访存系统及方法
CN117312330B (zh) * 2023-11-29 2024-02-09 中国人民解放军国防科技大学 基于便签式存储的向量数据聚集方法、装置及计算机设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3827031A (en) * 1973-03-19 1974-07-30 Instr Inc Element select/replace apparatus for a vector computing system
JPS61211774A (ja) 1985-03-18 1986-09-19 Fujitsu Ltd ベクトル処理装置
EP0227900B1 (en) 1985-12-02 1993-03-31 International Business Machines Corporation Three address instruction data processing apparatus
JP2598441B2 (ja) 1987-12-28 1997-04-09 株式会社日立製作所 ベクトルデータ処理装置
JP2625277B2 (ja) 1991-05-20 1997-07-02 富士通株式会社 メモリアクセス装置
JP3931577B2 (ja) 2000-11-22 2007-06-20 セイコーエプソン株式会社 メモリの使用方法、及び演算処理装置
JP2003044272A (ja) 2001-08-02 2003-02-14 Seiko Epson Corp プロセッサ、データタイプ指定方法、データロード方法、演算方法、データタイプ更新方法および命令プログラム
JP2003101415A (ja) 2001-09-19 2003-04-04 Seiko Epson Corp データ変換装置、データ生成装置、データ変換プログラム及びデータ生成プログラム、並びにデータ変換方法及びデータ生成方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140113556A (ko) * 2013-03-15 2014-09-24 인텔 코오퍼레이션 제한 범위 벡터 메모리 액세스 인스트럭션들, 프로세서들, 방법들 및 시스템들
US9448795B2 (en) 2013-03-15 2016-09-20 Intel Corporation Limited range vector memory access instructions, processors, methods, and systems

Also Published As

Publication number Publication date
US7093103B2 (en) 2006-08-15
JP3659252B2 (ja) 2005-06-15
KR100539112B1 (ko) 2005-12-26
EP1462931A2 (en) 2004-09-29
US20040250044A1 (en) 2004-12-09
JP2004355597A (ja) 2004-12-16
EP1462931B1 (en) 2007-09-12
EP1462931A3 (en) 2005-04-27
DE602004008818D1 (de) 2007-10-25
DE602004008818T2 (de) 2008-06-12

Similar Documents

Publication Publication Date Title
KR100539112B1 (ko) 벡터 데이터의 어드레스 참조 방법 및 벡터 프로세서
JP5393643B2 (ja) Simd処理における定数の生成
JP5500652B2 (ja) 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法
JP5748935B2 (ja) Simd命令をサポートするプログラマブルデータ処理回路
US10248384B2 (en) Arithmetic processing device and control method for arithmetic processing device
JP4584673B2 (ja) データ処理システム内部のテーブル検索操作
KR20060045756A (ko) 프로세서
KR970014366A (ko) 프로세서 및 데이타처리장치
KR20090064394A (ko) 복수의 메모리 뱅크를 이용한 데이터 처리
JP2005174292A (ja) データシフト操作
JP4955149B2 (ja) ビットfifoを有するディジタル信号プロセッサ
JP4686435B2 (ja) 演算装置
EP0227900B1 (en) Three address instruction data processing apparatus
KR102591988B1 (ko) 데이터 처리장치에서의 벡터 인터리빙
JP3753991B2 (ja) プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法
JP2023525812A (ja) 行列処理のための行又は列の位置のマスキング
US20020156992A1 (en) Information processing device and computer system
JP4901891B2 (ja) 画像処理プロセッサ
EP1462932A2 (en) Vector processor and register addressing method
JP2006502489A (ja) 並行処理する機能ユニットを有するデータ処理装置
JP2009059187A (ja) マイクロプロセッサおよびデータ処理方法
JP2576589B2 (ja) 仮想記憶アクセス制御方式
GB2617829A (en) Technique for handling data elements stored in an array storage
WO2023199014A1 (en) Technique for handling data elements stored in an array storage
JPH05282143A (ja) 主記憶アクセス制御回路

Legal Events

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

Payment date: 20121130

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20131119

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20141203

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee