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

데이터 처리장치 Download PDF

Info

Publication number
KR19980069845A
KR19980069845A KR1019970033526A KR19970033526A KR19980069845A KR 19980069845 A KR19980069845 A KR 19980069845A KR 1019970033526 A KR1019970033526 A KR 1019970033526A KR 19970033526 A KR19970033526 A KR 19970033526A KR 19980069845 A KR19980069845 A KR 19980069845A
Authority
KR
South Korea
Prior art keywords
address
access
instruction
bit
register
Prior art date
Application number
KR1019970033526A
Other languages
English (en)
Other versions
KR100249631B1 (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 KR19980069845A publication Critical patent/KR19980069845A/ko
Application granted granted Critical
Publication of KR100249631B1 publication Critical patent/KR100249631B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • 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/3824Operand accessing
    • 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

Landscapes

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

Abstract

모듈로 어드레싱에서 다른 2개의 데이터 단위로 액세스 가능한 데이터 처리장치를 얻는다.
제어부 112는 내부에 발생하는 포스트 갱신신호 507, 2워드 액세스 신호508과 비교기 158로부터의 일치 신호511(상위14 비트)및 일치 신호512(비트14)에 근거하여, 1워드 액세스 시와 2워드 액세스 시에 다른 종료 어드레스 판정을 행하여 그 판정 걸과를 선택적신호510으로서 셀렉터155로 출력한다. 셀렉터 신호155는 선택 신호510에 근거해서 ALU153의 출력 혹은 래치159(MOD-S156)의 출력 중, 한쪽을 선택한다.

Description

데이터 처리장치
본 발명은 고성능인 데이터 처리장치에 관한 것으로, 특히, 서큘라 버퍼를 효율적으로 액세스하기 위한 어드레싱 기능을 가지는 데이터 처리장치에 관한 것이다.
디지탈ㆍ시그널ㆍ프로세서(DSP)는 디지털 신호 처리를 고속으로 실현하는 전용의 프로세서이다. DSP에서는 서큘라 버퍼를 효율적으로 취급하기 위해서 모듈로 어드레싱(순회 어드레싱)을 구비하는 일이 많다.
DSP에서는 일반적으로 1 클럭 사이클에 1회 이상의 승가산을 하기 위해서 2개이상의 독립적으로 액세스 가능한 데이터 메모리, 또는 복수의 포트를 구비한 메모리를 가진다. 단지, 워드 사이즈는 16비트, 24비트등 여러가지 이지만, 기본적으로 1개의 메모리에 관해서는 1워드 액세스 밖에는 행하지 않는다. 그러나, 데이터 메모리를 1계통 밖에 가지지 않은 프로세서 타입의 데이터 처리장치로 1클럭 사이클에 1회 이상의 승가산을 실현하고저 하는 경우, 2개 이상의 데이터를 1사이클로 받아들일 필요가 있다. 또 1샘플 마다 차례로 처리을 하는 경우 1개의 워드 데이터의 액세스와 2개의 워드 데이터의 액세스가 혼재한다. 이러한 1워드 액세스와 2워드 액세스가 혼재하는 상황에서 정확하게 모듈로 어드레싱을 실현한 일은 없었다.
또, 일반적인 DSP에서는 예를 들면, USP4, 908,748호에 개시된 DSP와 같이, 서큘라 버퍼의 사이즈를 지정하여 포인터 갱신후의 어드레스와 서큘라 버퍼의 사이즈하에서 갱신후의 어드레스를 변경할것인가, 어떤가를 판정하고 있다. 이와 같이, 포인터의 갱신후에 어드레스의 판정을 하면 1클럭 사이클로 행하는 처리내용이 많아지게 되어, 고성능화를 위한 동작 주파수 향상의 방해가 된다.
갱신 전의 어드레스에 따라서 어드레스의 변경을 할 것인가 어떤지를 판정하는 DSP도 존재한다. 그 DSP는 서큘라 버퍼 영역의 범위를 나타내는 개시 어드레스(rb)와 종료 어드레스(re)를 유지하여 포스트인크리먼트로 어드레스가 종료 어드레스와 일치할 경우에는 개시 어드레스(rb)를 어드레스의 갱신치로서 재기록 한다. 그러나, 이러한 DSP에서는 1 인크리먼트시 밖에 모듈로 어드레싱 기능이 동작하지 않는다고 하는 문제점이 있었다.
DSP의 연산에서는 모듈로 어드레싱의 영역을 워드 어드레스로 설정하기 때문에, 자동 인크리먼트, 자동 디크리먼트로서는 1워드 액세스 밖에 할 수 없고, 모듈로 어드레싱의 설정방법도 1개밖에 없다고 하는 문제점이 있었다. 또, 모듈로 어드레싱의 영역에서 2워드 액세스를 하는 경우 2워드액세스밖에 행할 수 없다고 하는 문제점이 있었다. 또, 인크리먼트와 디크리먼트로 서큘라 버퍼의 개시 어드레스와 종료 어드레스가 반대로 되기 때문에, 개시 및 종료의 어드레스 설정을 행하는 수고가 생긴다는 문제점이 있었다.
본 발명은 이상과 같은 문제점을 해소하기 위해서 이루어진 것으로, 모듈로 어드레싱에 서 다른 2개의 데이터 단위로 액세스 가능한 데이터 처리장치 또는 인크리먼트와 디크리먼트로서 개시 어드레스와 종료 어드레스의 설정에 시간이 걸리지 않은 데이터 처리장치를 구하는 것을 목적으로 한다.
본 발명에 이러한 청구항1기재의 데이터 처리장치는 n비트 및 2n비트 데이터 단위로 액세스 가능한 서큘라 버퍼 영역이 확보된 메모리가 있으며, n비트 데이터 단위에 상기 메모리에 액세스 하여 다음에 액세스 하여야 할 n비트 데이터를 특정하는 어드레스 갱신을 하는 것을 규정한 제 1의 메모리 액세스 명령과 2n 비트 데이터 단위로 상기 메모리에 액세스하여 다음에 액세스 하여야 할 2n 비트 데이터를 특정하는 상기 어드레스 갱신을 하는 것을 규정한 제 2의 메모리 액세스 명령이 적어도 실행가능한 장치이며, 상기 서큘라 버퍼 영역의 개시 어드레스 정보를 부여하는 개시 어드레스 정보부여수단과 상기 서큘라 버퍼의 영역의 종료 어드레스 정보를 부여하는 종료어드레스 정보 부여 수단을 구비하여 상기 개시 어드레스 정보는 적어도 상기 서큘라버퍼 영역상의 2n비트 데이터를 특정 가능한 어드레스를 지시하여 상기 종료 어드레스 정보는 적어도 상기 서큘라 버퍼 영역상의 2n비트 데이터를 특정 가능한 어드레스를 지시하여 상기 개시 어드레스 정보가 지시하는 어드레스로부터 상기 종료 어드레스 정보가 지시하는 어드레스에의 방향이 어드레스 갱신 방향으로서 규정되어 상기 서큘라 버퍼의 영역상의 액세스 대상의 어드레스를 규정한 액세스 어드레스와 상기 종료 어드레스 정보의 지시하는 어드레스를 비교하여 비교 결과 정보를 출력하는 비교수단과, 상기 제 1 및 제 2의 메모리 액세스 명령 처리시에 상기 어드레스 갱신 방향에서 상기 액세스 어드레스의 다음에 배치되는 어드레스를 연산하여 연산어드레스를 출력하는 어드레스 연산수단을 더 구비하고 상기 어드레스 연산 수단은 상기 제 1의 메모리 액세스 명령 처리시에 상기 액세스 어드레스의 다음에 배치되는 n비트 데이터를 특정하는 어드레스를 상기 연산 어드레스로 하며 상기제 2의 메모리 액세스 명령 처리시에 상기 액세스 어드레스의 다음에 배치되는 2n비트 데이터를 특정하는 어드레스를 상기 연산 어드레스로 하며, 상기 비교 결과 정보에 근거해서 상기 개시 어드레스 정보의 지시하는 어드레스에 근거하는 값 또는 상기 연산 어드레스를 선택 하여 다음 액세스 대상이 되는 어드레스를 규정한 차기액세스 어드레스를 결정하는 액세스 어드레스 결정 수단을 더 구비하고, 상기 액세스 어드레스 결정 수단은 상기 제 1의 메모리 액세스 명령의 처리시에는 상기 종료 어드레스 정보가 지시하는 어드레스와 상기 액세스 어드레스와의 사이에서 n비트 데이터를 특정하는 어드레스 부분이 등가라고 하는 제 1의 조건이 성립한다고 판정하면, 상기 개시 어드레스 정보의 지시하는 어드레스에 관련하여 또 상기 서큘라 버퍼영역상의 n비트 데이터를 특정 가능한 n 비트액세스 어드레스를 상기 차기 액세스어드레스로 하고 상기 제 1의 조건이 불성립이라고 판정하면 상기 연산 어드레스를 상기 차기 액세스 어드레스로 하여 상기 제 2의 메모리 액세스 명령의 처리시에는 상기 종료 어드레스 정보가 지시하는 어드레스와 상기 액세스 어드레스와의 사이에서 2n비트데이터를 특정하는 어드레스부분이 등가 이라하는 제 2의 조건이 성립한다고 판정하면 상기 개시 어드레스 정보의 지시하는 어드레스에 관련하여 또 상기 서큘라 버퍼 영역상의 2n비트 데이터를 특정 가능한 2n비트 액세스 어드레스를 상기 차기 액세스 어드레스로 하여 상기 제 2의 조건이 불성립이라고 판정하면, 상기 연산 어드레스를 상기 차기 액세스 어드레스로 하고 있다.
또, 청구항2기재의 데이터 처리장치는 상기 제 1 및 제 2의 메모리 액세스 명령은 각각 상기 어드레스 갱신을 어드레스를 증가시켜 행하는 제 1 및 제 2의 인크리먼트 처리를 포함하고 상기 어드레스 갱신 방향은 어드레스가 증가하는 방향으로 규정되어 상기 개시 어드레스 정보 부여 수단은 상기 개시 어드레스 정보를 유지하는 개시 어드레스 정보 유지 수단을 포함하고 상기 종료 어드레스 정보 부여 수단은 상기 종료 어드레스 정보를 유지하는 종료 어드레스 정보 유지수단을 포함한 것이다.
또, 청구항3기재의 데이터 처리장치는 상기 제 1 및 제 2의 액세스 명령은 각각 어드레스를 감소시켜 상기 어드레스 갱신을 하는 제 1 및 제 2의 디크리먼트 처리를 포함하고 상기 어드레스 갱신 방향은 어드레스가 감소하는 방향으로 규정되어 상기 개시 어드레스 정보 부여수단은 상기 개시 어드레스 정보를 유지하는 개시 어드레스 정보 유지수단을 포함하고, 상기 종료 어드레스 정보 부여 수단은, 상기 종료 어드레스 정보를 유지하는 종료 어드레스 정보 유지 수단을 포함한 것이다.
또, 청구항 4기재의 데이터 처리장치는 상기 서큘라 버퍼 영역상의 하한 어드레스를 유지하는 하한 어드레스 유지수단과 상기 서큘라 버퍼 영역상의 상한 어드레스를 유지하는 상한 어드레스 유지 수단을 더 구비하며 상기 제 1 및 제 2의 메모리액세스 명령은 각각 어드레스를 증가시켜 상기 어드레스 갱신을 하는 제 1 및 제 2의 인크리먼트 처리를 포함하고 상기 제 1 및 제 2의 메모리 액세스 명령이 상기 제 1 및 제 2의 인크리먼트 처리를 하는 명령인 경우 상기 어드레스 갱신 방향은 어드레스가 증가하는 방향으로 규정되고 상기 제 1 및 제 2의 액세스 명령은 각각 어드레스를 감소 시켜 상기 어드레스 갱신을 하는 제 1 및 제 2의 디크리먼트처리를 더 포함하고 상기 제 1 및 제 2의 메모리 액세스 명령이 상기 제 1 및 제 2의 디크리먼트 처리를 행하는 명령의 경우, 상기 어드레스 갱신 방향은 어드레스가 감소하는 방향으로 규정되어, 상기 개시 어드레스 정보 부여수단은 실행 대상의 상기 제 1 및 제 2의 메모리 액세스 명령의 내용을 지시하는 실행 명령 정보, 상기 하한 어드레스 및 상기 상한 어드레스를 받아 상기 실행 명령 정보가 상기 제 1 또는 제 2의 인크리먼트 처리를 지시할 때, 상기 하한 어드레스를 지시하는 상기 개시 어드레스 정보를 부여하여 상기 실행명령 정보가 상기 제 1 또는 제 2의 디크리먼트 처리를 지시할 때 상기 상한 어드레스를 지시하는 상기 개시 어드레스 정보를 부여하는 제 1의 선택 수단을 포함하고, 상기 종료 어드레스 정보 부여 수단은 상기 실행 명령 정보, 상기 하한 어드레스 및 상기 상한 어드레스를 받아, 상기 실행 명령 정보가 상기 제 1 또는 제 2의 인크리먼트처리를 지시할 때, 상기 상한 어드레스를 지시하는 상기 종료 어드레스 정보를 부여하여 상기 실행 명령 정보가 상기 제 1 또는 제 2의 디크리먼트 처리를 지시할 때 상기 하한 어드레스를 지시하는 상기 종료 어드레스 청보를 부여하는 제 2의 선택수단을 포함한 것이다.
또, 청구항 5기재의 데이터처리장치는 상기 제 1 및 제 2의 메모리 액세스명령은 상기 메모리로부터 데이터를 받아들이는 로드 명령을 포함한 것이다.
또, 청구항 6기재의 데이터 처리장치는 상기 제 1 및 제 2의 메모리 액세스 명령은 상기 메모리에 데이터를 격납하는 스토어 명령을 포함한 것이다.
또, 본 발명에 관한 청구항7기재의 데이터 처리장치는 n비트 데이터 단위로 액세스 가능한 서큘라 버퍼 영역이 확보된 메모리가 있으며, n비트 데이터 단위로 상기 메모리로 액세스 하여, 다음에 액세스 하여야 할 n비트 데이터를 특정하는 어드레스 갱신을 하는 것을 규정한 메모리 액세스 명령이 적어도 실행 가능 장치로 상기 메모리 액세스 명령은 어드레스를 증가 시키어 상기 어드레스 갱신을 하는 인크리먼트처리, 또는 어드레스를 감소 시켜 상기 어드레스 갱신을 하는 디크리먼트 처리를 포함하고, 상기 메모리 액세스 명령이 상기 인크리먼트 처리를 하는 경우, 어드레스 갱신 방향은 어드레스가 증가하는 방향으로 규정되고 상기 메모리 액세스 명령이 상기 디크리먼트 처리를 하는 경우, 상기 어드레스 갱신방향은 어드레스가 감소하는 방향으로 규정되어, 상기 서큘라 버퍼 영역상의 하한 어드레스를 유지하는 하한 어드레스 유지수단과, 상기 서큘라 버퍼 영역상의 상한 어드레스를 유지하는 상한 어드레스 유지수단을 구비하며, 상기 하한 어드레스 및 상기 상한 어드레스는 상기 서큘라 버퍼영역상의 n비트 데이터를 특정 가능한 어드레스를 포함하고 실행 대상의 상기 메모리 액세스 명령의 내용을 지시하는 실행명령정보, 상기 하한 어드레스 및 상기 상한 어드레스를 받아, 상기 실행 명령 정보가 상기 인크리먼트 처리를 지시할 때, 상기 하한 어드레스를 지시하는 개시 어드레스 정보를 부여하고, 상기 실행 명령정보가 상기 디크리먼트 처리를 지시할 때, 상기 상한 어드레스를 지시하는 상기 개시 어드레스정보를 부여하는 제 1의 선택수단과, 상기 실행 명령정보 상기 하한 어드레스 및 상기 상한 어드레스를 받아 상기 실행 명령 정보가 상기 인크리먼트 처리를 지시할 때, 상기 상한 어드레스를 지시하는 종료 어드레스 정보를 부여하며, 상기 실행 명령 정보가 상기 디크리먼트 처리를 지시할 때, 상기 하한 어드레스를 지시하는 상기 종료 어드레스 정보를 부여하는 제 2의 선택 수단을 더 구비하고, 상기 개시어드레스 정보가 지시하는 어드레스로부터 상기 종료 어드레스 정보가 지시하는 어드레스에의 방향이 상기 어드레스 갱신 방향으로서 규정되며, 상기 서큘라 버퍼의 영역상의 액세스 대상의 어드레스를 규정한 액세스 어드레스와 상기 종료 어드레스 정보의 지시하는 어드레스와 비교하여 비교 결과 정보를 출력하는 비교수단과, 상기 메모리 액세스 명령 처리시에 상기 어드레스 갱신 방향에서 상기 액세스 어드레스의 다음에 배치되는 어드레스를 연산하여 상기 액세스 어드레스의 다음에 배치되는 n비트 데이터를 특정하는 어드레스인 연산 어드레스를 출력하는 어드레스연산 수단과, 상기 비교 결과 정보에 근거하여 상기 개시 어드레스 정보의 지시하는 어드레스또는 상기 연산 어드레스를 선택하고 다음에 액세스 대상이되는 어드레스를 규정한 차기 액세스 어드레스를 결정하는 액세스 어드레스 결정 수단을 더 구비하며, 액세스 어드레스결정수단은 상기 비교 결과정보에 근거하여 상기 종료 어드레스 정보가 지시하는 어드레스와 상기 액세스 어드레스와의 사이에서, n비트 데이터를 특정하는 어드레스 부분이 등가이라고 하는 조건이 성립한다고 판정하면, 상기 개시 어드레스 정보의 지시하는 어드레스를 차기 액세스 어드레스로 하여, 상기 제 1의 조건이 불성립이라고 판정하면, 상기 연산 어드레스를 상기 차기 액세스 어드레스로서 결정하고 있는 것이다.
도 1은 본 발명의 실시의 형태 1의 데이터 처리장치의 레지스터 세트를 나타내는 설명도.
도 2는 본 발명의 실시의 형태 1의 데이터 처리장치의 프로세서ㆍ상태ㆍ워드의 구성을 나타내는 설명도.
도 3은 본 발명의 실시의 형태 1의 데이터 처리장치의 명령 포맷을 나타내는 설명도.
도 4는 본 발명의 실시의 형태 1의 데이터 처리장치의 쇼트 포맷의 2 오퍼랜드 명령의 명령 포맷을 나타내는 설명도.
도 5는 본 발명의 실시의 형태 1의 데이터 처리장치의 쇼트 포맷의 분기 명령의 명령 포맷을 나타내는 설명도.
도 6은 본 발명의 실시의 형태 1의 데이터 처리장치의 롱 포맷의 3 오퍼랜드 명령과 로드/스토어 명령의 명령 포맷을 나타내는 설명도.
도 7은 본 발명의 실시의 형태 1의 데이터 처리장치의 오른쪽 컨테이너에 오퍼레이션 코드를 롱 포맷이 가지는 명령의 명령 포맷을 나타내는 설명도.
도 8은 본 발명의 실시의 형태 1의 데이터 처리장치의 기능 구성을 나타내는 블록도.
도 9는 본 발명의 실시의 형태 1의 데이터 처리장치의 제 1 연산부의 상세한 것을 나타내는 블록도.
도 10은 본 발명의 실시의 형태 1의 데이터 처리장치의 PC 부의 상세한 것을 나타내는 블록도.
도 11은 본 발명의 실시의 형태 1의 데이터 처리장치의 제 2연산부의 상세한 것을 나타내는 블록도.
도 12는 본 발명의 실시의 형태 1의 데이터 처리장치의 파이프라인처리를 나타내는 설명도.
도 13은 본 발명의 실시의 형태 1의 데이터 처리장치의 로드 오퍼랜드 간섭을 일으키는 경우의 파이프라인의 상태를 나타내는 설명도.
도 14는 본 발명의 실시의 형태 1의 데이터 처리장치의 연산 하드웨어 간섭을 일으키는 경우의 파이프라인의 상태를 나타내는 설명도.
도 15는 본 발명의 실시의 형태 1의 데이터 처리장치의 모듈로 어드레싱 기능을 실현하는 부분의 모식적으로 나타낸 회로도.
도 16은 2개의 경계가 함께 4바이트 정열되어 있는 서큘라 버퍼의 구성을 나타내는 설명도.
도 17은 개시 위치는 4바이트 정열, 종료위치가 4바이트 비정열의 서큘라 버퍼의 구성을 나타내는 설명도.
도 18은 개시 위치는 4바이트 비정열, 종료 위치가 4바이트 정열의 서큘라 버퍼의 구성을 나타내는 설명도.
도 19는 개시 위치, 종료 위치와 함께 4바이트 비정열의 서큘라 버퍼의 구성을 나타내는 설명도.
도 20은 2개의 경계가 함께 4바이트 정열되어 있는 서큘라 버퍼의 구성을 나타내는 설명도.
도 21은 개시위치는 4바이트 정열, 종료위치가 4바이트 비정열의 서큘라 버퍼의 구성을 나타내는 설명도.
도 22는 개시 위치는 4바이트 비정열, 종료 위치가 4바이트 정열되어 있는 서큘라 버퍼의 구성을 나타내는 설명도.
도 23은 개시 위치, 종료 위치와 함께 4바이트 비정열의 서큘라 버퍼의 구성을 나타내는 설명도.
도 24는 본 발명의 실시의 형태 1의 데이터 처리장치로 실행하는 FIR 필터의 프로그램 예를 나타내는 설명도.
도 25는 FIR 필터 처리의 계수 및 데이터의 메모리중의 할당을 나타내는 설명도.
도 26은 FIR 필터 처리의 데이터의 메모리중의 할당을 나타내는 설명도.
도 27은 FIR 필터 처리의 데이터의 메모리중의 할당을 나타내는 설명도.
도 28은 본 발명의 실시의 형태 2의 데이터 처리장치의 모듈로 어드레싱의 상한 어드레스와 하한 어드레스를 설정하는 레지스터를 나타내는 설명도.
도 29는 본 발명의 실시의 형태 2의 데이터 처리장치의 모듈로 어드레싱 기능을 실현하는 부분의 모식적으로 나타내는 회로도.
도 30은 2개의 경계가 함께 4바이트 정열되어 있는 서큘라 버퍼의 구성을 나타내는 설명도.
도 31은 본 발명의 실시의 형태 3의 데이터 처리장치의 모듈로 어드레싱의 상한 어드레스와 하한 어드레스를 설정하는 레지스터의 설명도.
도 32는 본 발명의 실시의 형태 3의 데이터 처리장치의 모듈로 어드레싱 기능을 실현하는 부분을 모식적으로 나타내는 회로도.
도 33은 2개의 경계가 함께 4바이트 정열되어 있는 서큘라버퍼의 구성을 나타내는 설명도.
도 34는 2개의 경계가 함께 4바이트 정열되어 있는 서큘라 버퍼의 구성을 나타내는 설명도.
도 35는 본 발명의 실시의 형태 4의 데이터 처리장치의 모듈로 어드레싱의 상한 어드레스와 하한 어드레스를 설정하는 레지스터의 설명도.
도 36은 본 발명의 실시의 형태 4의 데이터 처리장치의 모듈로 어드레싱 기능을 실현하는 부분의 모식적으로 나타내는 회로도.
도 37은 2개의 경계가 함께 4바이트 정열되어 있는 서큘라 버퍼의 설명도.
도 38은 본 발명의 실시의 형태 5의 데이터 처리장치의 모듈로 어드레싱의 상한 어드레스와 하한 어드레스를 설정하는 레지스터의 설명도.
도 39는 본 발명의 실시의 형태 5의 데이터 처리장치의 모듈로 어드레싱 기능을 실현하는 부분을 모식적으로 나타내는 회로도.
도 40은 2개의 경계가 함께 4바이트 정열되어 있는 서큘라 버퍼의 설명도.
* 도면의 주요부분에 대한 부호의 설명
112,616,816,916,1016 : 제어부 113 : 제 1디코더
115 : 레지스터 파일 153 : ALU
155,614,615,952,953,1052,1053 : 셀렉터
156,851 : MOD_S 레지스터 157,850 : MOD_E 레지스터
158,852,954,1054,1060 : 비교기 159,853,955,1055 : 래치
650,950,1050 : MOD_U 레지스터 651,951,1051 : MOD_L 레지스터
(제 1실시예)
기본구성
본 발명의 실시의 형태 1인 데이터 처리장치에 관해서 설명한다. 본 실시의 형태로 사용하는 데이터 처리장치는 16비트 프로세서이고, 어드레스 및 데이터의 비트 길이는 16비트로 한다.
도 1에 본 데이터 처리장치의 레지스터 세트를 나타낸다. 본 데이터 처리장치는, 비트순, 바이트순에 관해서 빅 엔디언(big Endian)을 채용하고 있어, 비트 위치는 MSB가 비트 0이 된다.
16개의 범용 레지스터 R0∼R15는 데이터와 어드레스 치를 수납한다. 레지스터 R0∼R14는 범용 레지스터이고 레지스터 R13은 서브루틴 점프(subroutine jump)시의 되돌아오는 곳 어드레스를 수납하기 위한 링크(LINK)레지스터로서 할당되어 있다. 레지스터 R15는 스택 포인터 SP이고 인터럽트용의 스택포인터 SPI와 사용자용의 스택포인터 SPU가 후에 설명하는 프로세서ㆍ스테터스ㆍ워드 PSW에 의해서 전환된다. 이후, 스택 포인터 SPI와 SPU를 총칭하여 , 스택포인터 SP라고 한다.
특별한 경우를 제외하고, 4비트의 레지스터 지정 필드로 오퍼랜드가 되는 각 레지스터의 번호가 지정된다. 본 데이터 처리장치로는 예를 들면 레지스터 R0과 R1과 같이 2개의 레지스터를 페어로 하여, 처리하는 명령을 구비하고 있다. 이 경우, 짝수 번호의 레지스터를 지정하여, 이 레지스터의 페어가 되는 레지스터는 레지스터 번호를 1플러스한 홀수 번호의 레지스터가 암묵적으로 지정된다. CR0∼CR3, CR7∼CR11은 각각 16비트의 제어레지스터이다. 각 제어레지스터도 범용 레지스터와 마찬가지로, 통상 레지스터의 번호가 4비트로 표시된다. 레지스터 CR0은 프로세서ㆍ스태터스ㆍ워드(PSW)를 수납하여 데이터 처리장치의 동작 모드를 지정하는 비트와 연산 결과를 나타내는 플래그로 이루어진다.
도 2는 레지스터 CR0 내의 PSW의 구성을 도시한 도면이다. 동 도면에 도시한 바와 같이, PSW의 비트 번호0은 스택 모드를 나타내는 SM 비트41이다. SM 비트41이 0인 경우는 인터럽트 모드인 것을 표시하며 레지스터 R15로서 스택포인터 SPI가 사용된다. 1의 경우는 유저 모드인 것을 나타내며, 레지스터 R15로서 스택 포인터 SPU가 사용된다. PSW의 비트 번호5는 인터럽트 인에이블을 지정하는 IE 비트42이고, 0의 경우는 인터럽트를 마스크(어서트되더라도 무시)하고, 1의 경우는 인터럽트를 접수한다. 본 데이터 처리장치에서는 제로 오버 헤드의 루프처리를 실현하기 위한 리피트 기능이 임플리먼트 되어 있다. PSW의 비트 번호6은 리피트 상태를 나타내는 RP 비트43이고 0의 경우는 리피트중이 아닌 것을 1의 경우는 리피트중인 것을 나타낸다. 또, 본 데이터 처리장치에서는, 서큘라 버퍼를 액세스 하기 위한 어드레싱인 모듈로 어드레싱 기능이 실행되어 있다. PSW의 비트 번호7은 모듈로 인에이블을 지정하는 MD 비트44이고, 0의 경우는 모듈로 어드레싱을 디스에이블 상태로 하여 1의 경우는 모듈로 어드레싱을 인에이블 상태로 한다. PSW의 비트 번호8은, 어큐뮬레이터의 데이터 포맷을 지정하는 FX 비트45이고, 0의 경우는 승산 결과를 정수 포맷으로 어큐뮬레이터에 격납하고, 1의 경우는 승산결과를 고정소수점포맷으로서 1비트 오른쪽으로 시프트 하여 어큐뮬레이터로 격납한다. PSW의 비트 번호9는 새츄레이숀회로모드를 지정하는 ST 비트46이다. 0의 경우는 어큐뮬레이터에 연산결과를 받아들일 때, 연산결과를 40비트로서 기록한다. 1의 경우는 어큐뮬레이터에 연산 결과를 수납할 때 32비트로 표현할 수 있는 값에 리미트 처리하여 기록한다. h'를 16진 표기로 하면, 연산 결과가h'007fffffff보다 큰 값의 경우에는, 어큐뮬레이터에h'007fffffff를 기록, 연산 결과가 h'ff80000000보다 작은 값의 경우에는, 어큐뮬레이터에 h'ff80000000을 기록한다. PSW의 비트 번호12는 실행제어 플래그(F0 플래그)47이고 비교 명령의 비교 결과등이 이 플래그에 세트된다. PSW의 비트번호13도 실행 제어플래그(F1 플래그)48이고, 비교 명령등에 의해 F0 플래그47를 갱신할 때에, 갱신전의 F0 플래그47의 값이, F1 플래그에 카피된다. PSW의 비트 번호15는 캐리ㆍ플래그(C 플래그)49이고, 가감산 명령 실행시의 캐리가 이 플래그에 세트된다.
도 1의 레지스터 CR2는 프로그램 카운터 PC이고, 실행중의 명령 어드레스를 나타낸다. 본 데이터 처리장치가 처리하는 명령은 기본적으로 32비트 고정 이고, PC(또는CR2)는 32비트를 1워드로서 어드레스를 유지한다.
레지스터 CR1은 백업ㆍ프로세서ㆍ스태터스ㆍ워드(BPSW)이고, 예외와 인터럽트가 검출된 경우의 실행중의 프로세서ㆍ스태터스ㆍ워드 PSW의 값을 퇴피ㆍ유지하기 위한 레지스터이다. 레지스터 CR3은 백업ㆍ프로그램ㆍ카운터(BPC)이고, 프로그램ㆍ카운터 PC의 값을 대피ㆍ유지하기 위한 레지스터이다. 레지스터 CR7∼CR9는 리피트관련한 레지스터이고 리피트중 일지라도 인터럽트를 접수되도록 유저가 값을 읽고 쓸 수 있게 되어 있다. 레지스터 CR7은 리피트ㆍ카운터(RPT-C)이고, 리피트 회수를 나타내는 카운트치를 유지한다. 레지스터 CR8은 리피트ㆍ스타트ㆍ어드레스(RPT-S)이고, 리피트을 하는 블록의 선두의 명령 어드레스를 유지한다. 레지스터 CR9는 리피트ㆍ엔드ㆍ어드레스(RPT-E)이고, 리피트을 하는 블록의 최후의 명령의 어드레스를 유지한다.
레지스터 CR10, CR11은 모듈로ㆍ어드레싱을 하기 위한 제어 레지스터이다. 레지스터 CR10은 모듈로ㆍ스타트ㆍ어드레스(MOD-S)를, 레지스터 CR11은 모듈로ㆍ엔드ㆍ어드레스(MOD-E)를 유지한다. 레지스터 CR10, CR11은 공히, 최초와 최종의 데이터ㆍ워드(16비트)ㆍ어드레스를 유지한다. 인크리먼트로 모듈로 어드레싱을 이용하는 경우에는 모듈로ㆍ스타트ㆍ어드레스 MOD-S로서 작은 쪽의 어드레스가, 모듈로ㆍ엔드ㆍ어드레스 MOD-E로서 큰 쪽의 어드레스가 세트되어 인크리먼트하는 레지스터 치가 모듈로ㆍ엔드ㆍ어드레스 MOD-E와 일치한 경우 인크리먼트 결과로해서 모듈로ㆍ스타트ㆍ어드레스 MOD-S의 어드레스 값이 레지스터에 재기록 된다.
도 1에 40비트의 어큐뮬레이터 A0, A1을 나타낸다. 각 어큐뮬레이터 A0, A1은, 승가산연산 결과의 상위16비트를 유지하는 A0H, A1H, 승가산 연산 결과의 하위16비트를 유지하는 A0L, A1L, 승가산 연산 결과의 상위로부터 넘친 비트를 유지하는 8비트의 가드 비트 A0G, A1G 로 이루어진다.
본 데이터 처리장치는 2웨이의 VLIW(Very Long Instruction Word)명령 세트를 처리한다. 도 3은 본 데이터 처리장치의 명령 포맷을 나타낸다. 기본 명령 길이는 32비트 고정이고 32비트 경계에 정열되어 있다. 각 32비트의 명령 코드는 명령의 포맷을 나타내는 2비트의 포맷 지정 비트(FM 비트)51과, 15비트의 왼쪽컨테이너52와 오른쪽 컨테이너53으로 구성된다. 각 컨테이너52,53은 각각15비트로 이루어지는 쇼트 포맷의 서브 명령을 수납할 수 있는 외에, 2개로 1개의 30비트의 긴 포맷의 서브 명령을 격납 할 수 있다. 금후 간단하게 쇼트 포맷의 서브 명령을 쇼트 명령, 롱 포맷의 서브 명령을 롱 명령이라고 한다.
FM 비트51은 명령의 포맷 및 2개의 쇼트 명령의 실행 순서를 지정한다. FM 비트51이 11의 경우는, 컨테이너52,53의 30비트로 1개의 명령을 유지하는 것을 나타내며, 그 이외의 경우는 각 컨테이너52,53이 각각 쇼트 명령을 유지하는 것을 나타낸다. 또, 2개의 쇼트 명령을 유지하는 경우 FM 비트51로 실행 순서를 지정한다. 0인 때는, 2개의 쇼트 명령을 병렬로 실행하는 것을 나타낸다. 1일 때는 왼쪽컨테이너52에 유지되어 있는 쇼트 명령을 실행한 후에, 오른쪽 컨테이너53에 유지되어 있는 쇼트 명령을 실행하는 것을 나타낸다. 10일 때는, 오른쪽 컨테이너53에 유지되어 있는 쇼트 명령을 실행한 후에, 왼쪽 컨테이너52에 유지되어 있는 쇼트 명령을 실행하는 것을 나타낸다. 이와 같이 시퀀셜에 실행하는 2개의 쇼트명령도 포함시켜 1개의 32비트 명령에 부호 화할 수 있도록 하여 , 코드 효율의 향상을 도모하고 있다.
도 4∼도7에 전형적인 명령의 비트 할당의 예를 게시한다. 도 4는 2개의 오퍼랜드를 가지는 쇼트 명령의 비트 할당을 나타낸다. 필드61,64는 오퍼레이션 코드 필드이다. 필드64에, 어큐뮬레이터 번호를 지정하는 경우도 있다. 필드62,63에는 오퍼랜드로서 참조 또는 갱신되는 데이터의 격납 위치를 레지스터 번호 와 어큐뮬레이터 번호로 지정한다. 필드63은 4비트의 작은 즉치(卽値)를 지정하는 경우도 있다. 도 5는 쇼트 포맷의 분기 명령의 할당을 나타내고 있고, 오퍼레이션 코드 필드71과 8비트의 분기 변위 필드72로 이루어진다. 분기 변위는 PC치와 마찬가지로, 명령 워드(32비트)의 오프셋으로 지정된다. 도 6은 16비트의 변위와 즉치를 가지는 3오퍼랜드 명령과 로드/스토어 명령의 포맷을 나타내고 있으며, 오퍼레이션 코드필드81, 쇼트 포맷과 마찬가지로 레지스터 번호 등을 지정하는 필드82,83, 16비트의 변위와 즉치 등을 지정하는 확장 데이터 필드84로 이루어진다. 도 7은 오른쪽 컨테이너 53측에 오퍼레이션 코드를 가지는 롱 포맷의 명령의 포맷을 나타내고 있고 2비트의 필드91이 1로 되어 있다. 93과 96은 오퍼레이션 코드 필드로 94와 95는 레지스터 번호 등을 지정하는 필드이다. 92는 예약 필드이고 필요에 따라서 오퍼레이션 코드와 레지스터 번호 등의 지정에 사용된다.
상술한 이외에, NOP(no operation)과 같이 15비트 전부가 오퍼레이션 코드가 되는 명령과 1오퍼랜드 명령등 특수한 명령의 비트 할당을 하는 것도 있다.
본 데이터처리장치의 각 서브 명령은 RISC 유사한 명령 세트로 되어 있다. 메모리데이터의 액세스를 하는 명령은 로드/스토어 명령뿐이고 연산 명령은 레지스터/어큐뮬레이터중의 오퍼랜드와 즉치 오퍼랜드에 대하여 연산을 한다. 오퍼랜드 데이터의 어드레싱 모드로서는 레지스터 간접 모드, 포스트 인크리먼트가 부착된 레지스터 간접모드, 포스트 디크리먼트가 부착된 레지스터 간접 모드, 푸시 모드, 레지스터 상대 간접 모드의 5종류가 있다. 각각의 뉴모닉(mnemonic)은, Rsrc, Rsrc+, Rsrc -, - SP, (disp 16, Rsrc)로 표시된다. Rsrc는 베이스 어드레스를 지정하는 레지스터번호를, disp 16은 16비트의 변위치를 나타낸다. 오퍼랜드의 어드레스는 바이트(byte) 어드레스로 지정된다.
레지스터 상대 간접 모드 이외의 모드는 도 4에 나타난 명령 포맷이 된다. 필드63으로 베이스 레지스터 번호가 지정되고, 필드62로 메모리로부터 로드 된 값을 기록하는 레지스터의 번호 또는 스토어 하는 값을 유지하는 레지스터의 번호가 지정된다. 레지스터 간접 모드는 베이스 레지스터로서 지정된 레지스터의 값이 오퍼랜드 어드레스가 된다. 포스트 인크리먼트가 부착된 레지스터 간접 모드는 베이스 레지스터로서 지정된 레지스터의 값이 오퍼랜드 어드레스가 되고, 이 베이스 레지스터의 값이 오퍼랜드의 사이즈(바이트 수)만큼 포스트 인크리먼트 되어, 재기록 된다. 포스트 디크리먼트가 부착된 레지스터 간접 모드는 베이스 레지스터로해서 지정된 레지스터의 값이 오퍼랜드 어드레스가 되고 이 베이스 레지스터의 값이 오퍼랜드의 사이즈(바이트 수)만큼 디크리먼트 되어서 재기록 된다. 푸시 모드는 스토어 명령으로, 또 베이스 레지스터가 레지스터 R15의 경우에만 사용 가능하고 스택 포인터(SP)값이 오퍼랜드의 사이즈(바이트 수)만큼 프리 디크리먼트된 값이, 오퍼랜드 어드레스가되어, 디크리먼트된 값이 SP로 재기록 된다.
레지스터 상대 간접 모드는 도 6에 나타내는 명령 포맷이 된다. 필드83으로 베이스 레지스터 번호가 지정되고, 필드82로 메모리로부터 로드해온 값을 기록하는 레지스터의 번호 또는 스토어하는 값을 유지하는 레지스터의 번호가 지정된다. 필드84는 오퍼랜드 수납 위치의 베이스 어드레스로부터의 변위치(變位値)를 지정한다. 레지스터 상대 간접 모드는 베이스 레지스터로 해서 지정된 레지스터의 값에 16비트의 변위치를 가산한 값이 오퍼랜드 어드레스가된다.
포스트 인크리먼트가 부착된 레지스터 간접 모드와 포스트 디크리먼트가 부착된 레지스터 간접모드에서는 PSW 중의 MD 비트44를 1로 설정하는 것으로, 모듈로 어드레싱 모드가 사용될 수 있다.
점프 명령의 점프 선(先)어드레스지정에는 점프 선 어드레스를 레지스터 치로 지정하는 레지스터 간접과, 점프 명령의 PC에서의 분기 변위로 지정하는 PC 상대 간접이 있다. PC 상대 간접에 관해서는 분기 변위를 8비트로 지정하는 쇼트 포맷과 분기 변위를 16비트로 지정하는 긴 포맷의 2종류가 있다. 또, 오버헤드없이 루프처리를 실현하는 리피트 기능을 기동하기 위한 리피트명령도 구비한다.
도 8에 본 데이터 처리장치100의 기능 블록 구성을 나타낸다. 데이터 처리장치100은, MPU 코어부101과 MPU 코어부101로부터의 요구에 의해 명령 데이터의 액세스를 하는 명령 페치부102, 내장 명령 메모리103, MPU 코어부101로부터의 요구에 의해 오퍼랜드 데이터의 액세스을 행하는 오퍼랜드 액세스부104, 내장 데이터 메모리105, 명령 페치부102와 오퍼랜드 액세스부104로부터의 요구를 조정하여 데이터 처리장치100의 외부 메모리의 액세스등을 행하는 외부 버스 인터페이스부106로 이루어진다.
MPU 코어부101은 명령큐111, 제어부112, 레지스터 파일115, 제 1연산부116, 제 2연산부117, PC 부118로 이루어진다.
명령큐111은 2엔트리의 32비트 명령 버퍼와 유효 비트 및 입출력 포인터 등으로 이루어져 FIFO(First In First Out)방식으로 제어된다. 명령큐111은 명령 페치부102로 페치된 명령 데이터를 일시 유지하여 제어부112로 보낸다.
제어부112는 전술한 명령큐111의 제어, 파이프라인 제어, 명령의 실행, 명령 페치부102와 오퍼랜드 액세스부104와의 인터 페이스 등, MPU 코어부101의 모든 제어를 한다. 또, 제어부112에는 명령큐111로부터 보내진 명령코드를 디코드하기 위한 명령 디코드부119가 있고, 2개의 디코더를 포함한다. 제 1디코더113은 제 1 연산부116에서 실행하는 명령을 디코드하고, 제 2디코더114는 제 2연산부117로 실행하는 명령을 디코드 한다. 32비트의 명령의 디코드의 제 1사이클에서는 반드시 왼쪽 컨테이너52(도 3)의 명령코드가 제 1디코더113으로 해석되어 오른쪽 컨테이너53의 명령코드가 제 2디코더114로 해석된다. 따라서, 최초에 실행하는 명령은 그 명령을 실행하는 연산기에 대응한 위치에 두지 않으면 안된다.
단지, FM 비트51 및 왼쪽 컨테이너52의 비트0과 비트1과의 데이터는 양쪽의 디코더로 해석된다. 또, 확장 데이터의 잘라내기 위해서, 오른쪽 컨테이너53의 데이터가 제 1디코더113에 보내어지지만, 해석은 행하지 않는다. 2개의 쇼트 명령을 시퀀셜로 실행하는 경우, 선행하여 실행되는 명령의 디코드중 후에 실행되는 측의 명령이 도시하지 않은 프리 디코더로 디코드 되며, 어느 쪽의 디코더로 디코드 할 것인가를 판정한다. 후에 실행되는 명령이 어느쪽의 디코더라도 처리할 수 있는 명령의 경우는 제 1디코더113으로 디코드한다. 선행하는 명령의 디코드후, 후에 실행하는 명령의 명령코드가 선택된 디코더로 입력되어 해석된다.
레지스터파일115는 레지스터 R0∼R15(도 1)의 값을 유지하고, 제 1연산부116, 제 2연산부117, PC 부118, 오퍼랜드 액세스부104에 복수의 버스로 결합되어 있다.
도 9에 제 1연산부116의 상세 블록 구성을 나타낸다. 제 1연산부116은 레지스터 파일115와, 각각 S1 버스301, S2 버스302, S3 버스303에 의해서 결합되어 있고, 이들 3개의 버스301∼303을 통해 레지스터 파일115로부터 데이터를 판독, 연산기 등에 리이드 오퍼랜드가 되는 데이터와 스토어 데이터를 전송한다. S1 버스301은 짝수 번호의 레지스터에 에만, S2 버스302는 홀수 번호의 레지스터에 에만 결합되어 있고 S1 버스301과 S2 버스302에서 레지스터 페어의 2워드를 병렬로 전송할 수도 있다. S3 버스303은 모든 레지스터에 결합되어 있다.
또, 제 1연산부116은 레지스터 파일115와, 각각 D1 버스311, W 버스314로 결합되어 있고, D1 버스311을 통해 연산 결과와 전송 데이터를 레지스터 파일115로 전송하여 W 버스314에 로드된 바이트 데이터를 레지스터 파일115로 전송한다. D1 버스311, W 버스314 모두, 전체의 레지스터에 결합되어 있다. 또, 레지스터 파일115는 오퍼랜드 액세스부104와 32비트의 OD 버스322로 결합되어 있고, 1워드의 데이터 또는 레지스터페어의 2워드를 병렬로 전송하는 것이 가능하다. OD 버스322의 상위/하위 16비트는 임의의 레지스터 파일에 기입을 할 수 있도록 레지스터 파일115의 전체의 레지스터에 결합되어 있다.
AA 래치151, AB 래치152는 ALU153의 입력래치이다. AA 래치151은 S1 버스301, S2 버스302 또는 S3 버스303을 통해 판독된 레지스터 치를 받아들인다. 동 래치151은 제로 클리어 하는 기능도 구비하고 있다. AB 래치152는 S3 버스303을 통해서 판독된 레지스터치 또는 제 1디코더113으로 디코드의 결과생성된 16비트의 즉치를 받으며 또, 제로 클리어 하는 기능도 구비하고 있다.
ALU153에서는 주로 전송, 비교, 산술 논리 연산, 오퍼랜드 어드레스의 계산/전송, 오퍼랜드 어드레스 치의 인크리먼트/디크리먼트, 점프 선 어드레스의 계산/전송 등이 행하여진다. 연산 결과와 어드레스 수정한 결과는 셀렉터155, D1 버스311을 통해서, 레지스터파일115중의 명령으로 지정된 레지스터로 재기록 된다. 예를 들면, ALU153이 인크리먼트(디크리먼트)의 계산을 하는 경우, AA 래치151에 유지된 베이스 어드레스와 AB 래치152에 유지된 증가(감소)어드레스치를 가산 처리를 행한다. AB 래치152에는 2워드 액세스의 경우에 4, 1워드 액세스의 경우에 2가 유지된다.
또, 지정된 조건이 성립했을 경우에는 1을 불성립의 경우에는 0을 레지스터에 기록하는 조건 세트 명령을 실행하기 위해서, 셀렉터155는 연산 결과의 최하위 비트에 제어부112로부터 출력된 데이터를 채우는 기능을 구비한다. 이 경우 연산결과는 제로가 출력되도록 제어된다. AO 래치154는 오퍼랜드의 어드레스를 유지하는 래치이고 ALU153 에서의 어드레스 계산결과 또는 AA 래치151에 유지된 베이스 어드레스의 값을 선택적으로 유지하여 OA 버스321을 통해 오퍼랜드 액세스부104로 출력한다. 또, 점프선 어드레스와 리피트 엔드 어드레스를 계산할 경우에는 ALU153의 출력이, JA 버스323을 통해 PC부118로 전송된다.
모듈로 연산부700은 MOD-S156, MOD_E157, 비교기158, 래치159로 이루어진다. MOD-S 156 및 MOD_E 157은 각각 도 1의 CR10(모듈로ㆍ스타트ㆍ어드레스(MOD-S)를 유지) 및 CR11(모듈로ㆍ엔드ㆍ어드레스(MOD-E)를 유지)에 대응하여 설치되는 제어 레지스터이다. 비교기 158은 MOD_E 157의 값과 S3 버스 303상의 베이스 어드레스의 값을 비교한다. MOD-S 156은 래치159를 통해 셀렉터155에 결합되어 있다. 상세한 동작에 관해서는 후술한다.
스토어 데이터(SD)레지스터160은 16비트의 레지스터2개로 이루어져, S1 버스301또는 S2 버스302의 한쪽, 또는 S1 버스301과 S2 버스302의 양쪽에 출력된 스토어 데이터를 일시 유지한다. SD 레지스터160에 유지된 데이터는 래치161을 통해 정열회로162로 전송된다. 정열회로162에서는 오퍼랜드의 어드레스에 따라서, 스토어데이터가 32비트 경계로 정열되어, 래치163, OD 버스322를 통해 오퍼랜드 액세스부104로 출력된다.
또, 오퍼랜드 액세스부104로 로드 된 바이트 데이터는 OD 버스322를 통해 16비트의 로드 데이터(LD)레지스터164에 입력된다. LD 레지스터164의 값은 래치165를 통해 정열회로166로 전송된다. 정열회로166에서는 바이트 정열 및 바이트 데이터의 제로/부호 확장을 한다. 정열, 확장후의 데이터가 W 버스314를 통해서 레지스터 파일115중의 지정된 레지스터에 기록된다. 1워드(16비트)로드, 2워드(32비트)로드인 경우에는 LD 레지스터를 통하지 않고 OD 버스322로부터 레지스터 파일115에 로드 한 값이 직접 기록된다.
제어부112중의 PSW 부171은 도 1의 레지스터 CR0의 값을 유지하는 PSW 래치172와, PSW 갱신 회로 등으로 이루어져, 연산 결과와 명령의 실행에 의해 PSW 래치172의 값을 갱신한다. PSW 래치172에 값을 전송하는 경우, S3 버스303에 출력된 데이터가 TPSW 래치167을 통해 필요한 비트(어서트 되어있는 비트)만 전송된다. PSW 래치172의 값을 판독하는 경우에는 PSW 부171로부터 D1 버스311에 출력되어 레지스터 파일115에 기록된다. BPSW 래치168은 도 1의 레지스터 CR1에 해당하는 레지스터이다. 예외 처리 시에는 D1 버스311에 출력된 PSW의 값이 BPSW 래치168에 기록된다. BPSW 래치의 값을 레지스터 파일115로 전송하는 경우에는, BPSW 래치168의 값은 S3 버스303으로 판독되고, 레지스터 파일등 필요한 장소로 전송된다. 할당되어 있지 않은 비트는 강제적으로 제로가 S3 버스303로 출력된다. 예외로부터 복귀할때에는, BPSW 래치168의 값은 직접TPSW 래치167를 통해 필요한 비트(할당되어 있는 비트)만 PSW 래치172로 전송된다.
도 10은 PC 부118의 상세 블록도이다. 명령 어드레스(IA)레지스터181은 다음에 페치 하는 명령의 어드레스를 유지하고 다음에 페치 하는 명령의 어드레스를 명령 페치부102로 출력한다. 계속해서 후속 명령을 페치하는 경우에는 IA 레지스터181로부터 래치182를 통해 전송된 어드레스치가 인크리먼터183에서 1인크리먼트되어 IA 레지스터181로 재기록 된다. 점프와 리피트등에 의해 시퀀스가 전환되는 경우에는 IA 레지스터181은 JA 버스323을 통해 전송되는 점프 선 어드레스, 리피트 블록 개시 어드레스를 받아들인다.
RPT-S 레지스터184, RPT-E 레지스터186, RPT-C 레지스터188은 리피트 제어용의 제어레지스터이고 각각 도 1의 레지스터 CR8, 레지스터 CR9, 레지스터 CR7에 대응한다. RPT-E 레지스터186은 리피트를 행하는 블록의 최종 명령의 어드레스를 유지한다. 이 최종어드레스는 리피트 명령 처리 시에 제 1연산부116으로 계산되어 JA 버스323를 통해 RPT-E 레지스터186로 받아들인다. 비교기187은 리피트 하는 블록의 최종 명령의 어드레스를 유지하는 RPT-E 레지스터186의 값과 페치 어드레스를 유지하고 있는 IA 레지스터181의 값을 비교한다. 혹시 리피트 처리중에 있고 리피트하는 회수를 유지하는 RPT-C 레지스터188의 값이 1이 아니고 또,2개의 어드레스가 일치한 경우 RPT-S 레지스터184에 유지되어 있는 리피트 행하는 블록의 개시 어드레스가 래치185, JA 버스323를 통해서, IA 레지스터181로 전송된다. 리피트 종료 어드레스의 명령이 실행될 때마다 RPT-C 레지스터188의 값은 래치189를 통하여 디크리먼터190에서 1만큼만 디크리먼트된다. 디크리먼트한 값이, 0인 경우에는, PSW 중의 RP 비트43를 클리어하여, 리피트 처리를 종료한다. RPT-S 레지스터184, RPT-E 레지스터186, RPT-C 래치188는, D1 버스311로부터의 입력포트와 S3 버스303에의 출력 포트를 가져, 필요에 따라서 리피트시의 초기 설정과 대피복귀가 행하여진다.
실행 스테이지PC(EPC)194는 실행중의 명령의 PC치를 유지하여 다음 명령PC(NPC)191은 다음에 실행하는 명령의 PC 치를 유지한다. NPC191은 실행 단계에서 점프가 발생한 경우, JA 버스323상의 점프 선 어드레스 치를 받아들여. 리피트에서 분기가 발생한 경우에는 래치185로부터 리피트를 행하는 블록의 선두 어드레스를 받아들인다. 그 이외의 경우에는 래치192를 통해 전송된 NPC191의 값이 인크리먼터193에서 인크리먼트되어 NPC191에 재기록 된다. 서브 루틴 점프 명령의 경우에는 래치192의 값이 리턴 어드레스로해서 D1 버스311로 출력되고, 레지스터 파일115중의 링크 레지스터로서 정의되어 있는 레지스터 R13에 재기록 된다. 또, 다음 명령이 실행 상태에 들어 가는 경우에는 래치192의 값이 EPC194에 전송된다. 실행중의 명령의 PC 치를 참조하는 경우에는 EPC194의 값이 S3 버스303에 출력되어 제 1연산부116로 전송된다. BPC196은 도 1에 나타낸 레지스터 세트의 레지스터 CR3에 대응한다. 예외와 인터럽트등이 검출된 경우에는 EPC194의 값이 래치195를 통해BPC 196로 전송된다. BPC196은 D1 버스311로부터의 입력 포트와 S3 버스303에의 출력포트를 가지고, 필요에 따라서 대피 복귀가 행하여진다.
도 11에 제 2연산부117의 상세 블록도를 나타낸다. 제 2연산부117은 레지스터 파일115와 각각 S4 버스304, S5 버스305로 결합되어 있고, 이 2개의 버스304,305를 통해 데이터를 레지스터 파일115로부터 판독한다. S4 버스304와 S5 버스305로 레지스터페어의 2워드를 병렬로 전송하는 것도 가능하다. 또, 제 2연산부117은 레지스터 파일115와 D2 버스312, D3 버스313으로 결합되어 있고 이 2개의 버스312,313을 통해 데이터를 레지스터 파일115내의 각 레지스터에 기록할 수 있다. D2 버스312는 짝수 번호의 레지스터에만 D3 버스313은 기수 번호의 레지스터에만 각각 결합되어 있다. D2 버스312와 D3 버스313으로 레지스터 페어의 2워드를 병렬로 전송하는 것도 가능하다. .어큐뮬레이터208은 도 1의 어큐뮬레이터 A0, A1의 2가닥의 40비트어큐뮬레이터에 해당한다.
201은 40비트의 ALU이고 비트 번호0으로부터 비트 번호7까지의 8비트가 어큐뮬레이터의 가이드 비트용 가산기, 비트 번호8로부터 비트 번호23까지의 16비트가 산술 논리 연산기, 비트 번호24로부터 비트 번호39까지의 16비트가 어큐뮬레이터의 하위16비트를 가산하기 위한 가산기로 되어 있어 40비트까지의 가감산과 16비트의 논리연산을 한다.
A 래치202, B 래치203은 ALU201의 40비트 입력 래치이다. A래치202는 S4 버스304로부터 레지스터 치를 비트 번호8로부터 비트 번호23의 위치로 받아드리거나, 시프터204를 통해서, 어큐뮬레이터208의 값을 그대로 또는 16비트 산술 오른쪽 시프트한 값을 받아들인다. 시프터205는 어큐뮬레이터208의 값을 배선206(가이드비트 8비트), S4 버스304(상위 16비트), S5 버스305(하위16 비트)를 통해 입력하던가, 레지스터의 값을 S5 버스305만, 또는 S4 버스304와 S5 버스305의 양쪽을 통해서 16비트 또는 32비트의 데이터를 오른쪽 끝으로 받아들여 40비트로 부호확장한다. 시프터205는 입력한 데이터를 왼쪽3비트로부터 오른쪽 2비트의 임의의 시프트량으로 산술 시프트하여 출력한다. B 래치203은 S5 버스305상의 데이터를 비트 번호8로부터 비트 번호23의 위치로 받아들이거나, 승산기의 출력, 또는 시프터205의 출력을 받아들인다. A 래치202, B 래치203은 각각 제로 클리어 하기도 하고 정수의 값에 설정하기도 하는 기능도 가진다.
ALU201의 출력은 새츄레이숀회로209로 출력된다. 새츄레이숀회로209는 상위16비트, 또는 상위 하위 합쳐진 32비트로 할 때에 가이드 비트를 보고 각각 16비트 또는 32비트로 표현할 수 있는 최대치 또는 최소치로 클립핑하는 기능을 구비한다. 물론, 그대로 출력하는 기능도 있다. 새츄레이숀회로209의 출력은 배선207에 결합되어 있다.
데스티네이숀 오퍼랜드가 어큐뮬레이터208의 경우에는 배선207의 값이 어큐뮬레이터208에 기록된다. 데스티네이숀 오퍼랜드가 레지스터의 경우는 배선207의 값이, D2 버스312와 D3 버스313을 통해서, 레지스터 파일115에 기록된다. 1워드 전송의 경우에는 데스티네이숀 레지스터의 번호가 짝수의 경우 D2 버스312에, 기수의 경우에는 D3 버스313에 출력된다. 2워드전송의 경우에는 상위 측의 16비트 데이터가 D2 버스312에 하위 측의 비트 데이터가 D3 버스313으로 출력된다. 또, 전송명령, 절대치의 계산, 최대치 설정 명령과 최소치 설정명령을 실행하기 위해서, A 래치202와 B 래치203의 출력이 배선207에 결합되어 있고 A 래치202와 B 래치203의 값을 어큐뮬레이터208과 레지스터 파일115로 전송하는 것이 가능하다.
프라이어리티 인코더210은 래치 B203의 값을 받아들여, 고정 소수점포맷의 수를 정규화 하는 데 필요한 시프트 량을 계산하고 레지스터파일115에 재기록 하기 위해서 결과를 D2 버스312 또는 D3 버스313로 출력한다.
X 래치212, Y 래치213은 승산기의 입력 레지스터이고, 각각 S4 버스304, S5 버스305의 16비트의 값을 받아들여 17비트에 제로 확장 또는 부호 확장하는 기능을 구비한다. 승산기211은 17비트 × 17비트의 승산기이고, X 래치212에 수납된 값과의 Y 래치213에 수납된 값과의 승산을 한다. 승가산(積和)명령과 승감산(積差)명령의 경우에는 승산결과는 P 래치214로 받아들여, B 래치203로 보내진다. 승산 명령으로 데스티네이숀 오퍼랜드가 어큐뮬레이터208의 경우에는, 승산 결과를 어큐뮬레이터208에 기록한다.
배럴 시프터(barrel shifter)215는 40비트 또는 16비트의 데이터에 대하여, 좌우16비트까지의 산술/논리 시프트가 가능하다. 시프트 데이터는 어큐뮬레이터208의 값 또는 S4 버스304를 통해 레지스터의 값이 시프트 데이터(SD)래치217로 받아들인다. 시프트 량에 관해서는 즉치(卽値) 또는 레지스터 치가 S5 버스305를 통해서 시프트량(SC)래치216으로 받아들인다. 배럴시프터215는 SD 래치217의 데이터를 SC 래치216로 지정되는 시프트량만큼 오퍼레이션 코드로 지정된 시프트를 행한다. 시프트 결과는 새츄레이숀회로209로 출력되어 ALU 에서의 연산결과와 마찬가지로, 필요에 따라서 새츄레이숀이 행해져, 배선207에 출력된다. 배선207에 출력된 값은 어큐뮬레이터208 또는 D2 버스312, D3 버스313를 통해 레지스터 파일115에 재기록 된다.
즉치(卽値)래치218은 제 2디코더114에서 생성된 6비트의 즉치를 16비트로 확장하여 유지하며, S5 버스305를 통해서 연산기로 전송한다. 비트 조작 명령의 비트 마스크도 여기서 생성된다.
다음에 본 데이터 처리장치의 파이프라인 처리에 관해서 설명한다. 도 12는 파이프라인 처리를 도시한 도면이다. 본 데이터 처리장치는, 명령 데이터의 페치를 하는 명령 페치(IF)스테이지401, 명령의 해석을 하는 명령 디코드(D)스테이지402, 연산 실행을 하는 명령 실행(E)스테이지403, 데이터 메모리의 액세스을 하는 메모리 액세스(M)스테이지404, 메모리로부터 로드한 바이트 오퍼랜드를 레지스터로 기록하는 라이트백(W)스테이지405의 5단의 파이프 라인 처리를 한다. E 스테이지403에서의 연산결과의 레지스터에의 기록은 E 스테이지403로 완료하고, 워드(2바이트), 2워드(4바이트)로드시의 레지스터에의 기록은 M 스테이지404로 완료한다. 승가산/승감산 연산에 관해서는, 더욱 승산과가산의 2단의 파이프라인으로 명령의 실행을 한다. 후단의 처리를 명령 실행2(E2)스테이지406라고 칭한다. 연속하는 승가산/승감산 연산을 1회/1클럭 사이클의 스루풋으로 실행할 수 있다.
IF 스테이지401에서는 주로 명령의 페치, 명령큐111의 관리, 리피트 제어가 행하여진다. 명령 페치부102, 내장 명령 메모리103, 외부 버스인터 페이스부106, 명령큐111, PC 부118의 IA 레지스터181, 래치182, 인크리먼터183, 비교기187등과 제어부112의 IF 스테이지 스테이지 제어, 명령 페치제어, PC 부118제어 등을 행하는 부분이, 이 IF 스테이지401의 제어로 동작한다. IF 스테이지401은 E 스테이지403의 점프로 초기화된다.
페치 어드레스는 IA 레지스터181로 유지된다. E 스테이지403으로 점프가 발생하면 JA 버스323을 통해 점프선 어드레스를 받아들여 초기화를 한다. 시퀀셜에 명령데이터를 페치 하는 경우에는, 인크리먼트기183으로 어드레스를 인크리먼트한다. 리피트처리중에 비교기187로 IA 레지스터181의 값과 RPT-E186의 값이 일치하고 있는 것이 검출되어 또, RPT-C의 값이 1이 아니면 시퀀스의 전환 제어가 행하여진다. 이 경우, RPT-S184에 유지되어 있는 값이 래치185, JA 버스323을 통해서 IA 레지181로 전송된다.
IA 레지스터181의 값은 명령 페치부102로 보내져, 명령 페치부102가 명령 데이터의 페치 한다. 대응하는 명령 데이터가 내장 명령 메모리103에 있는 경우에는 내장 명령메모리103으로부터 명령 코드를 판독한다. 이 경우, 1클럭 사이클로 32비트의 명령의 페치를 완료한다. 대응하는 명령 데이터가 내장 명령 메모리103에 없는 경우에는 외부 버스 인터페이스부106에 명령 페치 요구를 낸다. 외부 버스 인터페이스부106은 오퍼랜드 액세스부104로 부터의 요구를 조정하여, 명령 받아들이기 가능하게 되면, 외부의 메모리로부터 명령 데이터를 받아, 명령 페치부102로 보낸다. 외부 버스 인터페이스부106은 최소 2클럭 사이클로 외부메모리의 액세스를 하는 것이 가능하다. 명령 페치부102는 입력된 명령을 명령큐111로 전송한다. 명령큐111은 2엔트리(entry)의 큐로 되어 있고, FIFO 제어로 입력된 명령코드를 명령 디코드부119로 출력한다.
D 스테이지402에서는 명령 디코드부119로 오퍼레이션 코드의 해석을 하여 제 1연산부116, 제 2연산부117, PC부118등으로 명령의 실행을 하기 위한 제어 신호군을 생성한다. D 스테이지402는 E스테이지403의 점프로 초기화된다. 명령큐111로부터 보내오는 명령코드가 무효인 경우에는 아이들 사이클이 되어 유효한 명령코드가 입력될 때까지 기다린다. E 스테이지403이 다음 처리를 개시할 수 없는 경우에는 연산기 등에 보내는 제어신호를 무효화하여, E 스테이지403에서의 선행 명령의 처리의 종료를 기다린다. 예를 들면 E 스테이지403으로 실행중의 명령이 메모리 액세스를 하는 명령이고 M 스테이지404에서의 메모리액세스가 종료 하지 않은 경우에 이러한 상태가 된다.
D 스테이지402에서는 시퀀셜 실행을 하는 2명령의 분할과 2사이클 실행명령의 시퀀스제어도 행한다. 또, 스코어보드 레지스터(도시하지 않음)를 사용한 로드 오퍼랜드의 간섭체크와 제 2연산부117에서의 연산기의 간섭 체크 등도 행하고, 간섭이 검출된 경우에는 간섭이 해소될 때까지 제어 신호의 출력을 억지 한다. 도 13은 로드 오퍼랜드 간섭이 예를 나타낸다. 워드 또는 2워드의 로드 명령의 직후에 로드 하는 오퍼랜드를 참조하는 승가산 연산 명령이 있는 경우 레지스터에의 로드가 완료할 때까지 승가산 연산 명령의 실행개시를 억지 한다. 이 경우 메모리 액세스가 1클럭 사이클로 종료하는 경우라도, 1클럭 사이클 스트롤이 생긴다. 바이트 데이터를 로드 하는 경우에는 또 W 스테이지로 레지스터 파일에의 기록이 완료하기 때문에, 또 1사이클 스트롤 사이가 연장된다. 도 14는 연산 하드웨어 간섭의 예를 나타낸다. 승가산명령의 직후에 가산기를 사용하는 라운딩 명령이 있는 경우, 선행의 승가산 명령의 연산이 종료할 때까지 라운딩 명령의 실행 개시를 억지 한다. 이 경우 1클럭사이클 스트롤이 생긴다. 승가산 연산 명령이 연속하는 경우에는 스트롤을 발생하지 않는다.
제 1디코더113은 주로 제 1연산부116의 전부, PC부118의 IF 스테이지401로 제어되는 부분이외, 레지스터 파일115의 S1 버스301, S2 버스302, S3 버스303에의 판독 제어와 D1 버스311로부터의 기록 제어에 관한 실행 제어 신호를 생성한다. 명령에 의존하는 M 스테이지404와 W 스테이지405에서의 처리에 필요한 제어신호도 여기서 생성되어, 파이프라인의 처리의 흐름에 부수 하여 전송된다. 제 2디코더114는 주로 제 2연산부117에서의 실행제어, 레지스터 파일115의 S4 버스304, S5 버스305에의 판독 제어와 D2 버스312, D3 버스313으로 부터의 기록 제어에 관한 실행 제어 신호를 생성한다.
E 스테이지403에서는 연산 비교 제어 레지스터를 포함하는 레지스터간 전송 로드/스토어 명령의 오퍼랜드 어드레스계산, 점프 명령의 점프선 어드레스의 계산, 점프 처리, EIT(예외, 인터럽트, 트랩의 총칭)검출과 각EIT의 벡터 테이블에의 점프 등, 메모리 액세스와 승가산/승감산 연산 명령의 가산 처리를 제외하는 명령 실행에 관한 대부분의 거의 모든 처리를 한다.
인터럽트 인에이블의 경우의 인터럽트의 검출은 반드시 32비트 명령의 사이에 행해진다. 32비트 명령 중에 시퀀셜에 실행하는 2개의 쇼트 명령이 있는 경우에 이 2개의 쇼트 명령사이에서 인터럽트를 접수하는 일은 없다.
E 스테이지403으로 처리중의 명령이 오퍼랜드 액세스를 하는 명령이고, M 스테이지404로 메모리 액세스가 완료 하지않은 경우에는 E 스테이지403에서의 완료는 기다리게된다. 스테이지 제어는 제어부112로 행해진다.
E 스테이지403에서 제 1연산부116에서는 산술 논리 연산, 비교, 전송을 행한다. 모듈로의 제어를 포함하는 메모리 오퍼랜드의 어드레스와, 분기선의 어드레스 계산도 이 ALU153으로 행해진다. 오퍼랜드로서 지정된 레지스터의 값이 S1 버스301, S2 버스302, S3 버스303로 판독되어, 별도 입력되는 즉치, 변위등의 확장 데이터와 동시에, ALU153으로 연산이 행하여져, 연산 결과가 D1 버스311을 통해 레지스터파일115로에 재기록 된다. 로드/스토어 명령의 경우에는 연산 결과는 AO 래치154, OA 버스321을 통해서, 오퍼랜드 액세스부104로 보내져, 점프 명령의 경우에는 점프선 어드레스가 JA 버스323을 통해, PC부118로 보내진다. 스토어 데이터는 S1 버스301, S2 버스302를 통해서 레지스터 파일115로부터 판독되고 SD 레지스터160, 래치161로 유지되어, 정열회로166으로 정열이 행하여진다. 또, PC부118에서는 실행중의 명령의 PC 치의 관리, 다음에 실행하는 명령의 어드레스의 생성이 행하여진다. 제 1연산부116 PC부118에 포함되는 제어 레지스터(어큐뮬레이터를 제외)와 레지스터 파일115 사이의 전송은 S3 버스303, D1 버스311을 통해 행해진다.
E 스테이지403에서 제 2연산부117에서는 산술 논리 연산, 비교, 전송, 시프트, 타승가산의 가산 이외의 모든 연산실행이 행하여진다. 오퍼랜드의 값이, 레지스터 파일115와 즉치 레지스터218, 어큐뮬레이터208등으로부터, S4 버스304, S5 버스305와 기타의 전용 경로를 통해 각 연산기로 전송되어 지정된 연산을 행하여 어큐뮬레이터208과 D2 버스312, D3 버스313을 통해 레지스터 파일115로 재기록 된다.
제 1연산부116 및 제 2연산부117에서의 연산 결과에 의한 PSW172 중의 플래그 치의 갱신제어도, E 스테이지403으로 행해진다. 그러나 연산 결과의 확정이 E 스테이지403의 지연 시기가 되기 때문에, 실제의 PSW172의 값의 갱신은 다음 사이클로 행해진다. 데이터 전송에 의한 PSW172의 갱신은 대응하는 사이클로 완료한다.
제 2디코더114로 생성된 승가산/승감산 연산의 가감산 실행을 위한 연산 제어 신호는 E 스테이지403 제어 하에 유지된다. 메모리 액세스 정보, 로드 레지스터 정보는 M 스테이지404로 보내진다. E 스테이지403의 스테이지 제어도 제어부112로 행해진다.
M 스테이지404에서는 제 1연산부116으로부터 보내진 어드레스로 오퍼랜드의 메모리 액세스가 행하여진 오퍼랜드 액세스부104는 오퍼랜드가 내장 데이터 메모리105와 칩내IO(도시하지 않음)에 있는 경우에는 내장 데이터 메모리105와 칩내IO에 대하여, 1클럭 사이클로 메모리의 판독 또는 기록을 한다. 오퍼랜드가 내장 데이터 메모리105와 칩내IO가 아닌 경우에는 외부 버스 인터 페이스부106에 데이터액세스 요구를 출력한다. 외부 버스 인터페이스부106은 외부의 메모리에 대하여 데이터 액세스를 행하고, 로드의 경우에는 판독된 데이터를 오퍼랜드 액세스부104로 전송한다. 외부 버스 인터페이스부106은 최소 2클럭 사이클로 외부 메모리의 액세스를 하는 것이 가능하다. 로드의 경우에는 오퍼랜드 액세스부104는 판독된 데이터를 OD 버스322를 통해 전송한다. 바이트데이터의 경우는 LD 레지스터164에 워드 또는 더블 워드 데이터의 경우에는 레지스터 파일115에 직접 기록한다. 스토어의 경우에는 정열된 스토어 데이터의 값이 정열 회로162로부터 OD 버스322를 통해서 오퍼랜드 액세스부104로 전송되어 대상이 되는 메모리에의 기록이 행하여진다. M 스테이지 404의 스테이지 제어도 제어부112로 행하여 진다.
W 스테이지405에서, LD 레지스터164에 유지된 로드 오퍼랜드(바이트)는 래치165로 유지되어 정열 회로166으로 정열, 제로/부호 확장된 뒤에 W 버스314를 통해 레지스터파일115로 기록된다.
E2 스테이지406에서는 승가산/승감산 연산의 가감산 처리를 ALU201로 행하여 가감산 결과를 어큐뮬레이터208로 재기록 한다.
본 데이터 처리장치는 입력 클럭에 따라서 동일 주파수의 비중복 2상의 클럭신호를 생성하여 내부 제어에 사용한다. 최단의 경우 각 파이프라인 스테이지는 내부의 1클럭 사이클로 처리를 종료한다. 여기서는 클럭 제어의 상세한 것에 관해서는 본 발명에 직접 관계없기 때문에 설명을 생략한다.
각 서브 명령의 처리 예에 관해서 설명한다. 가감산, 논리연산, 비교 등의 연산 명령과 레지스터간의 전송 명령은 IF 스테이지401, D 스테이지402, E 스테이지403의 3단으로 처리를 종료한다. 연산과 데이터 전송을 E 스테이지403으로 행한다.
승가산/승감산 명령은 승산을 하는 E 스테이지403과 가감산을 하는 E2 스테이지의 2클럭 사이클로 연산실행을 하기 때문에 4단의 처리가 된다.
바이트 로드 명령은 IF 스테이지401, D 스테이지402, E 스테이지403, M 스테이지404, W 스테이지405의 5단으로 처리를 종료한다. 워드/2워드 로드와 스토어 명령은 IF 스테이지401, D 스테이지402, E 스테이지403, M 스테이지404의 4단으로 처리를 종료한다.
비정열액세스의 경우에는 오퍼랜드 액세스부104로 M 스테이지404의 제어 하에 2회의 액세스로 분할되어, 메모리 액세스가 행하여진다.
실행에 2사이클이 걸쳐진 명령에서는 제 1, 제 2명령 디코더 113,114로, 2사이클에 걸쳐서 처리하고, 각 사이클마다 각각 실행 제어 신호를 출력하여 2사이클 걸쳐서 연산실행을 한다.
롱 명령은 1개의 32비트 명령이 1개의 롱 명령으로 구성되어 있고, 이 1개의 롱 명령의 처리로 32비트 명령의 실행이 완료된다. 병렬 실행하는 2개의 명령은 2개의 쇼트 명령으로 처리 사이클이 큰 쪽의 명령의 처리의 속도에 포함 된다. 예를 들면 2사이클 실행의 명령과 1사이클실행의 명령의 조합의 경우에는 2사이클 걸린다. 시퀀셜 실행의 2개의 쇼트 명령의 경우에는 각 서브 명령이 조합이 되며, 디코드단계에서 각 명령이 시퀀셜에 디코드 되어 실행된다. 예를 들면, E 스테이지403으로 1사이클로 실행이 완료하는 가산명령이 2개의 경우에는 D 스테이지402, E 스테이지403와함께 각 명령에 1사이클, 계2사이클에 걸쳐서 처리한다. E 스테이지403에서의 선행 명령의 실행과 병렬하여, D 스테이지402로 후속명령의 디코드가 행하여진다.
실시의 형태 1의 특징부
도 15는 실시의 형태 1의 데이터 처리장치에서의 특징부인 모듈로 어드레싱 기능을 실현하는 부분의 구성을 모식적으로 나타내는 회로도면이다. 도면중, 제어부112로서는 모듈로 연산에 관한 부분만 나타내고 있다. 각 래치의 인에이블 신호등은 간단히 하기 위해 생략하고 있다. 또, 논리 도면도 알기 쉽도록 가능한한 정논리로 나타내고 있다. 158은 비교기이며 S3 버스303으로 전송되는 베이스 어드레스 치와 MOD_E157에 유지된 모듈로ㆍ엔드ㆍ어드레스의 비교를 한다. 비교기 158로서는 2개의 필드에 관해서 독립하여 비교결과를 제어부112에 보낸다. 비트 0으로부터 비트13의 상위14비트가 일치했을 경우에 일치신호511이 1이 되며 불일치의 경우에는 일치 호511이 0가 된다. 비트14가 일치한 경우에 일치신호512가 1가 되며, 불일치의 경우에는 일치 신호512가 0으로 된다.
MOD_E157은 15비트의 래치이고 D1버스311로부터의 입력포트와 S3 버스303, 비교기158에의 출력 포트를 가진다. MOD_E157의 값이 S3 버스303에 출력되는 경우에는 비트15에 0이 출력된다. 모듈로ㆍ스타트ㆍ어드레스를 유지하는 MOD-S156은 15비트의 래치이고 D1 버스311로부터의 입력포트와 S3 버스303, 16비트의 래치159에의 출력포트를 가진다. MOD-S156의 값이 S3 버스303에 출력되는 경우에는 비트15에 0이 출력된다. 셀렉터155는 선택신호510에 따라서 ALU153의 출력과 래치159에 유지된 모듈로ㆍ스타트ㆍ어드레스치를 선택적으로 D1 버스311로 출력한다. 래치159의 값을 선택하는 경우, 비트15에는 0이 출력된다. 또 2워드 액세스로 포스트 디크리먼트 때에 0, 그 이외의 경우에 1이 된다, 로우 액티브의 포스트 디크리먼트2워드 액세스신호509가 제 1디코더113으로 생성되어, 비트14에 관해서는 이 신호509와 래치159의 비트14와의 논리적이 AND 게이트503으로 요청되어 셀렉터155로 출력된다. 즉, 2워드 액세스로 포스트 디크리먼트의 경우에는 강제적으로 비트14에 0이 출력되어 , 그 이외의 경우에는 래치159의 비트 14의 값이 그대로 출력된다.
제어부112내에서는 명령의 디코드 결과와 비교기158의 비교 결과에 따라서, 셀렉터155의 선택신호510이 생성된다. PSW 부171로부터는 모듈로 인에이블을 지정하는 MD 비트44의 값이 신호선506으로 출력된다. 제 1디코더113으로부터는 명령 디코드의 결과로, 메모리 액세스 명령으로 포스트ㆍ인크리먼트/디크리먼트 시에 1이 되는 포스트갱신신호507, 2워드 액세스 시에 1이 되는 2워드 액세스 신호508이 출력된다.
AND 게이트501 및 OR 게이트502에서 이들의 정보를 기초로 선택 신호510이 생성된다. 즉 OR 게이트502는 일치신호512 및 2워드 액세스신호508의 논리합연산을 하여 그 출력을 AND 게이트501에 출력한다. AND 게이트501은 OR 게이트502의 출력, 일치신호511, MD 비트44의 값(신호선506상에 나타난다)및 포스트갱신신호507의 논리적 연산을 하여, 그 출력을 선택신호510으로서 출력한다.
따라서, 1워드 액세스 시(2워드 액세스신호508이 0)에서, 모듈로ㆍ어드레싱이 인에이블상태(신호선506이 1)로 포스트ㆍ인크리먼트/디크리먼트를 하는 로드/스토어 명령 처리시(포스트갱신신호507이 1)로, S3 버스303으로 전송되는 오퍼랜드의 어드레스와 MOD_E157의 상위14비트가 일치하여 (일치신호511이 1)또, 오퍼랜드의 어드레스와 MOD_E157의 비트14가 일치(일치신호512가 1)한 경우에, 선택 신호510이 1이 되어 상기 조건을 만족하지 않은 경우에는, 선택신호510은 0이 된다.
한편, 2워드 액세스 시(2워드액세스신호508이 1)에서, 모듈로ㆍ어드레싱이 인에이블상태로, 포스트ㆍ인크리먼트/디크리먼트을 행하는 로드/스토어 명령처리시에서, S3 버스303로 전송되는 오퍼랜드의 어드레스와 MOD_E157의 상위14비트가 일치하면 선택신호510이 1이 된다. 상기 조건을 충적시키지 못하는 경우에는, 선택신호 510은0이 된다.
어드레스 레지스터의 포스트갱신을 하는 로드/스토어 명령 실행 시에, 선택신호가 0인 경우에는 ALU153 에서의 가감산 결과가 포인터의 갱신치로서, D1 버스 311을 통해 레지스터 파일115에 재기록 된다. 선택신호가 1의 경우에는 래치159에 유지된 모듈로ㆍ스타트ㆍ어드레스의 값이 포인터의 갱신치로서, D1 버스311을 통해 레지스터 파일115에 재기록 된다. 이때, 2워드 액세스로 포스트 디크리먼트의 경우(신호509가 0)에는, AND 게이트503에 의해 강제적으로0이 셀렉터155의 비트14로서 출력되고 그 이외의 경우에는, 래치159의 비트14의 값이 그대로 출력된다. 또, 셀렉터155의 비트15에는 강제적으로 0이 출력된다.
모듈로ㆍ어드레싱이 디스에이블 상태의 경우에는, 선택신호510은 반드시 0이 되어 셀렉터155로서는 항상 ALU153의 출력이 선택된다.
다음에, 몇 개의 서큘라 버퍼에서의 로드/스토어명령의 실행예에서의 어드레스의 갱신에 관해서 설명한다. MD 비트44는 1로 한다. 우선, 포스트 인크리먼트으로 모듈로 어드레싱을 사용하는 경우에 관해서 설명한다.
본 데이터 처리장치에서는 서큘라 버퍼의 경계 액세스 시에 4바이트 경계의 비정열 액세스를 했을 경우의 동작은 보증하지 않고 있다. 2워드 액세스를 하는 경우는 반드시 4바이트 경계에 정열된 상태로 액세스를 한다.
도 16은, 2개의 경계가 함께 4바이트 정열되어 있는 서큘라 버퍼가 예를 나타내는 설명도이다. h'는 16진 표기인 것을 나타낸다. h'1000번지에서h'11ff 번지의 256워드(512바이트)가 서큘라 버퍼의 영역으로 되어 있고, MOD-S156에는 버퍼 영역의 선두워드 어드레스인 h'1000의 상위15비트를, MOD_E157에는 최후의 워드 어드레스인 h'11fe의 상위 15비트가 세트된다.
1워드 액세스로 포스트 인크리먼트 처리를 하는 경우, 제 1디코더113으로 부터 출력되는 포스트 갱신신호507은 1, 2워드 액세스신호508은 0, 포스트 디크리먼트 2워드액세스신호509(로우액티브)는 1이 된다. 베이스 어드레스 레지스터의 값이 h'11fe의 경우, 일치 신호511,512가 함께 1이 되어서 AND 게이트501의 출력인 선택신호510이 1이 되며, 그 결과 셀렉터155는 모듈로ㆍ스타트ㆍ어드레스의 값(래치159의 출력 +0(비트15))을 선택하여 D1 버스311을 통해 베이스 어드레스 레지스터에 h'1000을 재기록 한다.
한편, 그 이외의 경우에는 일치신호511,512중 어느 것이 0이 되기 때문에 셀렉터155는 ALU153의 출력, 즉 베이스 어드레스 레지스터의 초기치에 2가 가산된 값을 선택하여 베이스 어드레스 레지스터에 재기록 한다. 예를 들면, 베이스 어드레스 레지스터의 값이 h'11fc의 경우, 베이스 어드레스 레지스터에는 h'11fe가 재기록 된다.
2워드 액세스로 포스트 인크리먼트 처리를 하는 경우 제 1디코더113으로 부터 출력되는 포스트 갱신신호507은 1, 2워드액세스신호508은 1, 포스트 디크리먼트2 워드액세스신호509(로우 액티브)는 1이 된다. 베이스 어드레스 레지스터의 값이 h'11fc의 경우 일치 신호511이 1이 되기 때문에 일치신호512가 0으로 되여도, 선택 신호510이 1이 되어 그 결과, 셀렉터 155로서는 모듈로ㆍ스타트ㆍ어드레스의 값이 선택되어 베이스 어드레스레지스터에는, h'1000이 재기록 된다.
한편, 그 이외의 경우에는 일치 신호511이 0이 되기 때문에, 베이스 어드레스 레지스터의 초기 값에 4가 가산된 값이 베이스 어드레스 레지스터에 재기록 된다.
이와 같이, 1워드 액세스의 포스트 인크리먼트 처리와 2워드 액세스의 포스트 인크리먼트 처리와의 사이에서 공통의 MOD-S156 및 MOD_E157의 설정으로, 실시의 형태 1의 데이터 처리장치는 포스트 인크리먼트 처리로 1워드 액세스 하는 경우에도 2워드 액세스 하는 경우에도 정확하게 동작한다.
도 17은 개시 위치는 4바이트 정열되어 있지만, 종료 위치가 4바이트 비정열의 서큘라 버퍼가 예를 나타내는 설명 도면이다. 동 도면에 도시한 바와 같이, h'1000번지에서 h'11fd 번지의 255워드가 서큘라 버퍼의 영역으로 되어 있고, MOD-S156에는 버퍼영역의 선두워드 어드레스인 h'1000의 상위15비트가, MOD_E157에는 최후의 워드 어드레스인 h'11fc의 상위15비트가 세트된다.
도 17에서 나타낸 구성의 서큘라 버퍼에 대하여 베이스 어드레스 레지스터의 값이 h'11fc에서 1워드 액세스를 하는 경우, 베이스 어드레스 레지스터에는, h'1000이 재기록 된다. 그 이외의 1워드 액세스의 경우에는 베이스 어드레스 레지스터의 초기 값에 2가 가산된 값이 베이스 어드레스 레지스터에 재기록 된다. 종료 위치가 4바이트 비정열이기 때문에, 베이스 어드레스 레지스터의 값이 h'11fc에서 2워드 액세스를 하는 것은 의미가 없다. 배열의 계산등 포인터의 자동 갱신 기능을 활용하기 위해서, 경계를 의식하여 기수 워드의 서큘라 버퍼를 사용하는 경우에는 유효하다.
도 18은 개시 위치는 4바이트 비정열로 종료 위치가 4바이트 정열되어 있는 서큘라 버퍼가 예를 나타내는 설명도이다. 동 도면에 도시한 바와 같이 h'1002번지에서h'11ff 번지의 255워드가 서큘라 버퍼의 영역으로 되어 있고, MOD-S156에는 버퍼 영역의 선두워드 어드레스인 h'1002의 상위 15비트가, MOD_E157에는 최후의 워드 어드레스인 h'11fe의 상위15비트가 세트된다.
베이스 어드레스 레지스터의 값이 h'11fe에서 1워드 액세스를 하는 경우, 베이스 어드레스 레지스터에는 h'1002가 재기록 된다. 그 이외의 1워드 액세스의 경우에는, 베이스 어드레스 레지스터의 초기 값에 2가 가산된 값이 페이스 어드레스 레지스터에 재기록 된다. 베이스 어드레스 레지스터의 값이 h'11fc에서 2워드 액세스를 하는 경우, 베이스 어드레스 레지스터에는 h'1002이 재기록 된다. 그 이외의 2워드 액세스의 경우에는 베이스 어드레스 레지스터의 초기값에 4가 가산된 값이 베이스 어드레스 레지스터에 재기록 된다. 이 경우도 포인터의 자동갱신기능을 활용할 목적으로, 경계를 의식 하여 기수워드의 서큘라 버퍼를 사용하는 경우에는 유효하다.
도 19는 개시 위치, 종료 위치와 함께 4바이트 정열되어 있지 않은 서큘라 버퍼가 예를 나타내는 설명도이다. 동 도면에 도시한 바와 같이 h'1002번지에서 h'11fd 번지의 254 워드가 서큘라 버퍼의 영역으로 되어 있고, MOD-S156에는 버퍼영역의 선두 워드 어드레스인 h'1002의 상위15비트가 MOD_E157에는 최후의 워드 어드레스인 h'11fc의 상위15비트가 세트된다.
베이스 어드레스 레지스터의 값이 h'11fc에서 1워드 액세스를 하는 경우, 베이스 어드레스 레지스터에는 h'1002가 재기록 된다. 그 이외의 경우에는 베이스 어드레스 레지스터의 초기 치에 2가 가산된 값이 베이스 어드레스 레지스터에 재기록 된다. 2워드 액세스를 하는 경우도 최초의 워드와 최후의 워드는 1워드 액세스 할 필요가 있다. 이 경우도 포인터의 자동 갱신 기능을 활용할 목적으로 경계를 의식하여 서큘라 버퍼를 사용하는 경우에는 유효하다. 단지, 이 경우는 서큘라 버퍼의 사이즈가 2워드의 정수 배 이기 때문에 버퍼의 경계를 정열하여 사용한 편이 효율이 된다.
도 16∼도 19의 어느 경우도, 1워드 액세스 하는 경우에는 개시/종료 위치의 경계에 상관없이 정확하게 처리가 행하여진다. 또, 경계를 의식하여 모듈로 드레싱에 의한 어드레스의 자동 갱신 기능을 사용하는 것을 목적으로 하는 경우에는, 모든 경우에 유효하다. 1워드 액세스와 2워드 액세스가 혼재하는 경우에는 서큘라 버퍼의 개시/종료 위치를 4바이트 경계에 정열하도록, 버퍼 영역을 취하면 경계를 의식하지 않고 액세스 하는 것이 가능하다. 홀수 워드 데이터의 경우도, 1워드분 여분으로 영역을 확보하면, 2개의 경계를 4바이트 경계에 정열하는 것이 가능하다. 반드시 배정도(32비트)의 데이터를 유지하는 경우, 복소수와 같이 2개의 워드의 페어를 유지하는 경우에는, 서큘라 버퍼의 개시/종료 위치를 4바이트 경계로 정열하여 반드시 2워드 액세스 하도록 하면 된다.
상술과 같이 실시의 형태 1의 데이터 처리장치는 포스트 인크리먼트 처리에 의해서 1워드 액세스 뿐만 아니라 2워드 액세스를 하는 경우에, 서큘라 버퍼에 효율적으로 액세스 하는 것이 가능해져, 프로그램의 코드 사이즈의 삭감, 처리 사이클수의 감소에 기여한다. 이에 따라, 특정한 어플리케이션 실행시에 소비하는 전력을 억제 할 수 있다.
또, 1워드 액세스 또는 2워드 액세스 경우도 서큘라 버퍼의 최초의 워드와 최후의 워드의 어드레스를 각각 설정하면 되므로, 설정이 통일되어 있어 알기 쉽다.
다음에, 포스트 디크리먼트 처리를 하는 경우에 대해서 설명한다. 단지, 포스트 인크리먼트의 경우와 달라, 오퍼랜드의 액세스 사이즈와 포인터의 갱신 사이즈는 반드시 일치하지 않기 때문에, 1워드 액세스와 2워드 액세스가 혼재 하는 경우에는 포인터 치의 보정이 필요하게 된다.
도 20은 2개의 경계가 함께 4바이트 정열되어 있는 서큘라 버퍼의 예를 나타내는 설명도이다. 동 도면에 도시한 바와 같이 h'1000번지에서 h'11ff 번지의 256워드(512바이트)가 서큘라 버퍼의 영역으로 되어 있고 MOD-S156에는 버퍼 영역의 최후의 워드 어드레스인 h'11fe의 상위15비트가, MOD_E157에는 최초의 워드 어드레스인 h'1000의 상위15비트가 세트된다.
포스트 디크리먼트 처리로 1워드 액세스를 하는 경우, 제 1디코더113로부터 출력되는 포스트 갱신신호507은 1, 2워드 액세스신호508은 0, 포스트 디크리먼트2워드 액세스 신호509(로우 액티브)는 1이 된다. 베이스 어드레스 레지스터의 값이 h'1000의 경우, 일치 신호511,512가 함께 1이 되어 선택 신호510이 1이되고, 그 결과, 셀렉터155는 모듈로ㆍ스타트ㆍ어드레스의 값(래치159의 출력+0(비트15))를 선택하여 D1 버스311를 통해 레지스터 파일115내의 베이스 어드레스 레지스터에 h'11fe를 기록 복귀한다.
그 이외의 경우에는, 일치 신호 511,512중 어느 것이 0이 되기 때문에, 셀렉터155는 ALU153의 출력, 즉 베이스 어드레스 레지스터의 초기값에 2가 감산된 값을 선택하여 베이스 어드레스 레지스터에 재기록 된다. 예를 들면, 베이스 어드레스 레지스터의 값이 h'1002의 경우, 베이스 어드레스 레지스터에는 h'1000이 재기록 된다.
포스트 디크리먼트 처리로 2워드 액세스를 하는 경우, 제 1디코더 113으로부터 출력되는 포스트갱신신호507은 1, 2워드 액세스 신호508은 1, 포스트 디크리먼트 2워드 액세스 신호509(로우 액티브)는 0이 된다. 베이스 어드레스 레지스터의 값이 h'1000의 경우 일치 신호511,512가 함께 1이되어 선택 신호510이 1이되며, 그 결과, 셀렉터155는 모듈로ㆍ스타트ㆍ어드레스의 값(래치159의 상위14비트출력+0(비트14,15))를 선택하여 h'11fc를 베이스 어드레스 레지스터에 재기록 된다.
셀렉터155의 출력의 비트14가 0이 되는 것은 로우 액티브의 포스트 디크리먼트2워드 액세스신호509가 0때문에, AND 게이트503에 의해서 래치159의 출력의 비트14가 강제적으로 0으로 클리어 되는 것에 기인한다.
그 이외의 경우에는 일치 신호511이 0이 되기 때문에, 셀렉터155는 ALU153의 출력, 즉 베이스 어드레스 레지스터의 초기값에 4가 감산된 값을 선택하여 베이스 어드레스 레지스터에 재기록 된다.
이와 같이, 1워드 액세스의 포스트 디크리먼트 처리와 2워드 액세스의 포스트 디크리먼트처리와의 사이에서 공통의MOD-S156 및 MOD_E157의 설정으로, 실시의 형태 1의 데이터 처리장치는 포스트디크리먼트 처리로 1워드 액세스 하는 경우에도, 2워드 액세스 하는 경우에도 정확하게 동작한다.
도 21은 개시 위치는 4바이트 정열되어 있지만, 종료 위치가 4바이트 비정열의 서큘라 버퍼의 예를 나타낸다. h'1000번지에서 h'11fd 번지의 255워드가 서큘라 버퍼의 영역으로 되어 있고, MOD-S156에는 최후의 워드 어드레스인 h'11fc의 상위15비트가 MOD_E157에는 버퍼영역의 선두 워드 어드레스인 h'1000의 상위15비트가 세트된다.
베이스 어드레스 레지스터의 값이 h'1000으로 1워드 액세스의 포스트 디크리먼트 처리를 하는 경우, 베이스 어드레스 레지스터에는 h'11fc가 재기록 된다. 그 이외의 1워드 액세스의 경우에는 베이스 어드레스 레지스터의 초기 값에 2가 감산된 값이 베이스 어드레스레지스터에 재기록 된다.
베이스 어드레스 레지스터의 값이 h'1000으로 2워드 액세스의 포스트 디크리먼트 처리를 하는 경우 베이스 어드레스 레지스터에는 h'11fc가 재기록 된다. 그 이외의 2워드 액세스의 경우에는, 베이스 어드레스 레지스터의 초기 값에 4가 감산된 값이 베이스 어드레스 레지스터에 재기록 된다. 이 경우, 경계를 의식한 액세스가 필요하게 된다.
도 22는 개시 위치는 4바이트 비정열로 종료 위치가 4바이트 정열되어 있는 서큘라 버퍼의 예를 나타낸다. h'1002번지에서 h'11ff 번지의 255워드가 서큘라 버퍼의 영역으로 되어 있고, MOD_S156에는 최후의 워드 어드레스인 h'11fe의 상위15비트가 MOD_E157에는 버퍼 영역의 선두 워드 어드레스인 h'1002의 상위15비트가 세트된다.
베이스 어드레스 레지스터의 값이 h'1002로 1워드 액세스의 포스트 디크리먼트 처리를 하는 경우 베이스 어드레스 레지스터에는 h'11fe가 재기록 된다. 그 이외의 1워드 액세스의 경우에는 베이스 어드레스 레지스터의 초기 값에 2가 감산된 값이 베이스 어드레스 레지스터에 재기록 된다.
베이스 어드레스 레지스터의 값이 h'1000으로 2워드 액세스의 포스트 디크리먼트 처리를 하는 것은 의미가 없기 때문에, 동작은 보증하지 않고 있다. 그 이외의 2워드 액세스의 경우에는 베이스 어드레스 레지스터의 초기 값에 4가 감산된 값이 베이스 어드레스 레지스터에 재기록 된다. 이 경우도 경계를 의식한 액세스가 필요하게 된다.
도 23은 개시 위치, 종료 위치 공히 4바이트 정열되어 있지 않은 서큘라 버퍼가 예를 나타낸다. h'1002번지에서 h'11fd 번지의 254워드가 서큘라 버퍼의 영역으로 되어 있고, MOD-S156에는 버퍼 영역의 최후의 워드 어드레스인 h'11fc의 상위15비트가 MOD_E157에는 선두 워드 어드레스인 h'1002의 상위15비트가 세트된다.
베이스 어드레스 레지스터의 값이 h'1002로 1워드 액세스의 포스트 디크리먼트 처리를 하는 경우 베이스 어드레스 레지스터에는 h'11fc가 재기록 된다. 그 이외의 경우에는 베이스 어드레스 레지스터의 초기값에 2가 감산된 값이 베이스 어드레스 레지스터에 재기록 된다.
2워드 액세스의 포스트 디크리먼트 처리를 하는 경우도 최초의 워드와 최후의 워드는 1워드 액세스할 필요가 있다. 이 경우도 포인터의 자동 갱신 기능을 활용할 목적으로, 경계를 의식하여 기수 워드의 서큘라 버퍼를 사용하는 경우에는 유효하다. 단지, 이 경우는 서큘라 버퍼의 사이즈가 2워드의 정수배이기 때문에, 버퍼의 경계를 정열하여 사용한 편이 효율이 좋다.
도 20∼도 23에서 나타낸 어느 경우도 1워드 액세스의 포스트 디크리먼트 처리를 하는 경우에는 개시/종료 위치의 경계에 상관없이 정확하게 처리가 행하여진다. 또, 경계를 의식하고, 모듈로 어드레싱에 의한 어드레스의 자동 갱신 기능을 사용하는것을 목적으로 하는 경우에는 모든 경우에 유효하다. 반드시 1워드 액세스하는 경우는 개시/종료 위치의 경계를 4바이트 정열하지 않아도 된다.
상술한바와 같이 실시의 형태 1의 데이터 처리장치는 포스트 디크리먼트 처리에 의해서 1워드뿐만 아니라 2워드액세스를 하는 경우에도 서큘라 버퍼에 효율 좋게 액세스 하는 것이 가능해져, 프로그램의 코드 사이즈의 삭감, 처리 사이클수의 감소에 기여한다. 또, 어느 쪽의 경우도 서큘라 버퍼의 최초의 워드와 최후의 워드의 어드레스를 설정하면 좋으므로, 설정이 통일되어 있어 알기 쉽다.
또, 실시의 형태 1의 데이터 처리장치는 포스트 인크리먼트 처리 및 포스트 디크리먼트 처리 시에서 어드레스의 계산과 병렬로 베이스 어드레스의 초기 값에 근거하는 판정처리 가능해지기 때문에, 동작 주파수의 향상에 의한 고속화가 용이하다.
여기까지, 서큘라 버퍼의 여러 가지 경계에 관해서 설명을 하였지만, 기수 워드의 경계의 경우에는 제한이 많다. 허용하게 되면 홀수 워드의 경우는 1워드분 쓸데없는 데이터영역을 추가하여, 2개의 경계를 2워드 정열하여 사용하는 편이 효율이 좋다. 특히, 경계를 의식하고싶지 않을 경우는 2워드 정열하여 사용한다.
다음에, 실시의 형태 1의 데이터 처리장치를 사용하여 1샘플마다 차례로 처리를 하는 256탭의 FIR(유한 임펄스 응답)필터의 처리예에 관해서 기술한다. FIR 필터 처리프로그램예를 도 24에 나타낸다. 도 24에서, ||은 2개의 쇼트 명령을 병렬로 실행하는 것을 나타낸다. FIR 필터 처리에서는 하기의 식 1에 나타내는 계산을 한다. 식 1에서 A[i]는 계수이고 D[i]는 데이터이고, i의 값이 적을 수록 최신의 데이터를 의미한다. 256회의 승가산 연산으로 된다. 데이터, 계수도 16비트의 경우에 관해서 설명한다.
도 24의 프로그램부분521에서는 데이터 포인터(D [ 0 ]의 어드레스)의 정열 조건이 판정된다. 4바이트 정열되어 있는 경우에는 프로그램 부분522가 실행되어 그렇지 않은 경우에는 프로그램 부분523이 실행된다. 프로그램부분524는 양자의 공통의 후 처리를 행한다.
도 25에 초기 상태에서의 계수 및 데이터의 내장 데이터 메모리105중의 할당을 나타낸다. 계수는 h'2000번지∼h'21ff 번지의 256워드(512바이트)에 계수의 배열이 배치되고 h'2400번지∼h'25ff 번지의 256워드(512바이트)에 데이터의 배열이 배치되어 있다.
이 프로그램을 실행하기 전에 레지스터 r8에는 데이터의 포인터(D [0]의 어드레스)가, 레지스터 r9에는 계수의 선두 어드레스(A [0]의 어드레스)가 세트되어 있는 것으로 한다. 또, MOD-S156에는 서큘라 버퍼로서 사용하는 데이터 어레이 영역의 선두워드 어드레스인 h'2400이 MOD_E157에는 데이터 어레이 영역의 최종워드 어드레스인 h'25fe가, PSW21 중의 MD 비트44에는 1이 세트되어 있고 모듈로 어드레싱이 인에이블 상태로 되어 있는 것으로 한다.
프로그램 부분521에서, btst 명령으로 레지스터 r8에 수납되어 있는 데이터 포인터의 비트14(LSB에서 2비트째)를 테스트한다. 비트14가 0, 즉, 4바이트 정열되어 있는 경우에는, F0 플래그47에 0이 세트된다. 비트14가 1, 즉 4바이트 정열되어 있지 않은 경우에는 F0 플래그 47에 1이 세트된다. brf0t명령에서는 F0 플래그 47이 1(4바이트 비정열)의 경우 라벨 odd에서 시작되는 프로그램 부분523이 실행되어 F0 플래그47이 0(4바이트 정열)의 경우 계속되는 라벨 even에서 시작되는 프로그램 부분522가 실행된다.
mac a0, rn, rm명령은 레지스터 rm에 유지되어 있는 부호 부착 16비트 수와 레지스터 rn에 유지되어 있는 부호 부착 16비트수와의 승산 결과를 어큐뮬레이터 a0에 가산하여 재기록한다. repi #c, label 명령은 다음 명령으로부터 label이 붙은 명령까지를 c 회 반복실행하는 것을 나타내는 블록 리피트 명령이다. clrac a0명령은, a0을 제로 클리어한다.
프로그램 부분522에서는 전체의 오퍼랜드가 2워드 단위로 액세스 되어 소망의 승가산이 실행된다. 승가산의 결과는, a0으로 유지된다. 프로그램 부분523에서는, D[0]의 어드레스가 4바이트 경계에 태워져 있지 않기 때문에, D[0]와 D[255]만 1워드 단위로 액세스 되고, 그 밖의 부분은 2워드 액세스를 행한다. 이와 같이 해서, 어느 경우도 1클럭 사이클에 1회의 승가산이 실현된다. 프로그램 부분522의 최후의 bra end명령은 라벨 end가 붙어 있는 명령까지 무조건으로 분기하는 명령이다. 프로그램부분524의 rachi r0, a0, #0의 명령은 a0로 유지되어 있는 고정 소수점 포맷의 수치를 16비트로 라운드되고 새츄레이숀되어서, 레지스터 r0로 전송하는 명령이다.
도 25의 상태에서는 프로그램 부분522가 실행되어 모든 데이터가 2워드 액세스 된다. 1샘플 후, 전회의 가장 오래된 데이터 D[255]가 수납되어 있던 영역531의 위치에 최신 데이터의D[0]이 덮어 쓰게 되어, 포인터가 h'25fe로 갱신되어서, 도 26에 나타내는 상태가 된다.
도 26으로 나타내는 상태에서는, 우선 프로그램 부분523의 전처리로 D[0]532가 1워드 액세스로 판독된다. 레지스터 r8은 모듈로 기구가 동작하고, h'2400으로 갱신되어 그 후, 영역533의 D[1]로부터 영역 534의 D[254]까지 2워드 액세스로 로드 된다. 그리고, 최후의 영역535의 D[255]는 1워드 액세스로 로드 된다.
또, 다음 샘플 입력 시에는 서큘라 버퍼는 도 27의 상태로 된다. 데이터 포인터는 h'25fc로 갱신된다. 이 상태라도 프로그램 부분522가 실행되어 모든 데이터가 2워드 액세스 된다. h'25fc의 상태로 2워드 액세스를 하면, 레지스터 r8은 h'2400으로 갱신된다.
이와 같이, 1샘플마다 처리하는 FIR 필터 처리에서는 1워드 액세스와 2워드 액세스가 혼재하지만 실시의 형태 1의 데이터 처리장치에 의하면 서큘라 버퍼의 경계를 1워드 액세스하는 경우에도, 2워드 액세스을 하는 경우에도 정확하게 포인터의 갱신이 이루어질 수 있다. 따라서, 유저는 서큘라 버퍼의 경계를 의식하는 일없이 프로그래밍할 수 있어 프로그램의 코드사이즈도 삭감할 수 있고, 프로그램중의 조건판정 등에 의한 처리성능의 저하를 초래하는 일 없이, 실시의 형태 1의 데이터처리를 사용하여 효율적으로 축차 처리 할 수있다.
실시의 형태 1로서는 1워드 액세스 또는 2워드 액세스의 포스트 디크리먼트 및 포스트 디크리먼트 처리로 로드/스토어 명령을 실행 가능한 데이터 처리장치에 관해서 기술하였으나, 또한 4워드등 보다 많은 데이터를 한번에 전송하는 로드/스토어어 명령을 실행하는 경우에도 본 발명의 기술을 응용해서 사용 가능하다. 예를 들면, 1워드액세스, 2워드 액세스 및 4워드 액세스를 실행 가능하게 하는 경우, 3개의 레벨(4워드레벨, 2워드레벨, 1워드레벨)의 일치신호를 기본으로 판정을 하면 된다.
또, 어드레스의 비트 길이는 16비트로 되어 있지만, 24비트와 32비트등 임의의 비트 길이만이어도 좋다. 또, 데이터의 기본데이터길이를 16비트로 하고 있지만, 24비트 DSP 와 같이 24비트로 하기도 하고 범용 프로세서 와 같이 32비트로 해도 된다.
또, 상술한 실시의 형태 1에서는, 바이트 어드레스를 관리하고 있지만, 일반의 DSP 와 같이 16비트와 24비트, 32비트를 1워드로서, 워드 어드레스를 관리하는 경우에도 본 발명은 적용가능하다.
상술한 실시의 형태 1에서는, 2워드 액세스의 포스트 인크리먼트 및 포스트 디크리먼트 처리 시에 일치 신호511이 1의 경우 비트14의 일치ㆍ불일치를 지시하는 일치신호512를 참조하는 일없이 포인터 치(베이스 어드레스 레지스터의 값)의 교체를 행하고 있다. 즉, 상술한 실시의 형태 1에서는 2워드 액세스 시에 일치 신호511이 1이면, MOD_E157의 어드레스치와 포인터 치와의 사이에서 2워드 데이터를 특정하는 어드레스부분이 등가이라고 보고 있다.
상기 포인터의 교체 이외로도, 2워드 액세스의 포스트 인크리먼트 처리(포스트 디크리먼트처리)시에, 일치 신호511이 1로 또 비트 14가 0일 때 (2워드 데이터를 구성하는 2개의 1워드 데이터 중, 전반의 1워드데이터를 특정하는 어드레스에 포인터 치가 일치함), 처음으로 포인터치의 교체하도록 구성해도 된다. 즉, 2워드 액세스시에 일치신호511가 1로 또 비트14가 0이면, MOD_E157의 어드레스치와 포인터치와의 사이에서, 2워드데이터를 특정하는 어드레스부분이 등가이라고 간주해도 좋다.
상술한 실시의 형태 1에서는 비트15의 값을 무시하여 어드레스의 상위15 비트만으로 판정을 하고 있지만, 비트15가 0인 것을 판정조건에 가해도 된다.
상술한 실시의 형태 1에서는 MOD_S156, MOD_E157은 물리적으로 15비트만,유지하도록 하고 있지만, 16비트 유지하도록 해서, 비트15는 무시하는 구성으로 해도 좋고, 비트15도 비교에 사용하도록 구성해도 된다. 비교에 사용하는 경우에는, MOD_S156의 비트15에 반드시 0을 설정하도록 하여 16비트 전부를 비교하도록 하면 좋다.
또, MOD_S156, MOD_E157에는 워드 어드레스를 설정하고 있지만, 경계의 바이트 어드레스를 설정하도록 해도 된다. 비트15를 무시하면 상술한 실시의 형태 1의 동작과 완전히 같게 된다.
상술한 실시의 형태 1에서는 MOD_S156, MOD_E157에는 어드레스의 최상위 비트(MSB)까지의 모든 어드레스 치를 유지하도록 되어 있지만, 어드레스의 상위 수 비트는 유지하지 않도록 하여 하위 비트만으로 판정을 하도록 하면, 복수 영역에 형성된 복수의 서큘라 버퍼에 대하여 같은 설정으로 동시에 모듈로 기구가 동작하도록 할 수있다. 단지, 비교하지않은 상위 비트에 관해서는 갱신전의 값을 그대로 내놓는 등의 처리가 필요 하게 된다.
상술한 실시의 형태 1에서는 상위14비트와 비트14의 2개의 비교 결과를 출력하도록 하고 있지만, 워드어드레스가 매치한 것을 나타내는 정보와, 2워드 어드레스가 매치한 정보가 포함되어 있으면, 어떠한 형태로 연산 결과를 출력해도 좋다.
상술한 실시의 형태 1에서는 인크리먼트 시에도 디크리먼트 시에도 동작 가능한 실시예가 표시되고 있지만, 인크리먼트 시만 또는 디크리먼트 시에만 동작하도록 해도 좋다.
상술한 실시의 형태 1에서는 일반적인 프로세서의 구성을 보이고 있지만, DSP와 같이, 어드레스 레지스터와 데이터 레지스터(어큐뮬레이터등)를 나누는 구성으로 해도 된다. 또, DSP와 같이 복수의 메모리를 독립적으로 액세스 할 수 있는 구성으로 해도 본 발명의 기술은 유효하다.
상술한 실시의 형태 1에서는 규정된 경우 이외의 동작은 보증 않고 있지만, 상기 규정된 경우 이외 때에 예외를 검출하는 등의 처리를 해도 된다. 예를 들면, 홀수 어드레스의 경우에는 어드레스 예외를 일으키는 등의 처리를 해도 된다.
<실시의 형태 2.
실시의 형태 1의 데이터 처리장치에서는 순회방향에 따라서, 프로그램으로 MOD_S156과 MOD_E157과 서큘라 버퍼 경계치를 세트하는 경우에 관해서 설명하였다.
실시의 형태 2의 데이터 처리장치에서는 서큘라 버퍼의 영역을 상한 어드레스와 하한 어드레스를 워드 어드레스로 지정하고, 하드웨어로 비교 어드레스와 출력 어드레스의 선택을 하도록 구성된다. 모듈로 어드레싱의 제어을 하는 부분은 실시의 형태 1과 다르지만 그 밖의 기본적인 사양 및 구성은 실시의 형태 1과 동일하다.
도 28은 서큘라 버퍼의 어드레스를 워드 어드레스로 세트하는 MOD_U650과 MOD _L651을 나타낸다. 동 도면에 도시한 바와 같이, 서큘라 버퍼의 경계 어드레스를 지정하는 제어 레지스터로서 실시의 형태 1의 MOD_E157과 MOD_S156에 대신해서, MOD_U650과 MOD_E157이 실행되어 있다.
MOD_U650은 15비트의 래치로, 모듈로 연산의 대상이 되는 영역의 상한 어드레스가 워드 어드레스로 세트된다. MOD_L651은 15비트의 래치로, 모듈로 연산의 대상이되는 영역의 하한 어드레스가 워드 어드레스로 세트된다. 단지, 하한 어드레스는 상한 어드레스 보다 작은 어드레스이다. MOD_U650, MOD_L651에 유지되지 않은 최하위 비트(비트15)는 0고정이고 기록시는 무시되어 판독시는 항상 0으로 된다.
도 29는, 실시의 형태 2의 데이터 처리장치의 특징부인 모듈로 어드레싱 기능을 실현하는 부분의 구성을 나타내는 모식적으로 나타내는 회로 도면이다. 제어부616은 실시의 형태 1의 제어부112에 해당하며, 모듈로 연산의 제어에 관한 부분 이외는 거의 동일하다. 모듈로 연산부702는 실시의 형태 1의 모듈로 연산부700에 해당한다. 각 래치의 인에이블 신호등은 간단히 하기 위해 생략하고 있다. 또, 논리 도면도 알기 쉽도록 가능한한 정논리로 나타내고 있다.
도 29로 나타내는 회로 이외의 회로 부분은 실시의 형태 1의 데이터처리장치와 거의 동일하다. 동 도면에서 셀렉터614는 제 1디코더617로 생성되는 포스트 인크리먼트 신호613의 제어 하에서 MOD_U650 또는 MOD_L651의 값을 선택적으로 비교기158에 출력한다. 포스트 인크리먼트 신호613은 메모리 액세스 명령(로드명령, 스토어 명령)으로 포스트 인크리먼트 시에 1, 포스트 디크리먼트시에 0으로 된다. 즉, 셀렉터614는 포스트 인크리먼트 신호613가 1로 포스트 인크리먼트를 지시하는 경우에, MOD_U650의 값을 선택하여 비교기 158에 출력하여 포스트 인크리먼트 신호613이 0으로 포스트 디크리먼트를 지시하는 경우에, MOD_L651의 값을 선택하여 비교기158로 출력한다.
비교기158은 S3 버스303으로 전송되는 베이스 어드레스 치와 셀렉터614로부터 출력된 어드레스와의 비교를 한다. 비교기158로서는, 2개의 필드에 관해서 독립하여 비교 결과를 제어부616로 보낸다. 비트0로부터 비트13의 상위14비트가 일치한 경우에 일치 신호611가 1이 되고 불일치의 경우에는 일치 신호611가 0이 된다. 비트14가 일치한 경우에 일치 신호612가 1이 되고 불일치의 경우에는 일치 신호612가 0이 된다.
서큘라 버퍼의 상한 어드레스를 유지하는 MOD_U650은 15비트의 래치이고 D1 버스311로부터의 입력 포트와, S3 버스303, 셀렉터615, 셀렉터614에의 출력 포트를 가진다. MOD_U650의 값이 S3 버스303에 출력되는 경우에는 비트15로서 0이 출력된다.
서큘라 버퍼의 하한 어드레스를 유지하는 MOD_L651은 15비트의 래치이고 D1 버스311로부터의 입력 포트와, S3 버스303, 셀렉터614, 셀렉터615에의 출력 포트를 가진다. MOD_L651의 값이 S3 버스303에 출력되는 경우에는 비트15로해서 0이 출력된다.
셀렉터615는 제 1디코더617로 생성되는 포스트 인크리먼트 신호613으로 제어 하에서 MOD_U650 또는 MOD_L651의 값을 선택적으로 래치159에 출력한다. 즉, 셀렉터615는, 포스트 인크리먼트 신호613이 1로 포스트 인크리먼트를 지시하는 경우에, MOD_L651의 값을 선택하여 래치159에 출력하여 포스트 인크리먼트 신호613이 0으로 포스트 디크리먼트를 지시하는 경우에, MOD_U650의 값을 선택하여 래치159로 출력한다.
셀렉터155는 선택신호610에 따라서 ALU153의 출력과 래치159에 유지된 어드레스 치를 선택적으로 D1 버스311에 출력하여 래치159의 값을 선택하는 경우 비트15로서 0을 출력한다. 또, 2워드 액세스로 포스트 디크리먼트인 때에 0, 그 이외의 경우에 1가 되는, 로우 액티브의 포스트 디크리먼트 2워드 액세스 신호609가 제 1디코더617로 생성되어 비트14에 대해서는 이 신호와 래치159의 비트14와의 AND 게이트603에 의한 논리적이, 셀렉터155의 비트14로 출력된다. 즉, 포스트 디크리먼트 2워드 액세스 신호609가 0로 2워드 액세스의 포스트 디크리먼트를 지시하는 경우에는, 강제적으로 셀렉터155의 비트14에 0이 출력되어 그 이외의 경우에는, 래치159의 비트14의 값이 그대로 셀렉터155의 비트14로 출력된다.
제어부616내에서는 명령의 디코드 결과와 비교기158의 비교 결과에 따라서, 셀렉터155의 선택신호610이 생성된다. PSW 부171로부터는 모듈로 인에이블을 지정하는 MD 비트44의 값이 신호선606으로 출력된다. 제 1디코더617로부터는 명령 디코드의 결과로서, 메모리 액세스 명령으로 포스트 인크리먼트/디크리먼트 시에 1이 되는 포스트 갱신신호607, 2워드액세스시에 1이되는 2워드 액세스 신호608이 출력된다. AND 게이트601 및 OR 게이트602에서 이들의 정보를 기초로 선택 신호610이 생성된다. 즉 OR 게이트602는 일치 신호612 및 2워드 액세스 신호608의 논리합을 출력하고 AND 게이트601은 MD 비트44의 값(신호선606상), 포스트갱신신호607, 일치신호611 및 OR 게이트602의 출력치의 논리적을 선택신호610로서 출력한다.
따라서, 1워드 액세스 시(2워드 액세스 신호608이 0)에서, 모듈로 어드레싱이 인에이블 상태(신호선606이 1)로, 포스트인크리먼트/디크리먼트를 하는 로드/스토어 명령 처리시(포스트 갱신신호607이 1)로, 또, S3 버스303으로 전송되는 오퍼랜드의 어드레스와 셀렉터614로 선택된 어드레스의 상위14 비트가 일치한(일치신호611이 1)경우에, 선택신호610이 1이 되고 상기 조건을 채우지 않은 경우에는 선택 신호610은 0이 된다.
한편, 2워드 액세스 시(2워드액세스신호608가 1)에서, 모듈로ㆍ어드레싱이 인에이블상태로, 포스트ㆍ인크리먼트/디크리먼트를 행하는 로드/스토어 명령처리시에서, 또, 2워드 액세스(2워드 액세스신호608이 1)의 경우에, 선택 신호610가 1이 되어 상기 조건을 충적시키지 못하는 경우에는, 선택 신호 610은 0이 된다.
어드레스 레지스터의 포스트갱신을 하는 로드/스토어 명령 실행 시에서, 선택 신호610이 0인 경우에는 ALU153 에서의 가감산 결과가 포인터의 갱신 치로서, D1 버스311을 통해서 레지스터 파일115로 재기록 된다. 선택신호610이 1의 경우에는 래치159에 유지된 어드레스의 값이 포인터의 갱신치로서, D1 버스311를 통해 레지스터 파일115에 재기록 된다. 이때, 2워드 액세스로 포스트 디크리먼트의 경우에는, AND 게이트603에 의해 강제적으로 0이 셀렉터155의 비트14로서 출력되고, 그 이외의 경우에는, 래치159의 비트14의 값이 그대로 출력된다. 또, 셀렉터155의 비트15에는 강제적으로 0이 출력된다.
모듈로ㆍ어드레싱이 디스에이블 상태의 경우에는 선택신호610은 반드시 0이 되어 셀렉터155에서는 항상 ALU153의 출력이 선택된다.
일예로서 다음에, 서큘라 버퍼영역을 액세스 하는 로드/스토어 명령의 실행시에서의 어드레스의 갱신에 관해서 설명한다. 이 때, MD 비트44는 1로 한다.
본 데이터 처리장치에서는 서큘라 버퍼의 경계 액세스 시에 4바이트 경계의 비정열 액세스을 한 경우의 동작은 보증 하지 않고 있다. 2워드 액세스를 하는 경우는 반드시 4바이트 경계에 정열된 상태로 액세스 한다.
도 30은 2개의 경계가 함께 4바이트 정열되어 있는 서큘라 버퍼가 예를 나타낸다. h'는 16진 표기인 것을 나타낸다. h'1000번지에서 h'11ff번지의 256워드(512바이트)가 서큘라 버퍼의 영역으로 되어 있고, MOD_L651에는 버퍼 영역의 하한 워드 어드레스인 h'1000을, MOD_U650에는 상한의 워드 어드레스인 h'11fe를 세트한다.
포스트 인크리먼트 처리를 하는 경우, 1워드 액세스, 2워드 액세스에 관계없이 제 1디코더617로부터 출력되는 포스트 인크리먼트 신호613는 1이 되기 때문에, 셀렉터614는 MOD_U650의 값을 선택하여 비교기158로 출력하고 셀렉터615는 MOD_L651의 값을 선택하여 래치159에 출력한다.
포스트 인크리먼트 처리로 1워드 액세스를 하는 경우, 제 1디코더617로부터 출력되는 포스트 인크리먼트신호613은 1포스트 갱신신호607은 1, 2워드 액세스신호608는 0, 포스트 디크리먼트2워드 액세스신호609(로우액티브)는 1이 된다.
이 상태로, 베이스 어드레스 레지스터의 값이 h'11fe인 경우 일치 신호611,612가 함께 1이 되어 선택신호610이 1이 되고, 그 결과, 셀렉터155는 래치159에 유지된 값(MOD_L651의 값)을 선택하여 D1 버스311를 통해 레지스터 파일115의 베이스 어드레스 레지스터에 h'1000를 재기록된다.
그 이외의 경우에는 일치 신호611,612중 어느 것이 0이 되기 때문에 선택신호610이 0이 되며, 셀렉터155는 ALU153의 출력, 즉, 베이스 어드레스 레지스터의 초기 치에 2가 가산된 값을 베이스 어드레스 레지스터에 재기록 한다. 예를 들면, 베이스 어드레스 레지스터의 값이 h'11fc의 경우, 베이스 어드레스 레지스터에는 h'11fe가 재기록된다.
포스트 인크리먼트 처리로 2워드 액세스 하는 경우, 제 1디코더617로부터 출력되는 포스트 인크리먼트 신호613은 1, 포스트 갱신신호607은 1, 2워드 액세스 신호608은 1, 포스트 디크리먼트 2워드액세스 신호609(로우 액티브)는 1이 된다.
이 상태로, 베이스 어드레스 레지스터의 값이 h'11fc의 경우 일치 신호611이 81이고 2워드액세스신호608이 1이기 때문에, 일치 신호612가 0이 되더라도, 선택신호610이 1이 되어 그 결과, 셀렉터155는 래치159의 출력 값(셀렉터615의 값)을 선택하여 베이스 어드레스 레지스터에 h'1000을 재기록 한다.
그 이외의 경우에는 일치 신호611이 0이 되어 선택 신호610이 0이 되기 때문에, 셀렉터155는 ALU153의 출력, 즉 베이스 어드레스 레지스터의 초기 치에 4가 가산된 값을 베이스 어드레스 레지스터에 재기록한다.
이와 같이, 실시의 형태 2의 데이터 처리장치는 서큘라 버퍼의 상한 워드 어드레스 및 하한 워드 어드레스를 각각 MOD_U650 및 MOD_L651로 유지하는 설정으로, 포스트 인크리먼트 처리로 1워드 액세스 하는 경우에도, 포스트 인크리먼트 처리로 2워드액세스하는 경우에도 정확하게 동작한다.
포스트 디크리먼트 처리를 하는 경우 1워드 액세스, 2워드 액세스에 관계없이 제 1디코더617로부터 출력되는 포스트 인크리먼트 신호613은 0이 되기 때문에, 셀렉터614는 MOD_L651의 값을 선택하여 비교기158로 출력하고, 셀렉터615는 MOD_U650의 값을 선택하여 래치159로 출력한다.
포스트 디크리먼트 처리로 1워드 액세스를 하는 경우, 제 1디코더617로부터 출력되는 포스트 인크리먼트 신호613는 0, 포스트 갱신신호607은 1, 2워드 액세스 신호608은 0, 포스트 디크리먼트 2워드액세스신호609는 1이 된다.
이 상태로, 베이스 어드레스 레지스터의 값이 h'1000인 경우, 일치 신호611,612가 함께 1이 되고 선택 신호610이 1이되어 그 결과, 셀렉터155는 래치159의 출력치(MOD_U650의 값)를 선택하여, 베이스 어드레스 레지스터에 h'11fe를 재기록 한다.
그 이외의 경우에는 일치 신호611,612중 어느 것이 0이 되어 선택 신호610이 0이 되기 때문에, 셀렉터155는 ALU153의 출력, 즉 베이스 어드레스 레지스터의 초기값에 2가 감산된 값을 베이스 어드레스 레지스터에 재기록 된다. 예를 들면, 베이스 어드레스 레지스터의 값이 h'1002의 경우 베이스 어드레스 레지스터에는 h'1000이 재기록 된다.
포스트 디크리먼트 처리로 2워드 액세스를 하는 경우, 제 1디코더617로부터 출력되는 포스트 인크리먼트신호613은 0, 포스트 갱신신호607은 1, 2워드 액세스신호608는 1, 포스트 디크리먼트 2워드 액세스신호609는 0이 된다.
이 상태로, 베이스 어드레스레지스터의 값이 h'1000의 경우, 일치 신호611,612가 함1이 되고 선택 신호610가 1이 되며 그 결과, 셀렉터155는 래치159의 출력값(MOD_U650의 값)을 선택한다. 이때, 로우 액티브의 포스트 디크리먼트 2워드 액세스 신호609가 0이기 때문에, 래치159의 출력값의 비트14가 AND 게이트603에 의해서 강제적으로 0으로 설정된다. 따라서, 셀렉터155는 베이스 어드레스 레지스터에, h'11fc를 재기록 한다.
그 이외의 경우에는 일치신호611이 0이 되어 선택 신호610이 0이 되기 때문에, 셀렉터155는 ALU153의 출력 즉, 베이스 어드레스 레지스터의 초기치에 4가 감산된 값을 베이스 어드레스 레지스터로 재기록 한다.
이와 같이, 실시의 형태 2의 데이터 처리장치는 포스트 인크리먼트 처리와 완전히 같은 값을 MOD_U650 및 MOD_L651에 설정해도 포스트 디크리먼트 처리로 1워드 액세스 하는 경우에도, 2워드 액세스하는 경우에도 정확하게 동작한다.
실시의 형태 2에서는, 2개의 경계가 함께 4바이트 정열되어 있는 서큘라 버퍼에 관해서만 기술하였지만, 어느 한편이 4바이트 정열되어 있지 않은 서큘라 버퍼의 경우도 실시의 형태 1과 같이 정확하게 동작한다.
상술한 바와 같이, 실시의 형태 2의 데이터 처리장치는 1워드 뿐만 아니라 2워드 액세스 하는 경우에도 효율 이 좋은 서큘라 버퍼의 액세스가 가능해져, 프로그램의 코드 사이즈의 삭감, 처리사이클수의 감소에 기여한다.
또, 실시의 형태 1과 달라서, 포스트 인크리먼트 처리, 포스트 디크리먼트처리에 관계없이 서큘라 버퍼의 영역의 상한 및 하한의 워드 어드레스를 MOD_U650 및MOD_L651에 각각 설정하면 포스트 인크리먼트 처리의 경우에도 포스트 디크리먼트 처리의 경우에도 정확하게 동작하기 때문에 인크리먼트 처리와 디크리먼트 처리로 제어 레지스터의 설정을 변경할 필요가 없어지기 때문에 그 만큼, 프로그램의 코드 사이즈의 삭감, 처리 사이클수의 감소가 가능해진다.
또, 실시의 형태 2의 데이터 처리장치는 포스트 인크리먼트 처리 및 포스트 디크리먼트 처리 시에서, 어드레스의 계산과 병렬로 베이스 어드레스의 초기치에 근거하는 판정 처리 가능해지기 때문에, 동작 주파수의 향상에 의한 고속화가 용이한다.
실시의 형태 1과 마찬가지로, 실시의 형태 2의 데이터 처리장치는 여러가지의 경우에 본 기술은 적용할 수 있다.
상술한 실시의 형태 2에서는 어드레스의 비트길이가 16비트의 예를 게시 하였지만, 24비트와 32비트등 임의의 비트 길이 만으로도 된다. 또, 데이터의 기본 데이터길이를 16비트로 하고 있지만, 24비트로 하거나 32비트로 해도 된다. 또, 바이트 어드레스를 관리하고 있지만, 16비트와 24비트, 32비트를 1워드로서 워드 어드레스를 관리해도 된다.
실시의 형태 2에서는 1워드 액세스 또는 2워드 액세스의 포스트 디크리먼트 및 포스트 디크리먼트 처리로 로드/스토어 명령을 실행 가능한 데이터 처리장치에 관해서 서술하였지만, 또 4워드 등 보다 많은 데이터를 한번에 전송하는 로드/스토어 명령을 실행하는 경우에도, 본 발명의 기술을 응용하고 사용가능하다. 예를 들면, 1워드 액세스, 2워드 액세스 및 4워드 액세스를 실행 가능하게 하는 경우, 3개의 레벨(4워드 레벨,2워드 레벨,1워드레벨)의 일치 신호를 기초로 판정을 하면 된다.
상술한 실시의 형태 2에서는, 실시의 형태 1과 마찬가지로 2워드 액세스의 포스트 인크리먼트 처리(디크리먼트 처리)때 일치 신호611이 1인 때 비트14의 값을 참조하는 일없이 포인터 치의 교체를 하고 있지만, 2워드 액세스의 포스트 인크리먼트(디크리먼트)처리로 일치 신호611이 1로 또한 비트14가 0일(2워드 데이터를 구성하는 2개의 1워드 데이터중, 전반의 1워드 데이터를 특정하는 어드레스에 포인터치가 일치하는)때, 비로서 포인터치의 교체를 하도록 구성해도 된다.
상술한 실시의 형태 2에서는 MOD_U650, MOD_L651은 물리적으로 15비트밖에는 유지하지 않도록 하고 있지만, 16비트 유지하도록 하여 비트15는 무시하는 구성으로 해도 되며 비트15도 비교에 사용하도록 구성해도 된다. 비교에 사용하는 경우에는 MOD_U650, MOD_L651의 비트15에 반드시 0을 설정하도록 하고, 16비트 전부를 비교하도록 하면 된다.
또, MOD_U650, MOD_L651에는 워드 어드레스를 설정하고 있지만, 경계의 바이트 어드레스를 설정하도록 해도 된다. 비트15를 무시하면 상술한 실시의 형태 2의 동작과 같게 된다.
상술한 실시의 형태 2에서는 MOD_U650, MOD_L651에는 어드레스의 최상위 비트(MSB)까지의 모든 어드레스 치를 유지하도록 되어 있지만, 어드레스의 상위 수비트는 유지하지않도록 하고, 하위 비트만으로 판정을 하도록하면 복수개 영역에 형성된 복수의 서큘라 버퍼에 대하여 같은 설정으로 동시에 모듈로 기구가 동작하도록 할 수 있다. 단지, 비교하지 않은 상위 비트에 대해서는, 갱신전의 값을 그대로 내는 등의 처리가 필요하게 된다.
상술한 실시의 형태 2에서는 상위 14비트 와 비트14의 2개의 비교 결과를 출력하도록 하고 있지만, 워드 어드레스가 매치한 것을 나타내는 정보와 2워드 어드레스가 매치한 정보가 포함되고 있으면 어떠한 형태로 연산결과를 출력해도 좋다.
상술한 실시의 형태 2에서는 일반적인 프로세서의 구성을 나타내고 있지만, DSP와 같이 어드레스 레지스터와 데이터 레지스터(어큐뮬레이터등)를 나누는 구성으로 해도 된다. 또, DSP와 같이 복수의 메모리를 독립적으로 액세스 할수있는 구성으로 하해도 본 발명의 기술은 유효하다.
상술한 실시의 형태 2에서는 규정된 경우 이외의 동작은 보증 않고 있지만, 상기 규정된 경우 이외 일 때에 예외를 검출하는 등의 처리를 해도 된다. 예를 들면, 홀수 어드레스의 경우에는 어드레스 예외를 발생케하는 등의 처리를 해도 된다.
실시의 형태 3.
실시의 형태 1의 데이터 처리장치는 모듈로ㆍ어드레싱을 이용할 때 MOD_S156에 모듈로ㆍ어드레싱 영역의 최초의 어드레스를 MOD_1E157에 모듈로ㆍ어드레싱 영역의 최후의 어드레스를 각각 워드 어드레스로 지정한다. 실시의 형태 3에서는 최초의 어드레스와 최후의 어드레스를 2워드 어드레스로 지정하는 데이터 처리장치에 관해서 설명한다. 실시의 형태 3의 데이터 처리장치는 모듈로 어드레싱의 제어하는 부분은 실시의 형태 1과 다르지만 그 밖의 기본적인 사양 및 구성은 실시의 형태 1과 동일하다.
도 31은 서큘라 버퍼의 영역을 2워드 어드레스로 세트하는 MOD_E850과 MOD_S851을 나타낸다. MOD_E850은 실시의 형태 1의 MOD_E157에 해당하며, MOD_S851은 실시의 형태 1의 MOD_S156에 해당한다. MOD_E850 및MOD_S851은 14비트의 래치이다. 따라서, 실시의 형태 1의 MOD_E857 및 MOD_S156에 비하여 유지하는 정보량을 1비트 생략할 수 있다.
MOD_E850 및 MOD_S851은 인크리먼트 처리로 모듈로 어드레싱을 이용하는 경우에는 MOD_S851에 작은 편의 어드레스가, MOD_E850에는 큰 쪽의 어드레스가 세트되어 디크리먼트 처리로 모듈로 어드레싱을 이용하는 경우에는, MOD_S851에는 큰 쪽의 어드레스가 MOD_E850에는 작은 쪽의 어드레스가 세트된다. 이 실시의 형태 3에서는 서큘라 버퍼의 경계는 반드시 2워드정열되어 있지 않으면 안된다.
도 32는 실시의 형태 3의 데이터 처리장치에서의 특징부인 모듈로 어드레싱 기능을 실현하는 부분의 구성을 모식적으로 나타내는 회로도면이다. 제어부816은 실시의 형태 1의 제어부112에 해당하여, 모듈로 연산의 제어에 관한 부분 이외는 거의 동일하다. 모듈로 연산부703은 실시의 형태 1의 모듈로 연산부700에 해당한다. 각 래치의 인에이블 신호등은 간단히 하기 위해 생략하고 있다. 또, 논리 도면도 알기 쉽도록 정논리로 나타내고 있다.
도 32 이외의 부분은 실시의 형태 1과 거의 동일하다 . 비교기852는 S3 버스303으로 전송되는 베이스 어드레스 치와 MOD_E850에 유지된 모듈로ㆍ엔드ㆍ어드레스와 비교 하여 비교 결과를 제어부816로 보낸다. 비교기852는 비트 0으로부터 비트13의 14비트가 일치한 경우에 일치신호811를 1로 하고 불일치의 경우에는 일치 신호811를 0으로 한다.
모듈로ㆍ엔드ㆍ어드레스를 유지하는 MOD_E850은 14비트의 래치이며 D1 버스311로부터의 입력 포트와 S3 버스303, 비교기852에의 출력 포트를 가진다. MOD_E850의 값이 S3 버스303로 출력되는 경우에는 비트14, 비트15에 0이 출력된다. 모듈로ㆍ스타트ㆍ어드레스를 유지하는 MOD_S851은 14비트의 래치이고 D1 버스311로부터의 입력 포트와 S3 버스303,14비트의 래치853에의 출력 포트를 가진다. MOD_S851의 값이 S3 버스303에 출력되는 경우에는 비트14, 비트15에 0이 출력된다.
셀렉터155는 선택 신호810에 따라서 ALU153의 출력과 래치853에 유지된 모듈로ㆍ스타트ㆍ어드레스치를 선택적으로 D1 버스311로 출력한다. 래치853의 값을 선택할 경우 비트14로서 포스트 디크리먼트1워드 액세스 신호809를 그대로 출력하며 비트15로서 0을 출력한다. 포스트 디크리먼트 1워드 액세스신호809는 제 1디코더817로 생성되고 메모리 액세스 명령으로 1워드 액세스의 포스트 디크리먼트 처리를 하는 경우에 1, 그 이외의 경우에 0이 되는 신호이다.
제어부816내에서는 명령의 디코드 결과와 비교기852의 비교결과에 따라서 셀렉터155의 선택신호 810이 생성된다. PSW부 171로부터는 모듈로 인에이블을 지정하는 MD 비트44의 값이 신호선806을 통해 출력된다. 제 1디코더817은 상기 명령 디코드의 결과로, 포스트 디크리먼트 1워드 액세스 신호809 이외에 메모리 액세스 명령으로 포스트 인크리먼트 및 포스트 디크리먼트 시에 1이되는 포스트 갱신신호807, 메모리 액세스 명령으로 1워드 액세스로 포스트 인크리먼트 처리를 실행하는 경우에 1, 그 이외의 경우에 0이 되는 포스트 인크리먼트1워드 액세스신호808을 출력한다.
AND 게이트801, OR 게이트802, AND 게이트803, AND 게이트804, 인버터805 및 인버터812에서 이들의 정보를 기초로 선택신호810이 생성된다. 즉, 포스트 인크리먼트1워드 액세스 신호808이 AND 게이트804에 입력되는 동시에 인버터805를 통해 AND 게이트803에 입력되어 S3 버스303상의 비트14의 정보가 AND 게이트804에 입력되는 동시에, 인버터812를 통해 AND 게이트803로 입력된다. 그리고 OR 게이트802는 AND 게이트803및 804의 출력의 논리합을 AND 게이트801에 출력한다. AND 게이트801은 포스트 갱신신호807, 신호선806상에 신호, OR 게이트802의 출력 및 일치 신호811의 논리적을 선택 신호810으로서 셀렉터155로 출력한다.
따라서, 메모리 액세스 명령으로 1워드 액세스의 포스트 인크리먼트 처리가 행하여지는(포스트인크리먼트 1워드액세스신호808이 1) 경우, 오퍼랜드의 어드레스의 비트14가 1/ 0에서 신호선813의 1/0을 결정한다. 한편, 메모리 액세스명령으로 1워드 액세스의 포스트 인크리먼트 처리 이외의 처리가 행하여지는 (포스트 인크리먼트 1워드 액세스 신호808이 0)경우, 오퍼랜드의 어드레스의 비트14의 0/1에서 신호선813의 1/0이 결정된다. 또, 어드레스의 비트14가 1인 경우란 어드레스의 비트0∼비트13으로 특정되는 2워드데이터를 구성하는 2개의 1워드 데이터 중, 후반의 1워드 데이터를 특정하는 것을 의미한다.
그리고, 모듈로ㆍ어드레싱이 인에이블 상태(신호선806이 1), 포스트ㆍ인크리먼트/ 디크리먼트 처리를 하는 로드/스토어 명령 처리 시(포스트 갱신신호807이 1)에서, S3 버스303으로 전송되는 오퍼랜드의 어드레스의 상위14비트와 MOD_E850의 값이 일치(일치 신호811이 1)하며, 또 신호선813이 1인 경우에, 선택 신호810이 1로 된다. 상기 조건을 충족시키지 않는 경우에는 선택 신호810은 0으로 된다. 어드레스 레지스터의 포스트 갱신을 하는 로드/스토어 명령 실행 시에, 선택 신호가 0의 경우에는 ALU153 에서의 가감산 결과가 포인터의 갱신치 로서, D1 버스311을 통해 레지스터 파일115로 기록 된다. 선택 신호가 1인 경우에는 래치853에 유지된 모듈로ㆍ스타트ㆍ어드레스의 값이 포인터의 갱신치 로서, D1 버스311를 통해 레지스터 파일115로 재기록 된다.
모듈로ㆍ어드레싱이 디스에이블 상태의 경우에는 선택 신호810은 반드시0이 되어 셀렉터155로서는 항상 ALU153의 출력이 선택된다.
일례로서 다음에 서큘라 버퍼 영역을 액세스 하는 로드/스토어 명령의 실행 시에서의 어드레스의 갱신에 관해서 설명한다. MD 비트44는 1로 한다. 우선, 포스트 인크리먼트로 모듈로 어드레싱을 사용하는 경우에 관해서 설명한다.
본 데이터 처리장치에서는, 서큘라 버퍼의 경계 액세스 시에 4바이트 경계의 비정열 을 할 경우의 동작은 보증않고 있다. 2워드 액세스을 할 경우는 반드시 4바이트경계에 정열된 상태로 액세스 한다.
도 33은 인크리먼트으로 액세스 할 때의 서큘라 버퍼가 예를 나타내는 설명도면이다. h'는 16진 표기인 것을 나타낸다. h'1000번지에서 h'11ff 번지의 256워드(512바이트)가 서큘라 버퍼의 영역으로 되어 있고 MOD_S851에는 버퍼 영역의 개시의 2워드 어드레스인 h'1000의 상위14비트를 MOD_E850에는 최후의 2워드 어드레스인 h'11fc의 상위 14비트를 세트한다.
1워드 액세스로 포스트 인크리먼트 처리를 하는 경우 제 1디코더817로부터 출력되는 포스트 갱신신호807은 1, 포스트 인크리먼트 1워드 액세스 신호808는 1, 포스트 디크리먼트1워드 액세스 신호809는 0이 된다.
따라서, 베이스 어드레스 레지스터의 값이 h'11fe의 경우 일치 신호811이 1, 베이스 어드레스 레지스터의 비트14가 1이 되기 때문에, 선택 신호810이 1이 되며, 셀렉터155는 래치853에 유지된 모듈로ㆍ스타트ㆍ어드레스의 값을 선택하여 D1 버스311을 통해 레지스터 파일115의 베이스 어드레스 레지스터로 출력한다. 이 때 포스트 디크리먼트1워드 액세스 신호809가 0이 되기 때문에, 베이스 어드레스 레지스터에는 h'1000이 재기록 된다. 그 이외의 경우에는, 신호선813이 0이 되기 때문에 셀렉터155는 ALU153의 출력, 즉 베이스 어드레스 레지스터의 초기 치에 2가 가산된 값을 베이스 어드레스 레지스터로 재기록 된다. 예를 들면, 베이스 어드레스 레지스터의 값이 h'11fc의 경우 베이스 어드레스 레지스터에는 h'11fe가 재기록 된다.
2워드 액세스로 포스트 인크리먼트 처리를 할 경우 제 1디코더817로부터 출력되는 포스트 갱신신호807은 1, 포스트 인크리먼트 1워드 액세스 신호808은 0, 포스트 디크리먼트 1워드 액세스 신호809는 0이 된다.
따라서, 베이스 어드레스 레지스터의 값이 h'11fc의 경우, 일치 신호811이 1, 베이스 어드레스 레지스터의 비트14가 0이 되기 때문에, 선택신호810이 1이 되며 셀렉터155는 래치853에 유지된 모듈로ㆍ스타트ㆍ어드레스의 값을 선택한다. 이 때, 포스트 디크리먼트1워드 액세스신호809가 0이 되기 때문에, 베이스 어드레스 레지스터에는 h'1000이 재기록 된다. 그 이외의 경우에는 일치 신호811이 0또는 베이스 어드레스 레지스터의 비트14가 1이 되기 때문에 셀렉터155는 ALU153의 출력, 즉, 베이스 어드레스레지스터의 초기치에 4가 가산된 값을 베이스 어드레스레지스터로 재기록 된다.
이와 같이 1워드 액세스의 포스트 인크리먼트 처리와 2워드 액세스의 포스트 인크리먼트 처리와의 사이에서 공통의MOD_S851 및 MOD_E850의 설정으로 실시의 형태 3의 데이터 처리장치는 포스트 인크리먼트 처리로 1워드 액세스 하는 경우에도 2워드 액세스하는 경우에도 정확하게 동작한다.
도 34는 포스트 디크리먼트 처리로 액세스 할 때의 서큘라 버퍼가 예를 나타낸다. h'는 16진표기인 것을 나타낸다. h'1000번지에서 h'11ff 번지의 256워드(512바이트)가 서큘라 버퍼의 영역으로 되어 있고 MOD_S851에는 버퍼 영역의 개시의 2워드 어드레스인 h'11fc의 상위 14비트를 MOD_E850에는 최후의 2워드 어드레스인 h'1000의 상위14비트를 세트한다.
1워드 액세스의 포스트 디크리먼트 처리를 하는 경우, 제 1디코더817로부터 출력되는 포스트 갱신신호807은 1, 포스트 인크리먼트 1워드 액세스 신호808은 0, 포스트 디크리먼트 1워드 액세스 신호809는 1이 된다.
따라서, 베이스 어드레스 레지스터의 값이 h'1000의 경우 일치 신호811이 1, 베이스 어드레스 레지스터의 비트14가 0이 되기 때문에, 선택신호810이 1이 되며, 셀렉터155는 래치853로 유지된 모듈로ㆍ스타트ㆍ어드레스의 값을 선택한다. 이 때, 포스트 디크리먼트 1워드 액세스 신호809가 1이 되기 때문에, 베이스 어드레스 레지스터에는 h'11fe가 재기록 된다. 그 이외의 경우에는 일치 신호811이 0또는 베이스 어드레스 레지스터의 비트14가 1이 되기 때문에, 셀렉터155는 ALU153의 출력, 즉, 베이스 어드레스 레지스터의 초기치에 2가 감산된 값을 베이스 어드레스 레지스터에 재기록 한다. 예를 들면, 베이스 어드레스 레지스터의 값이 h'1002의 경우 베이스 어드레스 레지스터에는 h'1000이 재기록 된다.
2워드 액세스의 포스트 디크리먼트 처리를 하는 경우, 제 1디코더817로부터 출력되는 포스트 갱신신호807은 1, 포스트 인크리먼트 1워드 액세스 신호808은 0, 포스트 디크리먼트 1워드 액세스 신호809는 0이 된다. 베이스 어드레스 레지스터의 값이 h'1000의 경우, 일치 신호811이 1, 베이스 어드레스 레지스터의 비트14가 0이 되기 때문에 선택신호810이 1이 되며 셀렉터155는 래치853로 유지된 모듈로ㆍ스타트ㆍ어드레스의 값을 선택한다. 이 때, 포스트 디크리먼트1워드 액세스 신호809가 0이 되기 때문에, 베이스 어드레스 레지스터에는 h'11fc가 재기록 된다. 그 이외의 경우에는 일치 신호811이 0또는 베이스 어드레스 레지스터의 비트14가 1이 되기 때문에, 셀렉터155는 ALU153의 출력, 즉, 베이스 어드레스 레지스터의 초기치에 4가 감산된 값을 베이스 어드레스 레지스터에 재기록 한다.
이와 같이 1워드 액세스의 포스트 디크리먼트 처리와 2워드 액세스의 포스트 디크리먼트 처리와의 사이에서 공통의MOD_S851 및 MOD_E850의 설정으로 실시의 형태 3의 데이터 처리장치는 포스트 디크리먼트 처리로 1워드 액세스 하는 경우에도 2워드액세스하는 경우에도 정확하게 동작한다.
상술한 바와 같이, 반드시 2워드 단위로 서큘라 버퍼를 구성한다고 하는 제한은 가해지지만, 실시의 형태 3의 데이터 처리장치는 실시의 형태 1과 마찬가지로 포스트 인크리먼트 처리 또는 포스트 디크리먼트 처리에 의해서 1워드뿐 만 아니라 2워드액세스를 하는 경우에도, 효율이 좋은 서큘라 버퍼의 액세스가 가능해져, 프로그램의 코드 사이즈의 삭감, 처리 사이클수의 감소에 기여한다.
또, 실시의 형태 3의 데이터 처리장치는 포스트 인크리먼트 처리 및 포스트 디크리먼트 처리 시에서, 어드레스의 계산과 병렬로 베이스 어드레스의 초기치에 근거한 판정 처리가능해지기 때문에 동작 주파수의 향상에 의한 고속화가 용이한다.
실시의 형태 1과 마찬가지로 상술한 실시의 형태 3으로 설명한 여러 가지 경우에도 본 발명은 적용할 수 있다.
상술한 실시의 형태 3에서는 어드레스의 비트 길이가 16비트의 예를 나타냈지만 24비트와 32비트 등 임의의 비트 길이만으로도 된다. 또, 데이터의 기본 데이터 길이를 16비트로 하고 있지만, 24비트로 하거나, 32비트로 해도 된다. 또, 바이트 어드레스를 관리하고 있지만, 16비트와 24비트, 32비트를 1워드로서, 워드 어드레스를 관리해도 된다.
상술한 실시의 형태 3에서는 1워드 액세스와 2워드액세스의 경우에 관해서 기술하였지만 4워드 등 보다 많은 데이터를 한번에 전송하는 로드/스토어 명령을 실행하는 경우에도 같은 기술의 사용이 가능하다. 4워드 전송의 경우, MOD_E850, MOD_S851에 4워드 어드레스를 설정하고, 비트13,14를 별도로 판정하도록 하면 된다.
상술한 실시의 형태 3에서는 어드레스의 상위 15비트만으로 판정을 하고 있지만, 비트15가 0인 것을 판정 조건에 추가해도 좋다.
상술한 실시의 형태 3에서는 MOD_E850, MOD_S851은 물리적으로 14비트밖에 유지하지 않도록 하고 있지만, 16비트 유지하도록 하고 비트14 및 비트15는 무시하는 구성으로 해도 되며, 비교에 사용하도록 구성해도 된다. 비교에 사용하는 경우에는, MOD_S851의 비트14 및 비트15에 반드시 0을 설정하도록 하고, 16비트 전부를 비교하도록 하면 된다.
또, MOD_E850, MOD_S851에는 워드 어드레스를 설정하고 있지만 경계의 바이트 어드레스를 설정하도록 해도 좋다. 비트15를 무시하면 상술한 실시의 형태 3의 동작과 같게 된다.
상술한 실시의 형태 3에서는 MOD_E850, MOD_S851에는 어드레스의 최상위 비트(MSB)까지의 모든 어드레스 치를 유지하게 되어 있지만, 어드레스의 상위 수 비트는 유지하지 않도록 하여 하위 비트만으로 판정을 하도록 하면, 복수 영역에 형성된 복수의 서큘라 버퍼에 대하여 같은 설정으로 동시에 모듈로 기구가 동작하도록 할 수 있다. 단, 비교하지 않은 상위 비트에 관해서는, 갱신전의 값을 그대로 내는 등의 처리가 필요하게 된다.
상술한 실시의 형태 3에서는 인크리먼트 시에도 디크리먼트 시에도 동작 가능한 실시예가 표시되고 있지만, 인크리먼트 시만 또는 디크리먼트 시에만 동작하도록 해도 좋다.
상술한 실시의 형태 3에서는 일반적인 프로세서의 구성을 나타내고 있지만, DSP와 같이, 어드레스 레지스터와 데이터레지스터(어큐뮬레이터 등)를 나누는 구성으로 하여도 좋다. 또, DSP와 같이 복수의 메모리를 독립적으로 액세스 할수 있는 구성으로 해도, 본 기술은 유효하다.
상술한 실시의 형태 3에서는 규정된 경우 이외의 동작은 보증 않고 있지만 상기 규정된 경우 이외 시에 예외를 검출하는 등의 처리를 해도 된다. 예를 들면, 홀수 어드레스의 경우에는 어드레스 예외를 야기케 하는 등의 처리를 행해도 좋다.
<실시의 형태 4.
실시의 형태 2의 데이터 처리장치는 모듈로ㆍ어드레싱을 이용할 때, MOD_U650에 모듈로ㆍ어드레싱 영역의 상한의 어드레스를 MOD_L651에 모듈로ㆍ어드레싱 영역의 하한의 어드레스를 각각 워드 어드레스로 지정한다. 실시의 형태 4에서는 상한의 어드레스와 하한의 어드레스를 2워드 어드레스로 지정하는 데이터 처리장치에 관해서 설명한다. 모듈로 어드레싱의 제어를 하는 부분은 실시의 형태 2와 다르지만, 그 밖의 기본적인 사양 및 구성은 실시의 형태 2와 동일하다.
도 35는 서큘라 버퍼의 어드레스를 2워드 어드레스로 세트하는 MOD_U950과 MOD_L951을 나타낸다. MOD_U950은 실시의 형태 2의 MOD_U650에 해당하며, MOD_L951은 실시의 형태 2의 MOD_L651에 해당한다. MOD_U950은 14비트의 래치로, 모듈로 연산의 대상이 되는 영역의 상한의 어드레스가 2워드 어드레스로 세트된다. MOD_L951은 14비트의 래치로, 모듈로 연산의 대상이 되는 영역의 하한의 어드레스가 2워드 어드레스로 세트된다. 단지, 하한의 어드레스는 상한의 어드레스보다 작은 어드레스이다. 따라서, 실시의 형태 4의 MOD_U950 및 MOD_L951은 실시의 형태 2의 MOD_U650 및 MOD_L651에 비교하여 유지하는 정보량을 1비트 생략할 수 있다.
MOD_U950, MOD_L9651에 유지되지 않은 비트14, 비트15는 0고정이고, 기록 시는 무시되어 판독 시는 항상 0이 된다. 이 실시의 형태에서는 서큘라 버퍼의 경계는 반드시 2워드정열 되어 있지 않으면 안된다.
도 36은 실시의 형태 4의 데이터 처리장치의 특징부인 모듈로 어드레싱 기능을 실현하는 부분의 구성 모식적으로 나타내는 회로도면이다. 제어부916은 실시의 형태 1의 제어부112에 해당하여 모듈로 연산의 제어에 관한 부분 이외는 거의 동일하다. 모듈로 연산부704는 실시의 형태 1의 모듈로 연산부700에 해당한다. 각 래치의 인에이블 신호등은 간단히 하기 위해서 생략하고 있다. 또, 논리 도면도 알기 쉽도록 정논리로 나타내고 있다. 도 36 이외의 부분은 실시의 형태 1과 거의 동일하다.
셀렉터952는 제 1디코더917로 생성되는 포스트 인크리먼트 신호913으로 제어된다. 포스트 인크리먼트 신호913은 메모리 액세스 명령으로 포스트ㆍ인크리먼트 시에 1, 포스트 디크리먼트 시에 0이 된다. 셀렉터952는 포스트 인크리먼트 신호913이 1로 포스트인크리먼트를 지시하는 경우에 MOD_U950의 값을 선택하여 비교기954에 출력하여, 포스트 인크리먼트 신호913이 0으로 포스트디크리먼트를 지시하는 경우에 MOD_L951의 값을 선택하여 비교기954로 출력된다.
비교기954는 S3 버스303으로 전송되는 베이스 어드레스 치와 셀렉터952로부터 출력된 어드레스와 비교를 행하여 비교 결과인 일치 신호911을 제어부916로 보낸다. 이때, 비트0로부터 비트13의 상위14비트가 일치할 경우에 일치 신호911이 1이 되고 불일치의 경우에는 일치 신호911이 0으로 된다.
서큘라 버퍼의 상한 어드레스를 유지하는 MOD_U950은 14비트의 래치이고 D1 버스311로부터의 입력 포트와 S3 버스303 셀렉터952, 셀렉터953에의 출력 포트를 가진다. MOD_U950의 값이 S3 버스303에 출력되는 경우에는 비트14, 비트15에 0이 출력된다.
서큘라 버퍼의 하한 어드레스를 유지하는 MOD_L951은 14비트의 래치이고 D1 버스311로부터의 입력포트와 S3 버스303, 셀렉터952, 셀렉터953에의 출력 포트를 가진다. MOD_L951의 값이 S3 버스303에 출력되는 경우에는 비트14, 비트15에 0이 출력된다.
셀렉터 953은 제 1디코더917로 생성되는 포스트 인크리먼트 신호913으로 제어된다. 즉, 셀렉터953은 포스트인크리먼트 신호913이 1로 포스트 인크리먼트 처리를 지시하는 경우에는 MOD_L951의 값을 선택하여 래치955에 출력하여 포스트 인크리먼트신호913이 0으로 포스트 디크리먼트 처리를 지시하는 경우에는 MOD_U950의 값을 선택하여 래치955에 출력한다.
셀렉터155는 선택신호910에 따라서 ALU153의 출력과 래치955에 유지된 어드레스 치를 선택적으로 D1 버스311에 출력한다. 이 때, 래치955의 값을 선택할 경우, 비트14로서 포스트 디크리먼트1워드 액세스 신호909를 그대로 출력하여, 비트15로서 0을 출력한다. 포스트 디크리먼트 1 워드 액세스 신호909는 제 1 디코더917로 생성되어 메모리 액세스 명령(로드/스토어 명령)이 1워드 액세스의 포스트 디크리먼트 처리를 하는 경우에 1, 그 이외의 경우에 0이 된다.
제어부916내에서는 명령의 디코드 결과와 비교기954의 비교 결과에 따라서 셀렉터155에 출력하는 선택신호910이 생성된다. PSW 부171로부터는 모듈로 인에이블을 지정하는 MD 비트44의 값이 신호선906으로 출력된다. 제 1디코더917로부터는 명령 디코드의 결과로서 메모리 액세스 명령으로 포스트ㆍ인크리먼트/디크리먼트 시에 1이 되는 포스트 갱신신호907, 메모리 액세스 명령으로 1워드 액세스로 포스트ㆍ인크리먼트 때에 1, 그 이외의 경우에 0이 되는 포스트 인크리먼트1워드 액세스 신호908이 출력된다.
AND 게이트901, OR 게이트902, AND 게이트903, AND 게이트904, 인버터905 및 인버터912에서 이들의 정보를 기초로 선택 신호910이 생성된다. 즉, 포스트 인크리먼트1워드 액세스 신호908이 AND 게이트904로 입력되는 동시에 인버터905를 통해AND 게이트903에 입력되고 S3 버스303상의 비트14의 정보가 AND 게이트904에 입력되는 동시에, 인버터812를 통해 AND 게이트903로 입력된다. 그리고, OR 게이트902는 AND 게이트903 및 904의 출력의 논리합을 AND 게이트901로 출력한다. AND 게이트901은 포스트 갱신신호907, 신호선906상에 신호, OR 게이트902의 출력 및 일치 신호911의 논리적을 선택 신호910으로서 셀렉터155로 출력한다.
따라서, 메모리 액세스 명령으로 1워드 액세스의 포스트 인크리먼트 처리가 행해지는 (포스트 인크리먼트1워드 액세스 신호908이 1)경우, 오퍼랜드의 어드레스의 비트14가 1/0로 신호선914의 1/0이 결정한다. 한편, 메모리 액세스명령으로 1워드 액세스의 포스트 인크리먼트 처리이외의 처리가 행해지는 (포스트 인크리먼트 1워드 액세스 신호908이 0)경우, 오퍼랜드의 어드레스의 비트14의 0/1로 신호선914의 1/0을 결정한다.
그리고, 모듈로ㆍ어드레싱이 인에이블 상태(신호선906이 1), 포스트ㆍ인크리먼트/디크리먼트 처리를 행하는 로드/스토어 명령 처리시(포스트 갱신신호907이 1)에서 S3 버스303으로 전송되는 오퍼랜드의 어드레스의 상위14비트와 셀렉터952의 출력치가 일치(일치 신호911이 1)하고, 또, 신호선914가 1의 경우에, 선택 신호910이 1이 된다. 상기 조건을 충족하지 않은 경우에는 선택 신호910은 0이 된다.
어드레스 레지스터의 포스트 갱신을 하는 로드/스토어 기억(장치)명령 실행 시에 선택 신호910이 0인 경우에는 ALU153 에서의 가감산 결과가 포인터의 갱신치로서 D1 버스311를 통해서 레지스터 파일115에 재기록 된다. 선택 신호910이 1의 경우에는 래치955로 유지된 어드레스의 값이 포인터의 갱신치로서 D1 버스311를 통해 레지스터 파일115로 재기록 된다.
또, 모듈로ㆍ어드레싱이 디스에이블 상태인 경우에는 선택 신호910은 반드시 0이 되어, 셀렉터155로서는 항상 ALU153의 출력이 선택된다.
일례로서 다음에, 서큘라 버퍼 영역을 액세스 하는 로드/스토어 명령의 실행 시의 어드레스의 갱신에 관해서 설명한다. MD 비트44는 1로 한다.
본 데이터 처리장치에서는, 서큘라 버퍼의 경계 액세스 시에 4바이트 경계의 비정열 액세스을 할 경우의 동작은 보증되어 있지 않다. 2워드 액세스를 하는 경우는 반드시 4바이트 경계로 정열된 상태로 액세스을 한다.
도 37은 서큘라 버퍼가 예를 나타내는 설명도면이다. h'는 16진 표기인 것을 나타낸다. h'1000번지에서 h'11ff 번지의 256워드(512바이트)가 서큘라 버퍼의 영역으로 되어 있고, MOD_L951에는 버퍼 영역의 하한2워드 어드레스인 h'1000의 상위 14비트를 MOD_U950에는 상한의 2워드 어드레스인 h'11fc의 상위 14비트를 세트한다.
포스트 인크리먼트 처리를 하는 경우, 1워드 액세스, 2워드 액세스에 관계없이 제 1디코더917로부터 출력되는 포스트 인크리먼트 신호913은 1이 되기 때문에 셀렉터952는 MOD_U950의 값을 선택하여 비교기954로 출력하고 셀렉터953은 MOD_L951의 값을 선택하여 래치955로 출력한다.
1워드 액세스의 포스트 인크리먼트 처리를 하는 경우 제 1디코더917로부터 출력되는 포스트 인크리먼트 신호913은 1, 포스트 갱신신호907은 1, 포스트 인크리먼트1워드 액세스 신호908은 1, 포스트 디크리먼트 1워드 액세스신호909는 0이 된다.
이 상태에서, 베이스 어드레스 레지스터의 값이 h'11fe인 경우 일치 신호911이 1, 베이스 어드레스 레지스터의 비트14가 1이 되기 때문에, 선택 신호910이 1이 된다. 그 결과, 셀렉터155는 래치955의 값 (MOD_L951의 값)을 선택하여 베이스 어드레스 레지스터에 h'1000이 재기록 된다. 그 이외의 경우에는 어드레스 변경 신호914가 0이 되기 때문에, 셀렉터155는 ALU153의 출력, 즉 베이스 어드레스 레지스터의 초기 값에 2가 가산된 값을 베이스 어드레스 레지스터에 재기록 한다. 예를 들면, 베이스 어드레스 레지스터의 값이 h'11fc인 경우 베이스 어드레스 레지스터에는 h'11fe가 재기록 된다.
2워드 액세스의 포스트 인크리먼트 처리를 하는 경우, 제 1테코더917로부터 출력되는 포스트 인크리먼트 신호913은 1, 포스트 갱신신호907은 1, 포스트 인크리먼트 1워드 액세스 신호908은 0, 포스트 디크리먼트 1워드 액세스신호909는 0이 된다.
이 상태로, 베이스 어드레스 레지스터의 값이 h'11fc의 경우, 일치 신호911이 1, 베이스 어드레스 레지스터의 비트14가 0이 되기 때문에, 선택 신호910이 1이 된다. 그 결과, 셀렉터155는 래치955의 값(MOD_L951의 값)을 선택하여 베이스 어드레스레지스터에 h'1000을 재기록 된다. 그 이외의 경우에는, 어드레스변경신호914가 0으로 되기 때문에, 셀렉터155는 ALU153의 출력, 즉, 베이스 어드레스 레지스터의 초기 값에 4가 가산된 값을 베이스 어드레스 레지스터에 재기록 된다.
이와 같이, 실시의 형태 4의 데이터 처리장치는 서큘라 버퍼의 상한 워드 어드레스 및 하한 워드 어드레스를 각각 MOD_U650 및 MOD_L651로 유지하는 설정으로 포스트인크리먼트 처리로 1워드 액세스 하는 경우에도 포스트 인크리먼트 처리로 2워드 액세스하는 경우에도 정확하게 동작한다.
포스트 디크리먼트 처리를 하는 경우, 1워드 액세스, 2워드 액세스에 관계없이 제 1디코더917로부터 출력되는 포스트 인크리먼트 신호913은 0이 되기 때문에 셀렉터952는 MOD_L951의 값을 선택하여 비교기954에 출력하고, 셀렉터953은 MOD_U950의 값을 선택하여 래치955에 출력한다.
포스트 디크리먼트 1워드 액세스 행하는 경우, 제 1디코더917로부터 출력되는 포스트 인크리먼트 신호913은 0, 포스트 갱신신호907은 1, 포스트 인크리먼트 1워드 액세스 신호908은 0, 포스트 디크리먼트 1워드 액세스 신호909는 1이 된다.
이 상태로 베이스 어드레스 레지스터의 값이 h'1000의 경우 일치 신호911이 1, 베이스 어드레스 레지스터의 비트14가 0이 되기 때문에, 선택 신호910이 1이 된다. 그 결과, 셀렉터155는 래치955의 값 (MOD_U950의 값)을 선택한다. 이 때, 포스트 디크리먼트 1워드 액세스 신호909가 1이 되기 때문에, 셀렉터155는 비트14의 출력으로서 1을 출력한다. 따라서, 셀렉터155는 베이스 어드레스 레지스터에 h'11fe가 재기록 된다. 그 이외의 경우에는 어드레스 변경 신호914가 0이 되기 때문에, 셀렉터155는 ALU153의 출력, 즉 베이스 어드레스 레지스터의 초기치에 2가 감산된 값을 베이스 어드레스 레지스터로 재기록 된다. 예를 들면, 베이스 어드레스 레지스터의 값이 h'1002의 경우 베이스 어드레스레지스터에는 h'1000이 재기록 된다.
2워드 액세스의 포스트 디크리먼트 처리를 행하는 경우 제 1디코더917로부터 출력되는 포스트 인크리먼트 신호913은 0, 포스트 갱신신호907은 1, 포스트 인크리먼트 1워드 액세스 신호908은 0, 포스트 디크리먼트 1워드 액세스 신호909는 0이 된다.
이 상태에서, 베이스 어드레스 레지스터의 값이 h'1000의 경우 일치 신호911이 1, 베이스 어드레스 레지스터의 비트14가 0이 되기 때문에, 선택신호910이 1이 된다. 그 결과, 셀렉터155는 래치955의 값(MOD_U950의 값)를 선택하여 베이스 어드레스 레지스터에 h'11fc를 재기록 한다. 그 이외의 경우에는 어드레스 변경 신호914가 0이 되기 때문에, 셀렉터155는 ALU153의 출력, 즉 베이스 어드레스 레지스터의 초기치에 4가 감산된 값을 베이스 어드레스 레지스터로 재기록 된다. 이와 같이, 실시의 형태 4의 데이터 처리장치는 포스트 인크리먼트 처리와 완전히 같은값을 MOD_U650 및 MOD_L651에 설정해도 포스트 디크리먼트 처리로 1워드 액세스하는 경우에도, 2워드 액세스하는 경우에도 정확하게 동작한다.
상술한 바와 같이, 반드시 2워드 단위로 서큘라 버퍼를 구성한다고 하는 제한은 가해지지만, 실시의 형태 4의 데이터 처리장치는 실시의 형태 2와 같이 1워드뿐만 아니라 2워드액세스를 하는 경우에도 효율이 좋은 서큘라 버퍼의 액세스가 가능해져, 프로그램의 코드 사이즈의 삭감, 처리 사이클수의 감소에 기여한다. 어느 경우도, 포스트 인크리먼트/포스트 디크리먼트를 의식하지 않고서 서큘라 버퍼의 상한 어드레스와 하한 어드레스를 2워드 어드레스로 설정하면 되기 때문에 설정이 통일되어 있어 알기 쉽다.
또, 실시의 형태 4의 데이터 처리장치는 포스트 인크리먼트 처리 및 포스트 디크리먼트 처리에 어드레스의 계산과 병렬로 베이스 어드레스의 초기치에 근거한 판정 처리가 가능 해지기 때문에 동작 주파수의 향상에 의한 고속화가 용이하다.
실시의 형태 1과 마찬가지로, 상술한 실시의 형태 4로 설명한 여러 가지 경우에도, 본 발명을 적용할 수 있다.
상술한 실시의 형태 4에서는, 어드레스의 비트 길이가 16비트의 예를 표시 하지만 24비트와 32비트 등 임의의 비트 길이 만으로도 된다. 또, 데이터의 기본 데이터 길이를 16비트로 하고 있지만, 24비트로 하거나, 32비트로 해도 된다. 또, 바이트 어드레스를 관리하고 있지만, 16비트와 24비트, 32비트를 1워드로서 워드 어드레스를 관리해도 좋다.
상술한 실시의 형태 4에서는 1워드 액세스와 2워드 액세스의 경우에 관해서 기술하였지만 4워드 등 보다 많은 데이터를 한번에 전송하는 로드/스토어 명령을 실행하는 경우에도 같은 기술의 사용이 가능하다. 4워드 전송의 경우, MOD_U950, MOD_L951에 4워드 어드레스를 설정하여 비트13,14를 별도 판정하도록 하면 된다.
상술한 실시의 형태 4에서는 어드레스의 상위15비트만으로 판정을 하고 있지만, 비트15가 0인 것을 판정조건에 추가해도 된다.
상술한 실시의 형태 4에서는 MOD_E950, MOD_S951은 물리적으로 14 비트 이외는 유지하지 않도록 하고 있지만 16비트 유지하도록 하여, 비트14 및 비트15는 무시하는 구성으로 해도 좋고, 비교에 사용 하도록 구성해도 된다. 비교에 사용하는 경우에는 MOD_S951의 비트14 및 비트15에 반드시 0를 설정하도록하여, 16비트 전부를 비교하도록 하면된다.
또, MOD_U950, MOD_L951에는 워드 어드레스를 설정하고 있지만 경계의 바이트 어드레스를 설정하도록 해도 된다. 비트15를 무시하면 상술한 실시의 형태 4의 동작과 같게 된다.
상술한 실시의 형태 4에서는 MOD_U950, MOD_L951에는 어드레스의 최상위 비트(MSB)까지의 모든 어드레스치를 유지하도록 되어 있지만 어드레스의 상위수비트는 유지하지않도록 하고 하위 비트만으로 판정을 하도록 하면 복수개 영역에 형성된 복수의 서큘라 버퍼에 대하여 같은 설정으로 동시에 모듈로 기구가 동작하도록 할수있다. 단지, 비교하지않은 상위비트에 대해서는 갱신전의 값을 그대로 내는 등의 처리가 필요하게 된다.
상술한 실시의 형태 4에서는 일반적인 프로세서의 구성을 나타내고 있지만 DSP와 같이 어드레스 레지스터와 데이터 레지스터(어큐뮬레이터 등)를 나누는 구성으로 해도 된다. 또, DSP와 같이 복수의 메모리를 독립적으로 액세스 할수있는 구성으로 해도 본기술은 유효하다.
상술한 실시의 형태 4에서는 규정된 경우 이외의 동작은 보증 않고 있지만 상기 규정된 경우 이외일 때에 예외를 검출하는 등의 처리를 해도 된다. 예를 들면, 홀수 어드레스의 경우에는 어드레스 예외를 야기 시키는 등의 처리을 해도 된다.
<실시의 형태 5
실시의 형태 2의 데이터처리장치에서는 모듈로ㆍ어드레싱을 이용할 때 MOD_U650에 모듈로ㆍ어드레싱 영역의 상한 어드레스, MOD_L651에 모듈로ㆍ어드레싱 영역의 하한의 어드레스를 워드 어드레스로 지정한다. 실시의 형태 5의 데이터 처리장치로는 상한의 어드레스와 하한의 어드레스를 1워드 어드레스로 지정하는 점은 실시의 형태 2와 동일하지만, 실시의 형태 2와는 달라 1워드 액세스의 포스트 인크리먼트 처리와 1워드 액세스의 포스트 디크리먼트만을 처리대상으로 하고 있다. 모듈로 어드레싱의 제어를 하는 부분은 실시의 형태 2와 다르지만 그 밖의 기본적인 사양 및 구성은 실시의 형태 2와 같다.
도 38은, 서큘라 버퍼의 상한 및 하한 어드레스를 1워드 어드레스로 세트하는 MOD_U1050과 MOD_L1051을 나타낸다. MOD_U1050은 실시의 형태 2의 MOD_U650에 해당하며 MOD_L1051은 실시의 형태 2의 MOD_L651에 해당한다. MOD_U1050은 16비트의 래치로, 모듈로 연산의 대상이 되는 영역의 상한의 어드레스의 1워드 어드레스가 세트된다. MOD_L1051은 16비트의 래치로 모듈로 연산의 대상이 되는 영역의 하한의 어드레스의 1워드 어드레스가 세트된다. 단지, 하한의 어드레스는 상한의 어드레스 보다 작은 어드레스이다. 모듈로 어드레싱을 기능 하는 경우 MOD_U1050과 MOD_L1051의 비트15에는 반드시 0이 세트되지 않으면 안된다.
도 39는 실시의 형태 5의 데이터 처리장치의 특징부인 모듈로 어드레싱 기능을 실현하는 부분의 구성을 나타내는 모식적으로 나타낸 회로 도면이다. 제어부 1016은 실시의 형태 1의 제어부112에 해당하며, 모듈로 연산의 제어에 관한 부분 이외는 거의 동일하다 . 모듈로 연산부705는 실시의 형태 1의 모듈로 연산부 700에 해당한다. 각 래치의 인에이블 신호등은 간단히 하기 위해 생략하고 있다. 또 논리 도면도 알기 쉽도록 정논리로 나타내고 있다. 도 39 이외의 부분은 실시의 형태 1과 거의 동일하다.
셀렉터1052는 제 1디코더1017로 생성되는 포스트 인크리먼트 신호1013으로 제어된다. 포스트 인크리먼트 신호1013은 메모리 액세스 명령으로 포스트ㆍ인크리먼트시에 1, 포스트ㆍ디크리먼트시에 0이된다. 따라서, 셀렉터1052는 포스트 인크리먼트 신호1013이 1로 포스트 인크리먼트 처리를 지시하는 경우에는 MOD_U1050의 값을 선택하여 비교기1054에 출력하여 포스트 인크리먼트 신호1013이 0 으로 포스트 디크리먼트 처리를 지시하는 경우에는 MOD_L1051의 값을 선택하여 비교기1054에 출력한다.
비교기1054는 S3 버스303으로 전송되는 베이스 어드레스 치와 셀렉터1052로부터 출력된 어드레스를 비교하여 비교 결과를 일치 신호1011로서 제어부1016에 보낸다. 이때, 비트0으로부터 비트15가 일치할 경우에 일치 신호1011이 1가 되어, 불일치의 경우에는 일치신호1011이 0으로 된다.
서큘라 버퍼의 상한 어드레스를 유지하는 MOD_U1050은 16비트의 래치이고 D1 버스311로부터의 입력포트와, S3 버스303, 셀렉터1052, 셀렉터1053에의 출력포트를 가진다. 서큘라 버퍼의 하한 어드레스를 유지하는 MOD_L1051은 16비트의 래치이고 D1 버스311로부터의 입력포트와 S3 버스303, 셀렉터1052, 셀렉터1053에의 출력포트를 가진다.
셀렉터1053은 제 1디코더1017로 생성되는 포스트 인크리먼트 신호1013으로 제어된다. 즉, 셀렉터1053은 포스트 인크리먼트 신호1013이 1로 포스트 인크리먼트을 지시하는 경우에는 MOD_L1051의 값이 선택하여 래치1055로 출력하여 포스트 인크리먼트 신호1013이 0으로 포스트 디크리먼트를 지시하는 경우에는 MOD_U1050의 값을 선택하여 래치1055로 출력한다.
셀렉터1060은 선택신호1010에 따라서 ALU153의 출력 또는 래치1055에 유지된 어드레스 치를 선택적으로 D1 버스311로 출력한다. 제어부1016내에서는 명령의 디코드 결과와 비교기1054의 비교결과에 따라서 셀렉터1060의 선택 신호1010이 생성된다. PSW 부171로부터는 모듈로 인에이블을 지정하는 MD 비트44의 값이 신호선1006으로 출력된다. 제 1디코더1017로부터는 명령 디코드의 결과로서, 메모리 액세스 명령으로 포스트ㆍ인크리먼트/디크리먼트 시에 1이 되는 포스트 갱신신호1007이 출력된다.
AND 게이트1001에서 이들의 정보를 기초로 선택 신호1010이 생성된다. 즉, AND 게이트1001은 포스트 갱신신호1007, 신호선1006상의 신호 및 일치 신호1011의 논리적을 연산하여 선택 신호1010을 출력한다.
모듈로ㆍ어드레싱이 인에이블 상태(신호선1006이 1), 또한, 포스트ㆍ인크리먼트/를 행하는 로드/스토어 명령 처리 시(포스트 갱신신호1007이1)에, S3 버스303으로 전송되는 오퍼랜드의 어드레스와 셀렉터1052로 선택된 어드레스가 일치했을(일치 신호1011이 1)경우에, 선택 신호1010이 1이 된다. 이 조건을 충족치 못하는 경우에는 선택 신호1010은 0이 된다.
어드레스 레지스터의 포스트 갱신을 하는 로드/스토어 명령 실행 시에, 선택 신호가 0인 경우에는 ALU153 에서의 가감산 결과가 포인터의 갱신치로서, D1 버스311을 통해 레지스터 파일115로 재기록 된다. 선택신호가 1인 경우에는 래치955에 유지된 어드레스의 값이 포인터의 갱신치로서, D1 버스311를 통해 레지스터 파일115에 재기록 된다. 모듈로ㆍ어드레싱이 디스에이블 상태의 경우에는 선택신호1010은 반드시0이 되어 셀렉터1060로서는 항상 ALU153의 출력이 선택된다.
일례로서 다음에 서큘라 버퍼 영역을 액세스 하는 로드/스토어 명령의 실행 시에서의 어드레스의 갱신에 관해서 설명한다. MD 비트44는 1로 한다.
실시의 형태 5의 데이터처리장치는 반드시 1워드 액세스로 서큘라 버퍼를 액세스 한다. 도 40은 서큘라 버퍼가 예를 나타내는 설명도면이다. 실시의 형태 5의 데이터 처리장치에서는, 서큘라 버퍼 영역은 워드 정열되어 있으면 좋고 2워드 정열 조건과는 관계없이 같은 동작을 한다. h'는 16진 표기인 것을 나타낸다. h'1000번지에서 h'11ff 번지의 256 워드(512바이트)가 서큘라 버퍼의 영역으로 되어 있고 MOD_L1051에는 버퍼 영역의 하한의 1워드 어드레스인 h'1000을 MOD_U1050에는 상한의1리이드 어드레스인 h'11fe를 세트한다.
포스트 인크리먼트 처리를 하는 경우 제 1디코더 1017로부터 출력되는 포스트 인크리먼트 신호1013은 1이 되기 때문에 셀렉터1052는 MOD_U1050의 값을 선택하여 비교기1054에 출력하고 셀렉터1053은 MOD_L1051의 값을 선택하여 래치1055에 출력한다.
1워드 액세스의 포스트 인크리먼트 처리를 하는 경우 제 1디코더1017로부터 출력되는 포스트 인크리먼트 신호1013은 1, 포스트 갱신신호1007은 1이 된다.
이 상태로, 베이스 어드레스 레지스터의 값이 h'11fe의 경우, 일치 신호1011이 1이 되기 때문에, 선택신호1010이 1이 된다. 그 결과, 셀렉터1060은 래치1055의 값(MOD_L1051의 값)을 선택하여 베이스 어드레스 레지스터에 h'1000을 재기록 한다. 그 이외의 경우에는 일치 신호1011이 0이로 되기 때문에, 셀렉터1060은 ALU153의 출력, 즉 베이스 어드레스 레지스터의 초기치에 2가 가산된 값을 베이스 어드레스 레지스터로 재기록 된다. 예를 들면, 베이스 어드레스 레지스터의 값이 h'11fc의 경우 베이스 어드레스 레지스터에는 h'11fe가 재기록 된다.
포스트 인크리먼트 처리를 하는 경우 제 1디코더1017로부터 출력되는 포스트 인크리먼트 신호1013은 0이 되기 때문에, 셀렉터1052는 MOD_L1051의 값을 선택하여 비교기1054로 출력하고 셀렉터1053은 MOD_U1050의 값을 선택하여 래치1055로 출력한다.
포스트 디크리먼트1워드 액세스를 행하는 경우, 제 1디코더1017로부터 출력되는 포스트 인크리먼트 신호1013은 0, 포스트 갱신신호1007은 1이 된다.
이 상태로, 베이스 어드레스 레지스터의 값이 h'1000의 경우 일치 신호1011이 1되기 때문에, 선택신호1010이 1이 된다. 그 결과, 셀렉터1060은 래치1055의 값(MOD_U1050의 값)을 선택하여 베이스 어드레스 레지스터에 h'11fe를 재기록 한다. 그 이외의 경우에는 일치 신호1011이 0이 되기 때문에 셀렉터1060은 ALU153의 출력 즉, 베이스 어드레스 레지스터의 초기치에 2가 감산된 값을 베이스 어드레스 레지스터에 재기록 된다. 예를 들면 베이스 어드레스 레지스터의 값이 h'1002의 경우 베이스 어드레스 레지스터에는 h'1000이 재기록 된다.
이와 같이 같은 MOD_U1050 및 MOD_L1051의 설정으로 실시의 형태 5의 데이터 처리장치는 포스트 인크리먼트 1워드 액세스 하는 경우에도 포스트 디크리먼트 1워드액세스하는 경우에도 정확하게 동작한다.
이와 같이, 실시의 형태 5의 데이터 처리장치는 포스트 인크리먼트 처리와 완전히 같은 값을 MOD_U650 및 MOD_L651에 설정해도 포스트 디크리먼트 처리를 정확하게 실행할 수 있다.
상술한바와 같이 1워드밖에는 모듈로 기구가 기능 하지 않는다는 제한은 더 하지만 실시의 형태 5의 데이터 처리장치는 실시의 형태 4와 마찬가지로 효율이 좋은 서큘라 버퍼의 액세스가 가능해져, 프로그램의 코드 사이즈의 삭감, 처리 사이클수의 감소에 기여한다.
포스트 인크리먼트/포스트 디크리먼트를 의식하지 않고서 서큘라 버퍼의 상한 어드레스와 하한 어드레스를 1워드 어드레스로 설정하면 되기 때문에, 설정이 통일되어 있으며 알기 쉽다.
또, 실시의 형태 5의 데이터 처리장치는 포스트 인크리먼트 처리 및 포스트 디크리먼트 처리 시에서 어드레스의 계산과 병렬로 베이스 어드레스의 초기치에 근거한 판정 처리 가능해지기 때문에 동작 주파수의 향상으로 고속화가 용이하다.
실시의 형태 1과 마찬가지로, 상술한 실시의 형태 5로 설명한 여러 가지 경우에도 본 발명은 적용할 수 있다.
상술한 실시의 형태 5에서는 어드레스의 비트 길이가 16비트의 예를 나타내 였지만, 24비트와 32비트 등 임의의 비트 길이만으로도 된다. 또, 데이터의 기본 데이터 길이를 16비트로 하고 있지만 24비트로 하거나 32비트로 해도 된다. 또, 바이트 어드레스를 관리하고 있지만 16비트와 24비트, 32비트를 1워드로서 워드 어드레스를 관리해도 좋다.
상술한 실시의 형태 5에서는 1워드 액세스만을 모듈로 어드레싱의 처리 대상으로 하고 있지만 2워드 액세스 만 또는 4워드 액세스 만 등을 다른 액세스 사이즈를 처리대상으로 해도 된다. 예를 들면 2워드 액세스 만의 경우 MOD_U1050, MOD_L1051에 2워드 어드레스를 설정하여 관리하도록 해도 된다.
상술한 실시의 형태 5에서는 어드레스의 16비트 전부에 비교 판정을 하는 예를 표시하였지만, 상위15비트만으로 판정을 하도록 해도 된다.
상술한 실시의 형태 5에서는 MOD_U1050, MOD-L1051은 물리적으로 16비트 가지고 있지만 상위 15비트만을 유지하도록 하여 15 비트의 비교를 하도록 해도 된다. 홀수 어드레스시의 동작을 보증하지 않은 경우, 어떻게 동작해도 괜찮다.
상술한 실시의 형태 5에서는 MOD_U1050, MOD_L1051에는 어드레스의 최상위 비트(MSB)까지의 모든 어드레스치를 유지하도록 되어 있지만 어드레스의 상위수비트는 유지하지 않도록하여 하위비트 만으로 판정을 하도록하면, 복수개 영역에 형성된 복수의 서큘라 버퍼에 대하여 같은 설정으로 동시에 모듈로 기구가 동작 하도록 할수있다. 단지, 비교하지않은 상위비트에 관해서는 갱신전의 값을 그대로 내는 등의 처리가 필요하게 된다.
상술한 실시의 형태 5에서는 일반적인 프로세서의 구성을 나타내고 있지만, DSP와 같이 어드레스 레지스터와 데이터 레지스터(어큐뮬레이터 등)를 나누는 구성으로 해도 좋다. 또, DSP와 같이 복수의 메모리를 독립적으로 액세스 할수있는 구성으로 해도, 본 기술은 유효하다.
상술한 실시의 형태 5에서는 규정된 경우 이외의 동작은 보증 않고 있지만 상기 규정된 경우 이외 시에 예외를 검출하는 등의 처리를 해도 된다. 예를 들면, 홀수 어드레스의 경우에는 어드레스 예외를 일으키는 등의 처리를 해도 된다.
본 발명에서의 청구항1기재의 데이터 처리장치의 액세스 어드레스 결정수단은 제 1의 메모리 액세스 명령의 처리할 때에는 종료 어드레스 정보가 지시하는 어드레스와 액세스 어드레스와의 사이에서 n 비트 데이터를 특정하는 어드레스 부분이 등가이라고 말하는 제 1의 조건이 성립한다고 판정하면 개시 어드레스 정보의 지시하는 어드레스에 관련하고 또 서큘라 버퍼 영역상의 n 비트 데이터를 특정가능한 n 비트 액세스어드레스를 차기 액세스 어드레스로 하여 제 1의 조건이 불성립이라고 판정하면 연산 어드레스를 차기 액세스 어드레스로 하고 제 2의 메모리 액세스 명령의 처리 시에는 종료 어드레스 정보가 지시하는 어드레스와 액세스 어드레스와의 사이에서 2n 비트 데이터를 특정하는 어드레스부분이 등가이라고 하는 제 2의 조건이 성립한다고 판정하면 개시 어드레스 정보의 지시하는 어드레스에 관련하고 또 서큘라 버퍼 영역상의 2n 비트 데이터를 특정 가능한 2n 비트 액세스 어드레스를 차기 액세스 어드레스로 하여 제 2의 조건이 불성립이라고 판정하면 연산 어드레스를 차기 액세스 어드레스로 하고 있다.
따라서, n비트 데이터 단위로 액세스 하는 제 1의 메모리 액세스 명령과 2n 비트 데이터 단위로 액세스 하는 제 2의 메모리 액세스 명령으로 공통의 개시 어드레스 정보 및 종료 어드레스 정보를 제공할 뿐으로 청구항1기재의 데이터 처리장치는 제 1 및 제 2의 메모리 액세스 명령을 혼재하여 실행해도, 서큘라 버퍼 영역상을 효율적으로 모듈로 어드레싱(순회 어드레싱)할 수 있다.
청구항2기재의 데이터 처리장치에서, 제 1 및 제 2의 메모리 액세스 명령은 각각 어드레스 갱신을 어드레스를 증가시켜서 행하는 제 1 및 제 2의 인크리먼트 처리를 포함하고, 어드레스 갱신 방향은 어드레스가 증가하는 방향으로 규정된다.
따라서, 개시 어드레스 정보가 지시하는 어드레스를 서큘라 버퍼 영역의 하한 어드레스로 하며, 종료 어드레스 정보가 지시하는 어드레스를 서큘라 버퍼 영역의 상한 어드레스로서 설정함으로, 청구항2기재의 데이터 처리장치는 서큘라 버퍼 영역상의 하한 어드레스로부터 상한 어드레스에 걸쳐서 효율적으로 모듈로 어드레싱 할 수 있다.
청구항3 기재의 데이터 처리장치에서, 제 1 및 제 2의 액세스 명령은 각각 어드레스를 감소시켜 어드레스 갱신을 하는 제 1 및 제 2의 디크리먼트 처리를 포함하고, 어드레스 갱신 방향은 어드레스가 감소하는 방향으로 규정된다.
따라서, 개시 어드레스 정보가 지시하는 어드레스를 서큘라 버퍼 영역의 상한 어드레스로 하고, 종료 어드레스 정보가 지시하는 어드레스를 서큘라 버퍼 영역의 하한 어드레스로서 설정함으로, 청구항3기재의 데이터 처리장치는 서큘라 버퍼 영역상의 상한 어드레스로부터 하한 어드레스에 걸쳐서 효율적으로 모듈로 어드레싱 할 수 있다.
청구항4 기재의 데이터 처리장치에서 개시 어드레스 정보 부여 수단은 실행 명령정보가 제 1 또는 제 2의 인크리먼트 처리를 지시할 때, 하한 어드레스를 지시하는 개시 어드레스 정보를 부여하며, 실행 명령 정보가 제 1 또는 제 2의 디크리먼트 처리를 지시할 때 상한 어드레스를 지시하는 개시 어드레스 정보를 부여하는 제 1의 선택 수단을 포함하며, 종료 어드레스 정보 부여 수단은 실행 명령 정보가 제 1 또는 제 2의 인크리먼트 처리를 지시할 때 상한 어드레스를 지시하는 종료 어드레스 정보를 부여하며 실행 명령 정보가 제 1 또는 제 2의 디크리먼트 처리를 지시할 때, 하한 어드레스를 지시하는 종료 어드레스 정보를 부여하는 제 2의 선택수단을 포함하고 있다.
따라서, 서큘라 버퍼 영역상의 하한 어드레스 및 상한 어드레스를 각각 하한 어드레스 유지 수단 및 상한 어드레스 유지 수단으로 유지시킬 뿐으로, 제 1 및 제 2의 메모리 액세스 명령이 제 1 및 제 2의 인크리먼트 처리를 실행하는 명령이 있어도 제 1 및 제 2의 디크리먼트 처리를 실행하는 명령이 있어도, 제 1 및 제 2의 선택 수단에 의해 자동적으로 개시 어드레스 정보 및 종료 어드레스정보를 정확히 부여할 수가 있다.
그 결과, 제 1 및 제 2의 메모리 액세스명령이 (제 1 및 제 2의)인크리먼트 처리를 실행하는 경우와 (제 1 및 제 2의) 디크리먼트 처리를 실행하는 경우로서, 하한 어드레스 유지 수단 및 상한 어드레스 유지 수단에 유지시키는 어드레스를 변경할 필요가 없어지기 때문에 그 만큼 프로그램의 코드 사이즈의 삭감, 처리 사이클수의 저감이 가능하게 되며, 고속 동작이 가능한 데이터 처리장치를 얻을 수 있다.
또, 청구항5기재의 데이터 처리장치에서, 제 1 및 제 2의 메모리 액세스 명령은 메모리로부터 데이터를 입력하는 로드 명령을 포함하기 때문에, n비트 데이터 단위로 액세스 하는 로드 명령과 2n비트 단위로 액세스하는 로드 명령을 혼재하여 실행 해도, 서큘라버퍼영역상을 효율적으로 모듈로 어드레싱 할 수 있다.
또, 청구항6기재의 데이터 처리장치에 있어서, 제 1 및 제 2의 메모리 액세스 명령은 메모리에 데이터를 받아들이는 로드명령을 포함하기 때문에 n비트 데이터 단위로 액세스 하는 스토어 명령과 2n비트 단위로 액세스 하는 스토어 명령을 혼재하여 실행해도, 서큘라 버퍼 영역상을 효율적으로 모듈로 어드레싱 할 수 있다.
본 발명에서의 청구항7기재의 데이터 처리장치는 실행 명령정보가 인크리먼트 처리를 지시할 때, 하한 어드레스를 지시하는 개시어드레스 정보를 부여하여 실행 명령정보가 디크리먼트 처리를 지시할 때, 상한 어드레스를 지시하는 개시 어드레스 정보를 부여하는 제 1의 선택수단과 실행 명령 정보가 인크리먼트 처리를 지시할 때, 상한 어드레스를 지시하는 종료 어드레스 정보를 부여하며, 실행 명령 정보가 디크리먼트 처리를 지시할 때, 하한 어드레스를 지시하는 종료 어드레스 정보를 부여하는 제 2의 선택수단을 구비하고 있다.
따라서, 서큘라 버퍼 영역상의 하한 어드레스 및 상한 어드레스를 각각 하한 어드레스유지수단 및 상한 어드레스 유지수단에 유지시킬 뿐으로, 메모리 액세스 명령이 인크리먼트 처리를 실행하는 명령이 있어도, 디크리먼트 처리를 실행하는 명령이 있어도, 제 1 및 제 2의 선택 수단에 의해서 자동적으로 개시 어드레스 정보 및 종료 어드레스 정보를 정확히 부여할 수 있다.
그 결과, 메모리 액세스 명령이 인크리먼트 처리를 실행하는 경우와 디크리먼트 처리를 실행하는 경우로, 하한 어드레스 유지 수단 및 상한 어드레스 유지 수단에 유지시키는 어드레스를 변경할 필요가 없어지기 때문에, 그 만큼 프로그램의 코드사이즈의 삭감, 처리 사이클 수의 감소가 가능하며, 서큘라 버퍼 영역상을 효율적으로 모듈로 어드레싱 할 수 있다.

Claims (7)

  1. n 비트 및 2n 비트 데이터 단위로 액세스 가능한 서큘라 버퍼 영역이 확보된 메모리를 가지며, n 비트 데이터 단위로 상기 메모리에 액세스 하여 다음에 액세스할 n 비트 데이터를 특정하는 어드레스 갱신을 행하는 것을 규정한 제 1의 메모리 액세스 명령과, 2n비트 데이터 단위로 상기 메모리에 액세스 하여 다음에 액세스할 2n 비트 데이터를 특정하는 상기 어드레스갱신 하는 것을 규정한 제 2의 메모리액세스명령이 적어도 실행 가능한 데이터 처리장치에 있어서,
    상기 서큘라 버퍼 영역의 개시 어드레스정보를 부여하는 개시 어드레스 정보 부여 수단과,
    상기 서큘라 버퍼의 영역의 종료 어드레스 정보를 부여하는 종료 어드레스 정보 부여수단을 구비하고, 상기 개시 어드레스정보는 적어도 상기 서큘라 버퍼 영역상의 2n비트 데이터를 특정 가능한 어드레스를 지시하며 상기 종료어드레스 정보는 적어도 상기 서큘라 버퍼영역상의 2n 비트 데이터를 특정 가능한 어드레스를 지시하며,상기 개시어드레스 정보가 지시하는 어드레스로부터 상기 종료 어드레스 정보가 지시하는 어드레스에의 방향이 어드레스 갱신 방향으로서 규정되고.
    상기 서큘라 버퍼의 영역상의 액세스 대상의 어드레스를 규정한 액세스 어드레스와 상기 종료 어드레스 정보의 지시하는 어드레스를 비교하여 비교 결과 정보를 출력하는 비교수단과,
    상기 제 1및 제 2의 메모리 액세스 명령 처리 시에, 상기 어드레스 갱신 방향에서 상기 액세스 어드레스의 다음에 배치되는 어드레스를 연산하여 연산어드레스를 출력하는 어드레스 연산 수단을 더 구비하고, 상기 어드레스 연산 수단은 상기 제 1의 메모리 액세스 명령 처리 시에 상기 액세스 어드레스의 다음에 배치되는 n 비트 데이터를 특정하는 어드레스를 상기 연산 어드레스로 하고, 상기 제 2의 메모리 액세스 명령 처리시에 상기 액세스 어드레스의 다음에 배치되는 2n 비트 데이터를 특정하는 어드레스를 상기 연산 어드레스로 하며,
    상기 비교 결과 정보에 근거하여, 상기 개시 어드레스 정보의 지시하는 어드레스에 근거한 값 또는 상기 연산 어드레스를 선택하여 다음 액세스 대상이 되는 어드레스를 규정한 차기 액세스 어드레스를 결정하는 액세스 어드레스 결정수단을 더 구비하며,
    상기 액세스 어드레스 결정 수단은 상기 제 1의 메모리 액세스 명령의 처리 시에는 상기 종료 어드레스 정보가 지시하는 어드레스와 상기 액세스어드레스와의 사이에서, n 비트 데이터를 특정하는 어드레스 부분이 등가이라고하는 제 1의 조건이 성립한다고 판정하면, 상기 개시 어드레스 정보의 지시하는 어드레스에 관련하고, 또 상기 서큘라 버퍼 영역상의 n 비트 데이터를 특정가능한 n 비트 액세스 어드레스를 상기 차기 액세스 어드레스로 하며, 상기 제 1의 조건이 불성립이라고 판정하면 상기 연산 어드레스를 상기 차기 액세스 어드레스로 하여,
    상기 제 2의 메모리 액세스 명령의 처리시에는 상기 종료 어드레스 정보가 지시하는 어드레스와 상기 액세스 어드레스와의 사이에서 2n비트 데이터를 특정하는 어드레스 부분이 등가이라고 하는 제 2의 조건이 성립한다고 판정하면, 상기 개시 어드레스 정보를 지시하는 어드레스에 관련하고, 또 상기 서큘라 버퍼 영역상의 2n비트 데이터를 특정가능한 2n 비트 액세스 어드레스를 상기 차기 액세스 어드레스로 하며 상기 제 2의 조건이 불성립이라고 판정하면, 상기 연산 어드레스를 상기 차기 액세스 어드레스로 하는것을 특징으로 하는 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 제 1 및 제 2의 메모리 액세스 명령은 각각 상기 어드레스 갱신을 어드레스를 증가시켜서 행하는 제 1 및 제 2의 인크리먼트 처리를 포함하고, 상기 어드레스 갱신 방향은 어드레스가 증가하는 방향으로 규정되어,
    상기 개시 어드레스 정보 부여 수단은 상기 개시 어드레스 정보를 유지하는 개시 어드레스 정보 유지 수단을 포함하고,
    상기 종료 어드레스 정보 부여 수단은 상기 종료 어드레스 정보를 유지하는 종료 어드레스 정보유지 수단을 포함하는 것을 특징으로 하는 데이터처리장치.
  3. 제 1 항에 있어서,
    상기 제 1 및 제 2의 액세스 명령은 각각 어드레스를 감소시켜 상기 어드레스 갱신을 하는 제 1 및 제 2의 디크리먼트 처리를 포함하고, 상기 어드레스 갱신 방향은 어드레스가 감소하는 방향으로 규정되어,
    상기 개시 어드레스 정보 부여수단은 상기 개시 어드레스 정보를 유지하는 개시 어드레스 정보 유지 수단을 포함하며,
    상기 종료 어드레스 정보 부여수단은 상기 종료 어드레스 정보를 유지하는 종료 어드레스 정보 유지수단을 포함하는 것을 특징으로 하는 데이터 처리장치.
  4. 제 1 항에 있어서,
    상기 서큘라 버퍼 영역상의 하한 어드레스를 유지하는 하한 어드레스 유지수단과,
    상기 서큘라 버퍼 영역상의 상한 어드레스를 유지하는 상한 어드레스 유지수단을 더 구비하며,
    상기 제 1 및 제 2의 메모리 액세스 명령은 각각 어드레스를 증가시켜 상기 어드레스 갱신을 하는 제 1 및 제 2의 인크리먼트 처리를 포함하고, 상기 제 1 및 제 2의 메모리 액세스명령이 상기 제 1 및 제 2의 인크리먼트 처리를 하는 명령의 경우, 상기 어드레스 갱신 방향은 어드레스가 증가하는 방향으로 규정되며,
    상기 제 1 및 제 2의 액세스 명령은 각각 어드레스를 감소 시켜 상기 어드레스 갱신을 행하는 제 1 및 제 2의 디크리먼트 처리를 더 포함하고 상기 제 1 및 제 2의 메모리 액세스 명령이 상기 제 1 및 제 2의 디크리먼트처리를 행하는 명령의 경우, 상기 어드레스 갱신 방향은 어드레스가 감소하는 방향으로 규정되고,
    상기 개시 어드레스 정보 부여 수단은 실행 대상의 상기 제 1 및 제 2의 메모리 액세스 명령의 내용을 지시하는 실행 명령정보, 상기 하한 어드레스 및 상기 상한 어드레스를 받아, 상기 실행 명령 정보가 상기 제 1또는 제 2의 인크리먼트 처리를 지시할 때, 상기 하한 어드레스를 지시하는 상기 개시 어드레스 정보를 부여하고, 상기 실행 명령 정보가 상기 제 1 또는 제 2의 디크리먼트 처리를 지시할 때, 상기 상한 어드레스를 지시하는 상기 개시 어드레스 정보를 부여하는 제 1의 선택수단을 포함하며,
    상기 종료 어드레스 정보 부여수단은 상기 실행 명령 정보, 상기 하한 어드레스 및 상기 상한 어드레스를 받아, 상기 실행 명령 정보가 상기 제 1 또는 제 2의 인크리먼트 처리를 지시할 때, 상기 상한 어드레스를 지시하는 상기 종료어드레스 정보를 부여하여 상기 실행 명령 정보가 상기 제 1 또는 제 2의 디크리먼트 처리를 지시할 때 상기 하한 어드레스를 지시하는 상기 종료어드레스 정보를 부여하는 제 2의 선택 수단을 포함하는 것을 특징으로하는 데이터처리장치.
  5. 제 1 항에 있어서,
    상기 제 1 및 제 2의 메모리액세스 명령은 상기 메모리로부터 데이터를 받아들이는 로드 명령을 포함하는 것을 특징으로 하는 데이터 처리장치.
  6. 제 1 항에 있어서,
    상기 제 1 및 제 2의 메모리 액세스 명령은 상기 메모리에 데이터를 수납하는 스토어명령을 포함하는 것을 특징으로 하는 데이터 처리장치.
  7. n 비트 데이터 단위로 액세스 가능한 서큘라 버퍼 영역이 확보된 메모리를 가지며, n 비트 데이터 단위에 상기 메모리에 액세스하고 다음에 액세스 하여야 할 n 비트 데이터를 특정하는 어드레스 갱신을 하는 것을 규정한 메모리 액세스 명령이 적어도 실행 가능한 데이터 처리장치에 있어서,
    상기 메모리 액세스명령은 어드레스를 증가시켜 상기 어드레스 갱신을 행하는 인크리먼트처리, 또는 어드레스를 감소 시켜 상기 어드레스 갱신을 하는 디크리먼트 처리를 포함하고, 상기 메모리 액세스 명령이 상기 인크리먼트 처리을 하는 경우, 어드레스 갱신 방향은 어드레스가 증가하는 방향으로 규정되며, 상기 메모리 액세스 명령이 상기 디크리먼트 처리를 하는 경우, 상기 어드레스 갱신 방향은 어드레스가 감소하는 방향으로 규정되며,
    상기 서큘라 버퍼 영역상의 하한 어드레스를 유지하는 하한 어드레스 유지 수단과, 상기 서큘라 버퍼 영역상의 상한 어드레스를 유지하는 상한어드레스 유지 수단을 구비하며, 상기 하한 어드레스 및 상기 상한 어드레스는 상기서큘라 버퍼 영역상의 n 비트 데이터를 특정 가능한 어드레스를 포함하고,
    실행 대상의 상기 메모리 액세스 명령의 내용을 지시하는 실행 명령 정보, 상기 하한 어드레스 및 상기 상한 어드레스를 받아, 상기 실행 명령 정보가 상기 인크리먼트 처리를 지시할 때, 상기 하한 어드레스를 지시하는 개시 어드레스 정보를 부여하고, 상기 실행 명령 정보가 상기 디크리먼트 처리를 지시할 때, 상기 상한 어드레스를 지시하는 상기 개시 어드레스 정보를 부여하는 제 1의 선택수단과,
    상기 실행 명령정보, 상기 하한 어드레스 및 상기 상한 어드레스를 받아, 상기 실행 명령 정보가 상기 인크리먼트 처리를 지시할 때 상기 상한 어드레스를 지시하는 종료 어드레스 정보를 부여하여, 상기 실행 명령 정보가 상기 디크리먼트 처리를 지시할 때, 상기 하한 어드레스를 지시하는 상기 종료 어드레스 정보를 부여하는 제 2의 선택수단을 더 구비하며, 상기 개시 어드레스 정보가 지시하는 어드레스로부터 상기 종료 어드레스 정보가 지시하는 어드레스에의 방향이 상기 어드레스 갱신 방향으로해서 규정되고,
    상기 서큘라버퍼의 영역상의 액세스 대상의 어드레스를 규정한 액세스 어드레스와 상기 종료 어드레스 정보의 지시하는 어드레스와 비교하여 비교 결과 정보를 출력하는 비교 수단과,
    상기 메모리 액세스 명령 처리 시에 상기 어드레스 갱신 방향에서 상기 액세스 어드레스의 다음에 배치되는 어드레스를 연산하여 상기 액세스 어드레스의 다음에 배치되는 n 비트 데이터를 특정하는 어드레스인 연산 어드레스를 출력하는 어드레스연산수단과 상기 비교 결과 정보에 근거하여 상기 개시 어드레스 정보의 지시하는 어드레스 또는 상기 연산 어드레스를 선택하여 다음에 액세스 대상이 되는 어드레스를 규정한 차기 액세스 어드레스를 결정하는 액세스 어드레스 결정 수단을 더 구비하고, 액세스 어드레스 결정수단은 상기 비교 결과 정보에 근거하여 상기 종료 어드레스 정보가 지시하는 어드레스와 상기 액세스 어드레스와의 사이에서 n 비트 데이터를 특정하는 어드레스 부분이 일치한다고 하는 조건이 성립한다고 판정하면, 상기 개시 어드레스 정보의 지시하는 어드레스를 차기 액세스 어드레스로 하여 상기 제 1의 조건이 불성립이라고 판정하면 상기 연산 어드레스를 상기 차기 액세스 어드레스로서 결정하는 것을 특징으로 하는 데이터 처리장치.
KR1019970033526A 1997-02-19 1997-07-18 데이터 처리장치 KR100249631B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP03496097A JP3789583B2 (ja) 1997-02-19 1997-02-19 データ処理装置
JP34960 1997-02-19

Publications (2)

Publication Number Publication Date
KR19980069845A true KR19980069845A (ko) 1998-10-26
KR100249631B1 KR100249631B1 (ko) 2000-03-15

Family

ID=12428726

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970033526A KR100249631B1 (ko) 1997-02-19 1997-07-18 데이터 처리장치

Country Status (4)

Country Link
US (1) US5924114A (ko)
JP (1) JP3789583B2 (ko)
KR (1) KR100249631B1 (ko)
DE (1) DE19738542A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7032100B1 (en) * 1999-12-17 2006-04-18 Koninklijke Philips Electronics N.V. Simple algorithmic cryptography engine
GB2363869B (en) * 2000-06-20 2004-06-23 Element 14 Inc Register addressing
US6647484B1 (en) * 2000-09-19 2003-11-11 3 Dsp Corporation Transpose address mode in general purpose DSP processor
GB2371641B (en) * 2001-01-27 2004-10-06 Mitel Semiconductor Ltd Direct memory access controller for circular buffers
JP3856737B2 (ja) * 2002-07-19 2006-12-13 株式会社ルネサステクノロジ データ処理装置
US20070094663A1 (en) * 2005-10-25 2007-04-26 Anbarani Hossein A Flexible ordered execution mechanism for multi-threaded processors
JP4973154B2 (ja) * 2006-11-29 2012-07-11 ヤマハ株式会社 演算処理装置、メモリアクセス方法、及びプログラム
US9325625B2 (en) 2010-01-08 2016-04-26 Citrix Systems, Inc. Mobile broadband packet switched traffic optimization
US8560552B2 (en) * 2010-01-08 2013-10-15 Sycamore Networks, Inc. Method for lossless data reduction of redundant patterns
US8514697B2 (en) * 2010-01-08 2013-08-20 Sycamore Networks, Inc. Mobile broadband packet switched traffic optimization
US20120185741A1 (en) * 2011-01-14 2012-07-19 Sergey Sergeevich Grekhov Apparatus and method for detecting a memory access error
US8502710B2 (en) * 2011-09-13 2013-08-06 BlueStripe Software, Inc. Methods and computer program products for providing a compressed circular buffer for efficient storage of network performance data
US9348558B2 (en) 2013-08-23 2016-05-24 Texas Instruments Deutschland Gmbh Processor with efficient arithmetic units
US9478312B1 (en) 2014-12-23 2016-10-25 Amazon Technologies, Inc. Address circuit
US10180829B2 (en) * 2015-12-15 2019-01-15 Nxp Usa, Inc. System and method for modulo addressing vectorization with invariant code motion

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4908748A (en) * 1987-07-28 1990-03-13 Texas Instruments Incorporated Data processing device with parallel circular addressing hardware
US5623621A (en) * 1990-11-02 1997-04-22 Analog Devices, Inc. Apparatus for generating target addresses within a circular buffer including a register for storing position and size of the circular buffer
US5463749A (en) * 1993-01-13 1995-10-31 Dsp Semiconductors Ltd Simplified cyclical buffer

Also Published As

Publication number Publication date
DE19738542A1 (de) 1998-08-27
JP3789583B2 (ja) 2006-06-28
US5924114A (en) 1999-07-13
JPH10232821A (ja) 1998-09-02
KR100249631B1 (ko) 2000-03-15

Similar Documents

Publication Publication Date Title
JP3658072B2 (ja) データ処理装置およびデータ処理方法
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
JP3856737B2 (ja) データ処理装置
US20050283589A1 (en) Data processor
EP0427245B1 (en) Data processor capable of simultaneously executing two instructions
US20070174596A1 (en) Data processor
JP3670668B2 (ja) データ処理装置
JP3543181B2 (ja) データ処理装置
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
KR100249631B1 (ko) 데이터 처리장치
JPH0766324B2 (ja) データ処理装置
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
GB2317467A (en) Input operand control in data processing systems
JP4502532B2 (ja) データ処理装置
JP2002229779A (ja) 情報処理装置
JP3504355B2 (ja) プロセッサ
JP2006302324A (ja) データ処理装置
JPH0769801B2 (ja) データ処理装置
US20050188183A1 (en) Digital signal processor having data address generator with speculative register file
JPH0573294A (ja) マイクロプロセツサ
JPH0769805B2 (ja) データ処理装置
JPH0254335A (ja) データ処理装置
JPH0769802B2 (ja) データ処理装置
JPH081600B2 (ja) データ処理装置
JP2004094973A (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: 20111202

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20121130

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee