KR20040097212A - 연산 처리 장치, 그 구축 방법, 연산 처리 시스템 및 연산처리 방법 - Google Patents

연산 처리 장치, 그 구축 방법, 연산 처리 시스템 및 연산처리 방법 Download PDF

Info

Publication number
KR20040097212A
KR20040097212A KR10-2004-7015082A KR20047015082A KR20040097212A KR 20040097212 A KR20040097212 A KR 20040097212A KR 20047015082 A KR20047015082 A KR 20047015082A KR 20040097212 A KR20040097212 A KR 20040097212A
Authority
KR
South Korea
Prior art keywords
register
instruction
program
registers
arithmetic
Prior art date
Application number
KR10-2004-7015082A
Other languages
English (en)
Inventor
도모히사 시가
Original Assignee
소니 가부시끼 가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP2002088916A external-priority patent/JP2003288204A/ja
Priority claimed from JP2002195123A external-priority patent/JP3698125B2/ja
Application filed by 소니 가부시끼 가이샤 filed Critical 소니 가부시끼 가이샤
Publication of KR20040097212A publication Critical patent/KR20040097212A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/35Indirect addressing

Landscapes

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

Abstract

본 발명의 연산 처리 장치는 도 1에 도시하는 바와 같이, 기입 어드레스(Aw) 및 기입 제어 신호(Sw)에 기초하여 임의의 값을 보유하고, 및 판독 어드레스(Ar)에 기초하여 당해 값을 출력하는 레지스터를 복수개 갖는 레지스터 어레이(11)와, 이 값을 연산하는 ALU(12)와, 이 ALU(12)를 동작시키기 위한 연산 프로그램(AP)으로부터 연산 명령을 해독하는 디코더(13)와, 이 연산 명령을 실행하기 위하여 레지스터 어레이(11) 및 ALU(12)를 제어하는 명령 실행 제어부(50)를 구비하고, 이 명령 실행 제어부(50)는 연산 명령에 기초하여 하나의 레지스터를 선택하고, 이 레지스터가 보유하는 값에 의하여 다른 레지스터를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행하는 것이다.

Description

연산 처리 장치, 그 구축 방법, 연산 처리 시스템 및 연산 처리 방법{OPERATION PROCESSOR, BUILDING METHOD, OPERATION PROCESSING SYSTEM, AND OPERATION PROCESSING METHOD}
최근, 휴대 단말 장치나, 전자 카드, 정보 처리 장치 등의 각종 전자 기기에 CPU(중앙 연산 처리 장치)를 포함하는 마이크로프로세서가 사용되는 경우가 많아지고 있다. 이러한 종류의 프로세서에서 기억 장치에 액세스하고자 한 경우, 액세스 대상이 레지스트인 경우와 외부 메모리인 경우에서 별개의 액세스 방법이 채택된다. 액세스 대상이 레지스트인 경우, 예를 들면 ALU(Arithmetic Logic Unit: 산술 논리 연산 유닛)의 주변에는 카피 레지스터나 임시 레지스터 등이 배치되고, 연산 처리를 행하는 경우, 카피 레지스터에 데이터를 복사하거나, 연산 처리후의 데이터를 임시 레지스터에 일시 기억하게 된다. ALU가 레지스터 대 레지스터의 연산 처리에 적합하기 때문이다. 액세스 대상이 외부 메모리인 경우, 예를 들면 당해 레지스터 번호가 나타내는 외부 메모리의 번지에 정보를 기입하는 경우, CPU가 당해 외부 메모리에 대하여, 그 저장 번지를 지정하는 기입 어드레스, 및 기입 신호를 출력한다. 당해 레지스터 번호가 나타내는 외부 메모리의 번지로부터 정보를 판독하는 경우에는, CPU가 당해 외부 메모리에 대하여, 그 저장 번지를 지정하는 판독어드레스, 및 판독 신호를 출력하게 된다.
이와 같이, 당해 레지스터 번호가 나타내는 외부 메모리의 번지에 정보를 저장하거나, 당해 레지스터 번호가 나타내는 외부 메모리의 번지로부터 정보를 판독할 때, CPU가 당해 외부 메모리의 저장 번지(기입 어드레스 또는 판독 어드레스)를 지정한다. 이와 같은 처리는 레지스터 상대 메모리 어드레싱이라고 불리우는 경우가 많다. 이것은 통상 외부 메모리가 프로세서와 다른 디바이스에 실장되어 있기 때문이다.
또한, 이러한 종류의 프로세서에는 명령 실행 연산부 외에 명령 실행 프로그램을 저장하기 위한 판독 전용 메모리(이하, ROM이라 함)나, 명령 실행 연산 처리에 사용되는 다수의 레지스터 등이 실장되어 있다. 종래 방식의 마이크로프로세서에 따르면, 임의의 전자 기기에 당해 프로세서를 조립하여 사용할 경우, 어떤 동작을 행하는 명령은 그 동작과 그 동작을 행하기 위한 명령이 일대일로 대응하고 있었다. 즉, 사용 빈도가 높은 레지스터나 사용 빈도가 낮은 레지스터나 당해 레지스터를 지정하기 위한 명령 비트수를 동등하게 하여 일률적인 길이의 명령에 의해 작성된 프로그램이 사용되는 경우가 많다. 이에 따라, 고정 길이의 명령이 ROM에 저장되어 사용된다.
다른 한편, 반도체 집적 회로 기술이 발전함에 따라, 방대한 수의 레지스터를 프로세서(이하, 연산 처리 장치라고도 함)내에 실장하는 것이 가능해지고 있다. 이 경우, 레지스터를 특정하기 위한 명령 비트수도 점점 많이 필요하게 된다. 예를 들면, 1024개의 레지스터가 실장되는 경우, 1024개의 레지스터 중에서 1개를 특정하기 위해서는 명령 비트로서 10비트가 필요하게 된다. 그러나, 실제 프로그램에서는 모든 레지스터로의 액세스 빈도는 일정하지 않고, 액세스 빈도에 차이가 있다. 빈번하게 액세스되는 레지스터의 번호는 일반적으로 컴파일러에 의해 결정된다.
그런데, 종래 방식의 연산 처리 장치에 따르면, 이하의 이유에 의해 처리 속도의 저하를 초래하고 있다.
① 외부 메모리에 액세스하기 위한 액세스 시간이 걸리는 것이다. 이것은 일반적으로 기억 장치는 특정의 프로세서에 특화하여 만들어지는 것은 드물기 때문에, 프로세서측에서, 액세스를 하고자 하는 기억 장치에 맞는 인터페이스를 준비해야만 한다. 따라서, 기억 장치에 액세스할 때마다 이 인터페이스를 경유하기 때문에, 액세스 시간이 걸리고, 연산 처리 속도가 저하된다.
② 외부 메모리로부터 ALU로, 또한 ALU로부터 외부 메모리로 데이터를 전송할 때의 시간이 걸린다. 이것은 일반적으로 ALU가 레지스터 대 레지스터의 연산 처리에 대응해 있기 때문에, 외부 메모리상에 연산하고자 하는 데이터가 있는 경우, 일단 외부 메모리로부터 카피 레지스터로 데이터가 복사되고, 그 후 카피 레지스터로부터 ALU로 데이터가 전송되어 연산 처리를 행하게 된다(레지스터 상대 메모리 어드레싱). 따라서, 연산 처리 속도가 저하되는 원인이 된다.
③ CPU나, RAM, ROM 등의 기능을 1칩에 집합화하여 1칩 마이크로컴퓨터 등을 구성하고자 한 경우, 동일 반도체칩 상에 CPU를 배치하고, 그 주변부에 RAM이나 ROM 등을 배치하는 방법이 고려된다. 이 방법은 레지스터 상대 메모리 어드레싱처리에 의존하게 되어, 연산 처리 속도의 향상을 전망할 수 없다.
④ 또한, 종래 방식의 연산 처리 장치에 따르면, 명령 실행 프로그램을 저장하는 ROM을 실장함에 있어서 이하와 같은 문제가 있다.
이 명령 실행 프로그램의 코드 전체를 살펴보면, 레지스터를 지정하기 위한 예를 들면 10비트의 명령 비트내에서, 이 10비트 전체가 일정하게 사용되는 경우가 적다. 따라서, 명령 실행 프로그램을 저장하는 메모리 중(예를 들면 ROM이나 플래시 메모리)에 쓸모없는 비트가 많이 존재하게 된다. 이에 따라, 모든 레지스터를 단일의 명령 비트수로 표현하는 방법은 효율적으로 ROM을 사용하는 것에 관하여 방해가 된다.
⑤ 게다가, 메모리 셀이나 논리 연산 소자로 이루어지는 프로그래머블 로직 디바이스(Programmable Logic Device: PLD)에 의해 마이크로프로세서 등을 구축하고자 한 경우, 동일 반도체 칩상에 명령 실행 연산부를 배치하고, 그 주변부에 레지스터 어레이나 ROM 등을 배치하는 방법이 고려된다. 이 경우, 프로세서의 다기능화의 요구로 인해 명령 실행 프로그램이 많아지면, 이 프로그램을 저장하는 ROM의 메모리 용량이 많이 필요하게 된다. 따라서, 메모리 셀이 ROM 구축에 점유되게 되고, 다수의 메모리 셀을 레지스터에 할당하는 것이 곤란해진다.
본 발명은 시스템 프로그램에 기초하여 각종 데이터 처리를 행하는 중앙 연산 장치(CPU)나 마이크로프로세서 유닛(MPU) 등, 또한 프로그램 가능한 논리 연산 소자(PLD) 또는, 이들의 조립 전자 기기 등에 내장 가능하고 프로그램 가능한 1칩 마이크로컴퓨터 등에 적용하기에 바람직한 연산 처리 장치, 그 구축 방법, 연산 처리 시스템 및 연산 처리 방법에 관한 것이다.
상세하게는, 연산 명령을 실행하기 위한 레지스터 어레이 및 연산부를 제어하는 명령 실행 제어부를 구비하고, 연산 명령에 기초하여 하나의 레지스터를 선택함과 아울러, 이 레지스터가 보유하는 값에 따라 다른 레지스터를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행하여, 레지스터 어레이를 데이터의 수시 기입 및 판독 가능한 메모리와 같이 동작할 수 있도록 함과 아울러, CPU나 RAM, ROM 등을 개별적으로 기판에 배치하는 경우에 비하여 기판 점유 면적을 저감할 수 있도록 한 것이다.
본 발명에서는, 복수의 레지스터를 지정하여 임의의 연산을 실행하는 연산 처리 장치를 구비하고, 프로그램 작성계에서 작성된 압축 프로그램을 취득하여 레지스터 종류를 해독하고, 이 레지스터 종류에 기초하여 당해 레지스터를 지정하는 명령 비트수를 복원하고, 소정의 명령 길이의 명령 구조를 갖는 프로그램을 복원하도록 하여, 프로그램 데이터를 저장하는 ROM 등의 메모리 용량을 저감할 수 있도록 함과 아울러, 메모리 셀이나 논리 연산 소자로 이루어지는 PLD에 의해 프로세서를 구축하는 경우에, ROM으로서 기능시키는 메모리 셀의 점유율을 저감할 수 있도록 한 것이다.
도 1은 본 발명에 따른 제1 실시예로서의 연산 처리 장치(100)의 구성예를 도시한 블록도이다.
도 2는 레지스터 어레이(1)의 내부 구성예를 도시한 블록도이다.
도 3a∼도 3e는 연산 처리 장치(100)에서 취급하는 명령의 구조예를 도시한 포맷 등이다. 도 3a는 load, add 및 cmp 명령의 구조예, 도 3b는 jump 명령의 구조예, 도 3c는 명령의 구조예, 도 3d는 액세스 방법의 내용예, 도 3e는 플래그 상태의 내용예이다.
도 4는 ROM 셀(14)의 연산 프로그램에 의한 연산 명령의 예를 도시한 표이다.
도 5는 레지스터(r0∼r12 등)의 상태예를 도시한 도면이다.
도 6은 연산 처리 장치(100)의 동작예를 도시한 플로우차트이다.
도 7은 본 발명에 따른 제2 실시예로서의 연산 처리 장치(100)의 구축예를 도시한 반도체 칩의 평면도이다.
도 8은 연산 처리 장치(100)의 레이아웃 구축예를 도시한 평면도이다.
도 9는 연산 처리 장치(100)의 배선 구축예를 도시한 도면이다.
도 10은 플래시 메모리(70)에 저장되는 배선 정보예를 도시한 표이다.
도 11은 연산 처리 장치(100)에 있어서의 결선예를 도시한 도면이다.
도 12는 연산 처리 장치(100)의 회로 구축예를 도시한 회로 접속도이다.
도 13은 본 발명에 따른 제3 실시예로서의 연산 처리 시스템(10)의 구성예를 도시한 블록도이다.
도 14는 연산 처리 시스템(10)에 있어서의 처리예를 도시한 플로우차트이다.
도 15는 본 발명에 따른 제4 실시예로서의 마이크로프로세서(101)의 구성예를 도시한 블록도이다.
도 16은 레지스터 어레이(11')의 내부 구성예를 도시한 블록도이다.
도 17a∼도 17e는 마이크로프로세서(101)에서 취급하는 명령의 구조예를 도시한 포맷이다. 도 17a는 명령 형태 #F1에 따른 load, add, cmp 명령의 구조예, 도 17b는 명령 형태 #F2에 따른 load, add, cmp 명령의 구조예, 도 17c는 명령 형태 #F3에 따른 load, add, cmp 명령의 구조예, 도 17d는 명령 형태 #F4에 따른 load, add, cmp 명령의 구조예, 도 17e는 명령 형태 #F5에 따른 jump 명령의 구조예를 각각 도시하고 있다.
도 18a∼도 18d는 명령 구조에 있어서의 기술 내용예를 도시한 표이다. 도 18a는 명령의 구조예, 도 18b는 액세스 방법 #1, #2의 내용예, 도 18c는 레지스터 종류 1, 2의 내용예, 도 18d는 플래그 상태의 내용예를 각각 도시하고 있다.
도 19는 프로그램 작성계 Ⅰ에 있어서의 프로그램 작성예를 도시한 표이다.
도 20은 프로그램 작성 장치(200)에 있어서의 컴파일 예를 도시한 플로우차트(메인 루틴)이다.
도 21은 컴파일러에 있어서의 대입 및 연산 처리예를 도시한 플로우차트(서브 루틴)이다.
도 22는 복원된 연산 프로그램에 의한 연산 명령의 예를 도시한 표이다.
도 23은 r0, r1 ····r32, r33, r34, r35 등의 레지스터의 상태예를 도시한 도면이다.
도 24은 외부 메모리(2)에 있어서의 데이터 저장예를 도시한 도면이다.
도 25는 마이크로프로세서(101)에 있어서의 동작예를 도시한 플로우차트이다.
도 26a 및 도 26b는 명령 비트 복원 디코더(13)에 있어서의 처리예를 도시한 플로우차트이다.
본 발명에 따른 제1 연산 처리 장치는 임의의 연산 프로그램에 기초하여 연산 처리를 행하는 장치이다. 이 연산 처리 장치에는 기입 어드레스 및 기입 제어 신호에 기초하여 임의의 값을 보유하고, 및 판독 어드레스에 기초하여 당해 값을출력하는 레지스터를 복수개 갖는 레지스터 어레이와, 이 레지스터 어레이로부터 판독된 값을 연산하는 연산부와, 이 연산부를 동작시키기 위한 연산 프로그램으로부터 연산 명령을 해독하는 명령 해독부와, 이 명령 해독부에 의해 해독된 연산 명령을 실행하기 위하여 레지스터 어레이 및 연산부를 제어하는 명령 실행 제어부가 구비된다. 이 명령 실행 제어부는 연산 명령에 기초하여 하나의 레지스터를 선택하고, 여기에서 선택된 레지스터가 보유하는 값에 따라 다른 레지스터를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행하는 것이다.
이 제1 연산 처리 장치에 따르면, 임의의 연산 프로그램에 기초하여 연산 처리를 행하는 경우에, 명령 해독부에서는 연산부를 동작시키기 위한 연산 프로그램으로부터 연산 명령이 해독된다. 명령 해독부에 의해 해독된 연산 명령을 실행하기 위하여 명령 실행 제어부에서는 레지스터 어레이 및 연산부를 제어한다. 이것을 전제로 하여, 명령 실행 제어부에서는, 연산 명령에 기초하여 하나의 레지스터를 선택하고, 여기에서 선택된 레지스터가 보유하는 값에 따라 다른 레지스터를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행하게 된다. 레지스터 어레이의 각각의 레지스터에서는 레지스터 상대 레지스터 어드레싱 처리에 의해 지정되는 기입 어드레스 및 기입 제어 신호에 기초하여 임의의 값을 보유하고, 및 판독 어드레스에 기초하여 당해 값을 출력하게 된다. 연산부에서는 레지스터 어레이로부터 판독된 값을 연산하게 된다.
따라서, 레지스터 어레이를 데이터의 수시 기입 및 판독 가능한 메모리(RAM)와 같이 취급할 수 있으므로, 종래 방식의 중앙 연산 처리 장치(CPU)에 비하여 외부 메모리의 저장 번지를 지정하는 레지스터 상대 메모리 어드레싱 처리에 의존하지 않게 된다. 종래 방식의 CPU 중에 RAM이나 ROM의 기능을 집어넣을 수 있으므로, 고속 연산 처리를 실행할 수 있으며, 아울러 CPU나 RAM, ROM 등을 개별적으로 기판에 배치하는 경우와 비교하여 기판 점유 면적을 저감할 수 있다. 당해 연산 처리 장치가 적용되는 응용 장치의 컴팩트화를 도모할 수 있다. 게다가, 동일 반도체 칩상에, 레지스터 어레이나 판독 전용 메모리를 메모리 셀에 의해 구성하고, 연산부, 명령 해독부 및 명령 실행 제어부를 산술 논리 연산 소자에 의해 구성함으로써, 당해 연산 처리 장치를 프로그래머블 로직 디바이스에 의해 구성할 수 있다.
본 발명에 따른 각각의 연산 처리 장치의 구축 방법은 임의의 연산 프로그램에 기초하여 연산 처리를 행하는 장치를 구축하는 방법이다. 이 구축 방법에서는, 미리 동일 반도체 칩상에 복수의 메모리 셀 및 산술 논리 연산 소자를 형성하고, 메모리 셀을 조합하여 레지스터 어레이 및 판독 전용 메모리를 획정함과 아울러, 산술 논리 연산 소자를 조합하여 연산부, 명령 해독부 및 명령 실행 제어부를 획정하고, 그 후, 레지스터 어레이, 판독 전용 메모리, 연산부, 명령 해독부 및 명령 실행 제어부를 미리 설정된 배선 정보에 기초하여 결선함과 아울러, 판독 전용 메모리에 임의의 연산 프로그램을 기입하게 된다.
본 발명에 따른 연산 처리 장치의 구축 방법에 따르면, 예를 들면 전원 온(ON)과 함께 비휘발성의 기억부로부터 판독된 배선 정보에 기초하여 레지스터 어레이, 판독 전용 메모리, 연산부, 명령 해독부 및 명령 실행 제어부를 결선하게 된다. 따라서, 명령 실행 제어부에서 연산 명령에 기초하여 하나의 레지스터를 선택하고, 이 레지스터가 보유하는 값에 따라 다른 레지스터를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행하는, 프로그램 가능한 연산 처리 장치를 전원 온과 함께 구축할 수 있다. 게다가, 종래 방식의 CPU 중에 RAM이나 ROM의 기능을 집어넣은 연산 처리 장치를 구축할 수 있고, 고속연산 처리를 실행할 수 있으며, 아울러 CPU나 RAM, ROM 등을 개별적으로 기판에 배치하는 경우와 비교하여 기판 점유 면적을 저감할 수 있다. 당해 연산 처리 장치가 적용되는 응용 장치의 컴팩트화를 도모할 수 있다.
본 발명에 따른 제1 연산 처리 방법은 연산 프로그램에 기초하여 임의의 연산 처리를 행하는 방법이다. 이 연산 처리 방법에서는, 기입 어드레스 및 기입 제어 신호에 기초하여 임의의 값을 보유하고, 및 판독 어드레스에 기초하여 당해 값을 출력하는 레지스터를 복수개 준비하고, 그 후 연산 프로그램으로부터 연산 명령을 해독하고, 연산 명령에 기초하여 하나의 레지스터를 선택하고, 여기에서 선택된 레지스터가 보유하는 값에 따라 다른 레지스터를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행함과 아울러, 연산 명령에 기초하여 다른 레지스터를 선택하고, 여기에서 선택된 다른 레지스터가 보유하는 값과 레지스터 상대 레지스터 어드레싱 처리에 의해 선택된 레지스터의 값을 연산하게 된다.
이 제1 연산 처리 방법에 따르면, 연산 프로그램에 기초하여 임의의 연산 처리를 행하는 경우에, 복수의 레지스터를 데이터의 수시 기입 및 판독 가능한 메모리와 같이 취급할 수 있으므로, 종래 방식의 중앙 연산 처리 장치와 외부 메모리를 조합한 연산 처리 방법과 비교하여 레지스터 상대 메모리 어드레싱 처리에 의존하지 않게 된다. 이에 따라, 종래 방식에 비하여 고속 연산 처리를 실행할 수 있게 된다.
본 발명에 따른 제2 연산 처리 장치는 레지스터 상대 레지스터 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 행하는 장치로서, 복수의 레지스터와, 레지스터를 사용하는 빈도에 기초하여 당해 레지스터를 지정하는 명령 비트수가 미리 압축됨과 아울러, 상기 프로그램의 명령 구조 중에 레지스터 종류가 기술된 명령 길이가 다른 압축 프로그램을 기억하는 기억부와, 이 기억부로부터 압축 프로그램을 판독하여 레지스터 종류를 해독하고, 당해 레지스터 종류에 기초하여 레지스터를 지정하기 위한 명령 비트수를 복원하는 명령 해독부와, 이 명령 해독부에 의해 복원된 소정 길이의 명령에 기초하여 레지스터를 지정하여 임의의 연산을 실행하는 명령 실행 연산부를 구비하는 것이다.
이 제2 연산 처리 장치에 따르면, 레지스터를 사용하는 빈도에 기초하여 당해 레지스터를 지정하는 명령 비트수가 미리 압축됨과 아울러, 당해 프로그램의 명령 구조 중에 레지스터 종류가 기술된 명령 길이가 다른 압축 프로그램에 기초하여 레지스터 상대 레지스터 어드레싱 처리를 실행하는 경우에, 기억부에는 복수의 레지스터 중에서 당해 레지스터를 지정하기 위한 압축 프로그램이 기억된다. 명령 해독부에서는, 이 기억부로부터 압축 프로그램을 판독하여 레지스터 종류가 해독되고, 이 레지스터 종류에 기초하여 당해 레지스터를 지정하기 위한 명령 비트수가 복원된다. 이것을 전제로 하여, 명령 실행 연산부에서는 명령 해독부에 의해 복원된 소정의 명령 길이의 프로그램에 기초하여 레지스터를 지정하여 임의의 연산을실행하게 된다. 따라서, 레지스터의 사용 빈도에 따라서 가변된 명령 길이의 압축 프로그램으로서, 빈번하게 액세스하는 레지스터에는 짧은 길이의 명령이 세트된, 압축 프로그램 데이터를 기억부에 저장할 수 있으므로, 그 메모리 용량을 저감할 수 있다. 이에 따라, 메모리 셀이나 논리 연산 소자로 이루어지는 PLD에 의해 프로세서를 구축하는 경우에, ROM으로서 기능시키는 메모리 셀의 점유율을 저감할 수 있고, 그 만큼의 메모리 셀을 레지스터에 많이 할당할 수 있다.
본 발명에 따른 제2 연산 처리 방법은 레지스터 상대 레지스터 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 행하는 연산 방법이다. 이 연산 처리 방법에서는, 레지스터를 사용하는 빈도에 기초하여, 당해 레지스터를 지정하는 명령 비트수가 미리 압축됨과 아울러, 프로그램의 명령 구조 중에 레지스터 종류가 기술된 명령 길이가 다른 압축 프로그램을 기억하고, 이 압축 프로그램을 판독하여 레지스터 종류를 해독하고, 당해 레지스터 종류에 기초하여 레지스터를 지정하기 위한 명령 비트수를 복원하고, 복원된 소정 길이의 명령에 기초하여 레지스터를 지정하여 임의의 연산을 실행하게 된다.
이 제2 연산 처리 방법에 따르면, 레지스터 상대 레지스터 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 행하는 경우에, 레지스터의 사용 빈도에 따라서 가변된 명령 길이의 압축 프로그램으로서, 빈번하게 액세스하는 레지스터에는 짧은 길이의 명령이 셋트된, 압축 프로그램 데이터를 메모리 영역에 저장할 수 있으므로, 그 메모리 용량을 저감할 수 있다. 이에 따라, 메모리 셀이나 논리 연산 소자로 이루어지는 PLD에 의해 프로세서를 구축하는 경우에, ROM으로서기능시키는 메모리 셀의 점유율을 저감할 수 있고, 그 만큼의 메모리 셀을 레지스터에 많이 할당할 수 있다.
본 발명에 따른 연산 처리 시스템은, 한편으로, 소정의 프로그램 언어에 기초하여 레지스터 상대 레지스터 어드레싱 연산을 실행하기 위한 명령을 편집하여 프로그램을 작성하는 프로그램 작성 장치와, 다른 한편으로, 당해 프로그램과 복수의 레지스터를 사용하여 레지스터 상대 레지스터 어드레싱 연산을 실행하는 연산 처리 장치를 갖는 연산 처리 시스템이다. 이 프로그램 작성 장치는 레지스터를 사용하는 빈도에 기초하여 당해 레지스터를 지정하는 명령 비트수를 압축함과 아울러, 당해 프로그램의 명령 구조 중에 레지스터 종류를 기술하여 명령 길이가 다른 압축 프로그램을 작성한다. 이 연산 처리 장치는 프로그램 작성 장치에서 작성된 압축 프로그램을 취득하여 레지스터 종류를 해독하고, 레지스터 종류에 기초하여 당해 레지스터를 지정하는 명령 비트수를 복원하고, 소정 길이의 명령에 기초하여 복수의 레지스터를 지정하여 임의의 연산을 실행하는 것이다.
이 연산 처리 시스템에 따르면, 한편으로, 소정의 프로그램 언어에 기초하여 레지스터 상대 레지스터 어드레싱 연산을 실행하기 위한 명령을 편집하여 프로그램을 작성하고, 다른 한편으로, 당해 프로그램과 복수의 레지스터를 사용하여 레지스터 상대 레지스터 어드레싱 연산을 실행하는 경우에, 프로그램 작성 장치에서는 레지스터를 사용하는 빈도에 기초하여 당해 레지스터를 지정하는 명령 비트수를 압축함과 아울러, 당해 프로그램의 명령 구조 중에 레지스터 종류를 기술하여 명령 길이가 다른 압축 프로그램이 작성된다. 연산 처리 장치에서는, 프로그램 작성 장치에서 작성된 압축 프로그램을 취득하여 레지스터 종류를 해독하고, 이 레지스터 종류에 기초하여 당해 레지스터를 지정하는 명령 비트수를 복원하고, 소정 길이의 명령에 기초하여 복수의 레지스터를 지정하여 임의의 연산이 실행된다. 따라서, 프로그램 작성계에서는 레지스터의 사용 빈도에 따라서 명령 길이를 가변할 수 있으므로, 빈번하게 액세스하는 레지스터에 짧은 길이의 명령을 세팅할 수 있다. 이에 따라, 프로그램 실행계에서는 ROM 등에 압축한 명령을 세팅할 수 있고, 프로그램 데이터를 저장하는 ROM 등의 메모리 용량을 저감할 수 있다. 또한, 메모리 셀이나 논리 연산 소자로 이루어지는 PLD에 의해 프로세서를 구축하는 경우에, ROM으로서 기능시키는 메모리 셀의 점유율을 저감할 수 있고, 그 만큼의 메모리 셀을 레지스터에 많이 할당할 수 있다.
본 발명에 따른 제3 연산 처리 방법은, 프로그램 작성계에서 소정의 프로그램 언어에 기초하여 레지스터 상대 레지스터 어드레싱 연산을 실행하기 위한 명령을 편집하여 프로그램을 작성하고, 프로그램 실행계에서 당해 프로그램과 복수의 레지스터를 사용하여 레지스터 상대 레지스터 어드레싱 연산을 실행하는 연산 처리 방법이다. 프로그램 작성계에서는, 레지스터를 사용하는 빈도에 기초하여 당해 레지스터를 지정하는 명령 비트수를 압축함과 아울러, 당해 프로그램의 명령 구조 중에 레지스터 종류를 기술하여 명령 길이가 다른 압축 프로그램을 작성하고, 프로그램 실행계에서는, 프로그램 작성계에서 작성된 압축 프로그램을 취득하여 레지스터 종류를 해독하고, 여기에서 해독된 레지스터 종류에 기초하여 당해 레지스터를 지정하는 명령 비트수를 복원하고, 여기에서 복원된 소정 길이의 명령에 기초하여 복수의 레지스터를 지정하여 임의의 연산을 실행하게 된다.
이 제3 연산 처리 방법에 따르면, 프로그램 작성계에서 소정의 프로그램 언어에 기초하여 레지스터 상대 레지스터 어드레싱 연산을 실행하기 위한 명령을 편집하여 프로그램을 작성하고, 프로그램 작성계에서 당해 프로그램과 복수의 레지스터를 사용하여 레지스터 상대 레지스터 어드레싱 연산을 실행하는 경우에, 프로그램 작성계에서는 레지스터의 사용 빈도에 따라서 명령의 길이를 가변할 수 있으므로, 빈번하게 액세스하는 레지스터에 짧은 길이의 명령을 세팅할 수 있다. 따라서, 프로그램 실행계에서는 ROM 등에 압축한 명령을 세팅할 수 있고, 프로그램 데이터를 저장하는 ROM 등의 메모리 용량을 저감할 수 있다. 또한, 메모리 셀이나 논리 연산 소자로 이루어지는 PLD에 의해 프로세서를 구축하는 경우에, ROM으로서 기능시키는 메모리 셀의 점유율을 저감할 수 있고, 그 만큼의 메모리 셀을 레지스터에 많이 할당할 수 있다.
본 발명은 종래의 과제를 해결한 것으로, CPU나 RAM, ROM 등의 기능을 1칩에 집적화한 경우에, 레지스터의 집합체를 데이터의 수시 기입 및 판독 가능한 메모리와 같이 동작할 수 있도록 함과 아울러, 이들 기능 부품 등을 개별적으로 기판에 배치하는 경우에 비하여 기판 점유 면적을 저감할 수 있도록 한 연산 처리 장치, 그 구축 방법, 연산 처리 시스템 및 연산 처리 방법을 제공하는 것을 목적으로 한다.
또한 본 발명은 레지스터의 사용 빈도에 따라서 명령의 길이를 가변할 수 있도록 함과 아울러, 빈번하게 액세스하는 레지스터에는 짧은 길이의 명령을 세팅할 수 있도록 하고, 프로그램 데이터를 저장하느 ROM 등의 메모리 용량을 저감할 수 있도록 한 연산 처리 장치, 그 구축 방법, 연산 처리 시스템 및 연산 처리 방법을 제공하는 것을 목적으로 한다.
계속하여, 본 발명에 따른 연산 처리 장치, 그 구축 방법, 연산 처리 시스템 및 연산 처리 방법의 한 실시 형태에 관하여 도면을 참조하면서 설명하겠다.
(1) 제1 실시예
도 1은 본 발명에 따른 실시예로서의 연산 처리 장치(100)의 구성예를 도시한 블록도이다.
본 실시예에서는 연산 명령을 실행하기 위한 레지스터 어레이 및 연산부를 제어하는 명령 실행 제어부를 구비하고, 연산 명령에 기초하여 하나의 레지스터를 선택함과 아울러, 이 레지스터가 보유하는 값에 따라 다른 레지스터를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행하여, 레지스터 어레이를 데이터의 수시 기입 및 판독 가능한 메모리(RAM)와 같이 동작할 수 있도록 함과 아울러, CPU나 RAM, ROM 등을 개별적으로 기판에 배치하는 경우에 비하여 기판 점유 면적을 저감할 수 있도록 한 것이다.
도 1에 도시한 연산 처리 장치(100)는 프로그램 가능한 1칩 마이크로컴퓨터 등에 적용하기에 바람직한 프로세서로서, 임의의 연산 프로그램에 기초하여 연산 처리를 행하는 것이다(제1 연산 처리 장치). 이 예에서 연산 처리 장치(100)는 프로그래머블 로직 디바이스를 구성하고, 동일 반도체 칩상에 형성된 메모리 셀 및 산술 논리 연산 소자를 배선 정보에 기초하여 결선하고, 복수의 메모리 셀에 의해 레지스터 어레이(11) 및 ROM 셀(14)을 구성하고, 복수의 산술 논리 연산 소자에 의해 ALU(12), 디코더(13) 및 명령 실행 제어부(50)를 구성한 것이다. 연산 처리 장치(100)는 인터페이스(60)를 통하여 외부의 시스템 버스 등에 접속된다.
연산 처리 장치(100)는 레지스터 어레이(11)를 갖고 있다. 레지스터 어레이(11)는 복수의 레지스터를 갖고 있고, 각각의 레지스터는 기입 어드레스(Aw) 및 기입 제어 신호(Sw)에 기초하여 임의의 값을 보유하고, 및 판독 어드레스(Ar)에 기초하여 피수 X나 가수 Y 등의 값을 출력하게 된다. 레지스터 어레이(11)에는 예를 들면, 8192개×32bit의 레지스터가 형성된다. 이 레지스터 어레이(11)에는 연산부의 일례가 되는 산술 논리 연산 유닛(Arithmetic and Logic Unit: 이하에서는 ALU이라 함)(12)가 데이터 신호선(L20)을 통하여 접속되어 있고, 레지스터 어레이(11) 중에서 지정된 레지스터로부터 판독된 X나 Y 등의 값을 연산하게 된다. 연산 결과의 값은 Z이다. 연산 종목은 덧셈, 곱셈, 뺄셈, 나눗셈 등이다. 연산 종목은 명령 실행 제어부(50)로부터 출력되는 ALU 제어 신호(S35)에 기초하여 설정된다. 데이터 신호선(L20)에는 ALU(12) 이외에 래치 회로(58, 511), 셀렉터(56, 57, 59) 등이 접속되어 있다. 데이터 신호선(L20)에는 DATA, 피수 X값, 가수 Y값 등이 전송된다.
이 연산 처리 장치(100)에는 ALU(12)를 동작시키기 위하여 명령 해독부(이하에서는 디코더라고 함)(13)가 구비되어 있다. 디코더(13)에는 판독 전용 메모리(ROM 셀)(14)이 접속되어 있고, ALU(12)의 연산 동작에 필요한 연산 프로그램(AP)이 기계어의 명령(Instruction)으로 저장된다. ROM 셀(14)은 프로그램 카운터(54)로부터의 카운트 출력 신호(S5)에 기초하여 연산 프로그램(AP)을 출력하게 된다. ROM 셀(14)도 프로세서 내부에 실장된다.
디코더(13)에서는, 미리 준비된 연산 프로그램(AP)으로부터 연산 명령을 해독하게 된다. 예를 들면, 디코더(13)는 ROM 셀(14)로부터 판독된 기계어의 명령을 해독하여 명령 제어 신호(S4), 명령 신호(S9) 및 각 인수(引數) 신호(S10)를 발생하게 된다. 명령 신호(S9)에는 load 명령, add 명령, cmp 명령, jump 명령이 포함된다. 각 인수 신호(S10)에는 액세스 방법 #1, 액세스 방법 #2, 레지스터 번호 r0, r1···등, 플래그 상태(flag condition) 및 점프 어드레스 등이 포함된다. 명령 제어 신호(S4)는 명령 판독 스테이트 머신(52)에 출력된다. 이 연산 프로그램(AP)에는 레지스터 상대 레지스터 어드레싱 처리를 실행하기 위한 연산 명령을 포함하고 있다. 레지스터 상대 레지스터 어드레싱 처리라고 함은 연산 명령에 기초하여 하나의 레지스터를 선택하고, 여기에서 선택된 레지스터가 보유하는 값에따라 다른 레지스터를 선택하는 처리를 말한다. 이 처리는 액세스 방법 #1에 의해 실행된다.
디코더(13)에는 명령 실행 제어부(50)가 접속되어 있고, 디코더(13)에 의해 해독된 연산 명령을 실행하기 위하여 레지스터 어레이(11) 및 ALU(12)를 제어하게 된다. 명령 실행 제어부(50)는 실행 스테이트 머신(51), 명령 판독 스테이트 머신(52), 셀렉터(53), 프로그램 카운터(PC)(54), +1 인크리멘터(55), 제1 셀렉터(56), 제2 셀렉터(57), 입력용의 셀렉터(59), 래치 회로(58, 510, 511)를 갖고 있고, 레지스터 상대 레지스터 어드레싱 처리를 실행하게 된다. 명령 판독 스테이트 머신(52)에서는 디코더(13)로부터 출력되는 명령 제어 신호(S4)에 기초하여 프로그램 카운터(54) 및 실행 스테이트 머신(51)을 제어한다. 예를 들면, 당해 머신(52)은 디코더(13)로부터 명령 신호(S9) 및 각 인수 신호(S10)가 실행 스테이트 머신(51)에 출력됨과 아울러 명령 실행 개시 신호(S29)를 출력한다.
실행 스테이트 머신(51)에는 ALU(12), 셀렉터(56, 57, 59), 래치 회로(58, 510, 511)가 접속되어 있다. 셀렉터(56)의 출력은 판독 어드레스 선(L14)을 개재하여 레지스터 어레이(11)에 접속되고, 그 입력은 데이터 신호선(L20) 및 어드레스 신호선(L33)에 각각 접속되어 있다. 판독 어드레스(Ar) 또는 판독 실행 어드레스(Ar) 중의 어느 하나를 선택하기 위함이다. 셀렉터(57)의 출력은 기입 어드레스 선(L13)을 개재하여 레지스터 어레이(11)에 접속되고, 그 입력은 데이터 신호선(L20) 및 어드레스 신호선(L34)에 각각 접속되어 있다. 기입 어드레스(Aw) 또는 기입 실행 어드레스(Aw) 중의 어느 하나를 선택하기 위함이다. 당해 머신(51)에서는 명령 실행 개시 신호(S29)에 기초하여 명령의 실행을 개시한다. 예를 들면, 데이터의 기입시에는, 기입 제어 신호(Sw)가 레지스터 어레이(11)에 출력되고, 셀렉터(59)에는 선택 제어 신호(S24)가 출력된다. 데이터의 판독시에는, 선택 제어 신호(S32)가 셀렉터(56)에 출력됨과 아울러 판독 어드레스(Ar)가 출력된다. 연산시에는, 래치 제어 신호(S34)가 래치 회로(58)에 출력되고, 래치 회로(510)에는 래치 제어 신호(S38)가 출력된다. 당해 프로세서 외부에는 외부 제어 신호(S16)가 출력된다. 명령의 실행이 종료하면, 실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)에 실행 종료 신호(S26)를 출력하고, 프로그램 카운터(54)의 값을 진행하게 된다.
이 실행 스테이트 머신(51)및 명령 판독 스테이트 머신(52)에는 셀렉터(53)가 접속되어 있고, 선택 제어 신호(S28)에 기초하여 인크리먼트 출력 신호(S7) 또는 분기 제어 신호(S27) 중의 어느 한쪽을 선택하고, 이것을 셀렉터 출력으로서 프로그램 카운터(54)에 출력하게 된다. 선택 제어 신호(S28)는 실행 스테이트 머신(51)으로부터 공급된다. 인크리먼트 출력 신호(S7)는 인크리멘터(55)로부터 셀렉터(53)에 출력된다. 프로그램 카운터(54)에서는 카운트 제어 신호(S30)에 기초하여 ROM 셀(14)로부터 연산 프로그램(AP)를 판독하는 장소가 지정된다. +1 인크리멘터(55)는 프로그램 카운터(54)의 카운트 출력 신호(S5)를 "+1"로 하여 인크리먼트하게 된다. 카운트 제어 신호(S30)는 명령 해독 스테이트 머신(52)으로부터 공급된다.
이 예에서 실행 스테이트 머신(51)에 접속된 셀렉터(56)에서는, 하나의 레지스터를 선택하기 위한 판독 실행 어드레스(Ar) 또는 당해 레지스터를 재차 선택하기 위한 판독 어드레스(Ar) 중의 어느 한쪽을 선택하게 된다. 셀렉터(56)는 실행 스테이트 머신(51)으로부터의 선택 제어 신호(S32)에 의해 어느 한쪽의 어드레스를 선택하게 된다. 판독 실행 어드레스(Ar)는 실행 스테이트 머신(51)으로부터 셀렉터(57)에 출력된다. 판독 어드레스(Ar)는 레지스터 어레이(11)로부터 출력된다. 셀렉터(56) 이외에 실행 스테이트 머신(51)에는 셀렉터(57)가 접속되어 있고, 하나의 레지스터를 선택하기 위한 기입 실행 어드레스(Aw) 또는 당해 레지스터를 재차 선택하기 위한 기입 어드레스(Aw) 중의 어느 한쪽을 선택하게 된다. 셀렉터(57)는 실행 스테이트 머신(51)으로부터의 선택 제어 신호(S31)에 의해 어느 한쪽의 어드레스을 선택하게 된다. 기입 실행 어드레스(Aw)는 실행 스테이트 머신(51)으로부터 셀렉터(57)에 출력된다. 기입 어드레스(Aw)는 레지스터 어레이(11)로부터 출력된다.
셀렉터(59)는 데이터 버스(19A), 레지스터 어레이(11) 및 ALU(12)에 접속되어 있고, 데이터 버스(19A)로부터 취득한 데이터(DATA), 레지스터 어레이(11)로부터 출력되는 피수 X값(가수 Y값) 또는 ALU(12)로부터 출력되는 연산 결과값 Z 중의 어느 하나를 선택 제어 신호(S24)에 기초하여 입력 제어하게 된다. 래치 회로(58)는 레지스터 어레이(11)의 판독 포트와 ALU(12) 사이에 접속되어 있고, 래치 제어 신호(S34)에 기초하여 레지스터(ri)의 출력값 X를 래치하게 된다. 래치 회로(510)는 ALU(12)의 비교 출력부 등에 접속되어 있고, 래치 제어 신호(S38)에 기초하여 일치 검출 신호(S22)를 래치하여, 플래그 상태(flag condition) 신호(S23)를 출력하게 된다. 래치 회로(511)는 레지스터 어레이(11)의 판독 포트와 어드레스 버스(19B) 사이에 접속되어 있고, 래치 제어 신호(S17)에 기초하여 외부 어드레스(address)를 래치하게 된다.
한편, 실행된 명령에 의해 점프(명령 분기)가 발생한 경우에는, 점프 목적지의 어드레스를 나타낸 분기 제어 신호(S27)를 실행 스테이트 머신(51)으로부터 셀렉터(53)에 출력된다. 셀렉터(53)에서는 선택 제어 신호(S28)에 기초하여 그 분기 제어 신호(S27)를 선택하고, 이 분기 제어 신호(S27)를 프로그램 카운터(54)에 기입하게 된다. 또한, 실행 스테이트 머신(51)에는 컨트롤 버스(19C)가 접속되고, 외부 제어 신호(S16)를 외부에 출력하게 된다. 이것은 외부 주변 기기를 제어하기 위함이다.
도 2는 레지스터 어레이(11)의 내부 구성예를 도시한 블록도이다. 도 2에 도시한 레지스터 어레이(11)에 따르면, 예를 들면, 8192개의 32bit의 레지스터(r0∼rn)(i=0∼n;8191)가 구비되고, 각각의 레지스터(r0∼rn)의 입력에는 기입 포트(15)가 접속되어 있다. 1bit의 레지스터는 D형의 플립플롭 회로 등으로 구성된다. 기입 포트(15)는 도 1에 도시한 셀렉터(59)에 접속되어 있고, 기입 제어 신호(Sw) 및 기입 어드레스(Aw)에 기초하여, 데이터 버스(19A)로부터 취득한 데이터(DATA), 레지스터 어레이(11)로부터 출력되는 피수 X값(가수 Y값) 또는 ALU(12)로부터 출력되는 연산 결과값 Z 중의 어느 하나를 레지스터(r0∼rn)에 기입하게 된다. 기입 포트(15)는 기입 어드레스 선(L13)을 개재하여 도 1에 도시한 셀렉터(57)에 접속되어 있다. 이것은 기입 실행 어드레스(Aw) 또는 기입 어드레스(Aw)를 공급하기 위함이다.
각각의 레지스터(r0∼rn)의 출력에는 판독 포트(16)가 접속되어 있다. 판독 포트(16)는 데이터 신호선(L20)을 통하여 도 1에 도시한 ALU(12), 래치 회로(58, 511), 셀렉터(56, 57, 59) 등에 접속되어 있고, 판독 어드레스(Ar)에 기초하여 지정된 레지스터(ri)로부터 데이터(DATA)를 판독하게 된다. 판독 포트(16)는 판독 어드레스 선(L14)을 개재하여 도 1에 도시한 셀렉터(56)에 접속되어 있다. 판독 실행 어드레스(Ar) 또는 판독 어드레스(Ar)를 공급하기 위함이다. 기입 어드레스 선(L13)을 개재하여 도 1에 도시한 셀렉터(57)에 접속되어 있다. 기입 실행 어드레스(Aw)또는 기입 어드레스(Aw)를 공급하기 위함이다.
다음으로, 연산 처리 장치(100)에서 취급하는 명령의 구조예를 도시한 포맷 등에 관하여 설명하겠다. 도 3a에 도시한 포맷에 따르면, 명령은 32비트의 고정 길이이고, 크게 나누어 load 명령, add 명령, cmp 명령 등과 jump 명령에 의해 취급된다. load, add 및 cmp 명령에 있어서는, 최초의 2비트가 명령의 종류를 나타내고 있다. 명령은 도 3c에 도시한 바와 같이 4종류이다. 명령은 도 3c에 있어서, 코드 "0"으로 load를 나타내고 전송 명령, 코드 "1"로 add를 나타내고 가산 명령, 코드 "2"로 cmp를 나타내고 비교 명령이다. 코드 "3"은 jump로 분기 명령을 나타내고 있다. cmp 명령에 관해서는 비교 결과가 동일하였던 경우에는, 도 1에 도시한 래치 회로(510)의 플래그 상태 신호(S23)에 기초하여 zero flag가 1로 세팅되고, 동일하지 않았던 경우에는 0이 세팅된다.
도 3a에 도시한 명령에 이어지는 2비트에는 액세스 방법 #1이 기술되고, 이것에 이어지는 2bit에는 액세스 방법 #2가 기술된다. Operand는 왼쪽이 액세스 방법 #1, 레지스터 번호 1로 표시되고, 오른쪽이 액세스 방법 #2, 레지스터 번호 2로 표시된다. 즉, 액세스 방법 #1은 레지스터 번호 1로 표시되는 레지스터(ri)의 액세스 방법을 나타내고 있고, 액세스 방법 #2는 레지스터 번호 2로 표시되는 레지스터(ri)의 액세스 방법을 나타내고 있다. 액세스 방법 #1과 액세스 방법 #2는 각각 레지스터 번호 No. 1, 레지스터 번호 No. 2에 대응하고, 이들 사이에서 처리가 행해진다.
도 3d에 도시한 바와 같이 액세스 방법은 4종류가 준비되어 있다. 도 3d에 있어서, 코드 "0"은 "레지스터 직접"으로 레지스터 번호로 표시되는 레지스터(ri)의 값을 직접 사용하는 것을 나타내고 있다. 코드 "1"은 "레지스터 상대 레지스터"로 레지스터 번호로 표시되는 레지스터의 값을 재차 레지스터 번호라고 해석하고, 그 레지스터 번호로 표시되는 레지스터의 값을 사용하는 것을 나타내고 있다. 코드 "2"는 "레지스터 상대 외부"로 레지스터 번호로 표시되는 레지스터 값을 외부 어드레스로서 취급하고, 당해 연산 처리 장치(100)의 외부에 대하여 액세스를 하는 것을 나타내고 있다. 코드 "3"은 미사용이다. 액세스 방법 #1과 액세스 방법 #2는 각각 레지스터 번호 1, 레지스터 번호 2에 대응하고, 이들 사이에서 처리가 행해진다. 예를 들면, 레지스터 번호 1은 피수를 보유하는 레지스터(ri)를 나타내고, 레지스터 번호 2는 가수를 보유하는 레지스터(ri)를 나타낸다.
또한, 도 3b에 도시한 jump 명령의 포맷에 따르면, 최초의 2bit에 명령이 기술되고, 이어지는 2bit에는 플래그 상태(flag condition)가 기술된다. 이어지는28bit에는 점프 어드레스가 기술된다. 플래그 상태는 도 3e에 도시한 바와 같이, 명령 실행 제어를 옮길 것인가 아닌가의 판단을 하기 위한 조건이다. 코드 "0"은 "무조건(無條件)"으로 항상 제어를 옮긴다. 코드 "1"은 "zero flag"로 zero flag가 "1"인 경우에 제어를 옮긴다. 코드 "2"는 "non-zero flag"로 zero flag가 "0"인 경우에 제어를 옮기게 된다. 코드 "3"은 미사용이다.
도 4는 ROM 셀(14)의 연산 프로그램(AP)에 의한 연산 명령의 예를 도시한 표이다. 도 5는 레지스터(r0∼r12 등)의 상태예를 도시한 도면이다. 이 예에서는 레지스터 어레이(11)의 13개의 레지스터(ri, i=0∼12) 중의 어느 하나를 사용하여, 그 레지스터(ri)에 저장된 값에 "1"을 가산하고, 그 레지스터(ri)의 값이 나타내는 임의의 레지스터에 연산 결과를 저장하는 경우를 상정한다. 도 4에 도시한 연산 명령(Instruction) #I1∼#I4는 ROM 셀(14)의 연산 프로그램(AP)에 기술된 것이다.
각각의 연산 명령 #I1∼#I4에는, 니마닉(mnemonic)에 의한 표현, 기계어에 의한 표현 및 처리의 내용이 나타나 있다. 도 4에 도시한 연산 명령 #I1은 도 3a에 도시한 명령 구조에 있어서, 기계어로 5001400Bh에 의해 표시되는 add [r10], r11이고, 레지스터 어레이(11)의 r10으로 표시되는 레지스터 번호의 레지스터(r10)의 값에, r10으로 표시되는 레지스터 번호의 레지스터(r11)의 값을 가산하고, 그 결과를 r10로 표시되는 레지스터 번호의 레지스터(r10)에 저장하는 내용이다.
연산 명령 #I2는 기계어로 4001400Bh에 의해 표시되는 add r10, r11이고, 레지스터(r10)의 값에 레지스터(r11)의 값을 가산하여 그 연산 결과를 레지스터(r10)에 보존하는 내용이다. 연산 명령 #I3는 기계어로 8001400Ch에 의해 표시되는 cmpr10, r12이고, 레지스터(r10)의 내용과 레지스터(r12)의 내용을 비교하고, 동일한 값인 경우에는 zero flag에 "1"을 세팅하고, 다른 경우에는 "0"으로 세팅하는 내용이다. 명령 #I4는 기계어로 E000000Oh에 의해 표시되는 jump nz, LOOP이고, zero flag가 "0"인 경우에는 LOOP로 표시되는 라벨로 제어를 옮기는 내용이다.
도 5에 도시한 레지스터 어레이(11)의 13개의 레지스터 상태예에 따르면, 레지스터(r0∼r10)의 초기값은 모두 "0"이고, 레지스터(11)의 초기값은 "1", 레지스터(r12)의 초기값은 "10"이다. 도 4에 도시한 명령 #I1을 실행하는 경우, 도 5에 도시한 레지스터(r10)의 값은 "0"이므로, 레지스터(r0)가 선택된다. 이 레지스터(r0)의 값인 "0"이 판독 포트(16)에 판독되고, 계속하여 레지스터(r11)의 값인 "1"이 판독 포트(16)에 판독되고, 이들 값이 가산되고, 그 연산 결과인 "1"이 레지스터(r0)에 저장된다. 이에 따라, 레지스터(r0)의 값이 "1"씩 증가하게 된다. 이 예에서는 레지스터(r12)의 값인 10회까지 가산 처리가 반복된다.
도 4에 도시한 명령 #I2를 실행하는 경우에는, 도 5에 도시한 레지스터(r10)의 값인 "0"에 레지스터(r11)의 값인 "1"이 가산되고, 그 연산 결과인 "1"이 레지스터(r10)에 저장된다. 이에 따라, 다음 레지스터로 처리가 옮겨가게 된다. 도 4에 도시한 명령 #I3을 실행하는 경우, zero flag의 값이 래치 회로(510)에 의해 보유되고, 이후의 명령에 의해 참조된다. 이것을 전제로 하여 레지스터(r10)의 값 "0"과 레지스터(r12)의 값인 "10"이 비교된다.
이 예에서는, 레지스터(r10)의 값 "0"과 레지스터(r12)의 값 "10"이 다르므로, zero flag에는 "0"이 세팅된다. zero flag에 "1"이 세팅되는 것은 레지스터(r10)의 값 "10"과 레지스터(r12)의 값 "10"이 일치한 경우이다. 도 4에 도시한 명령 #I4를 실행하는 경우, zero flag가 "0"이므로 제어를 명령 #I1로 옮긴다(LOOP). 상기의 동작이 10회 반복되면 레지스터(r10)의 값이 "10"이 되고, 레지스터(r10)의 값 "10"과 레지스터(r12)의 값 "10"이 일치하므로, 명령 #I3에 의해 zero flag가 "1"로 세팅되고, 명령 #I4에서 제어가 명령 #I1로 옮겨가지 않게 되고, 연산 처리가 종료한다.
계속하여, 본 발명에 따른 연산 처리 방법에 대하여 당해 연산 처리 장치(100)의 동작예를 설명한다. 도 6은 연산 처리 장치(100)의 동작예를 도시한 플로우차트이다.
이 실시예에서는, 도 4에 나타낸 연산 명령 #I1∼#I4을 형성하는 연산 프로그램(AP)에 기초하여 가산 처리를 실행하는 경우를 상정한다. 물론, 연산 처리 장치 (100)에는 기입 어드레스(Aw) 및 기입 제어 신호(Sw)에 기초하여 임의의 값을 보유하고, 및 판독 어드레스(Ar)에 기초하여 당해 값을 출력하는 레지스터 어레이(11)가 미리 준비되어 있는 경우를 전제로 한다. 레지스터 어레이(11)의 레지스터 상태에 대하여는, 도 5에 도시한 바와 같이, 예를 들면, 13개의 레지스터(r0∼r10)의 초기값이 모두 "0"이고, 레지스터(r11)의 초기값이 "1", 레지스터(r12)의 초기값이 "10"이다. 이들 초기값을 기입하는 경우는 실행 스테이트 머신(51)에서는 어드레스 신호선(L34)에 기입 어드레스(Aw)가 출력되고, 셀렉터(57)가 선택 제어 신호(S31)에 기초하여 레지스터(r10), 레지스터(r11) 및 레지스터(r12)를 선택함으로써, 그 초기값 "0", "1", "10"이 설정된다.
이것을 동작 조건으로 하여, 도 6에 도시한 플로우차트의 스텝 A1에서, 먼저, 디코더(13)는 ROM 셀(14)로부터 연산 프로그램(기계어 명령)(AP)을 수취하고, 연산 프로그램(AP)을 해독하여 연산 명령 #I1∼#I4을 검출한다. 이 때, 디코더(13)에서는 도 4에서 설명한 기계어의 5001400Bh에 의해 표시되는 add [r10], r11에 관련되는 연산 명령 #I1이나, 기계어로 4001400Bh에 의해 표시되는 add r10, r11에 관련되는 연산 명령 #I2, 기계어로 8001400Ch에 의해 표시되는 cmp r10,r12에 관련되는 연산 명령 #I3, 기계어로 E000000Oh에 의해 나타내지는 jump nz, LOOP에 관련되는 연산 명령 #I4을 검출하고, 이들 연산 명령 #I1∼#I4로부터, 명령 제어 신호(S4), 명령 신호(S9) 및 각 인수 신호(S10)가 생성되고, 이들 신호(S9, S10)가 실행 스테이트 머신(51)에 출력되게 된다. 명령 신호(S9)에는 load 명령, add 명령, cmp 명령, jump 명령이 포함된다. 각 인수 신호(S10)에는 액세스 방법 #1, 액세스 방법 #2, 레지스터 번호 r0, r1···등, flag 상태(flag condition) 및 점프 어드레스 등이 포함된다. 명령 제어 신호(S4)는 디코더(13)로부터 명령 판독 스테이트 머신(52)에 출력된다.
그 후, 스텝 A2에서 실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)의 명령 판독 제어를 받아서 연산 명령 #I1을 수취하고, 5001400Bh에 의해 표시되는 add [r10], r11에 기초하여 하나의 레지스터(r10)를 선택한다. 이 때, 어드레스 신호선(L33)에 레지스터의 번호 "10"을 출력한다. 선택 제어 신호(S32)를 사용하여 셀렉터(56)가 어드레스 신호선(L33)을 선택하게 된다. 이에 따라, 판독 어드레스 선(L14)에 레지스터 번호 "10"이 출력된다. 이 값 "10"은 레지스터 어레이(11)에서 레지스터 번호 10의 레지스터(r10)를 판독하는 어드레스(Ar)로서 사용된다. 레지스터 어레이(11)에서는 레지스터(r10)이 선택된다. 레지스터(r10)의 값은 "0"이다.
그리고, 스텝 A3에서 레지스터(r10)가 보유하는 값 "0"에 의해 레지스터 상대 레지스터 어드레싱 처리를 실행한다. 이 때, 레지스터(r10)의 값 "0"은 판독 포트(16)로부터 데이터 신호선(L20)에 출력되게 된다. 다른 레지스터(r0)를 선택하기 위함이다. 이에 따라, 레지스터 어레이(11)로부터 데이터 신호선(L20)에 출력된 레지스터(r0)의 값 "0"은 래치 회로(58)에서 보유된다. 이와 함께, 실행 스테이트 머신(51)은 선택 제어 신호(S32)에 기초하여 데이터 신호선(L20)을 선택하게 된다. 이에 따라, 셀렉터(56)는 판독 어드레스선(L14)에 레지스터(r10)의 값 "0"을 출력하게 된다. 레지스터 어레이(11)에서는 레지스터(r0)이 선택된다.
그리고, 스텝 A4로 이행하여 연산 명령 #I1에 기초하여 다른 레지스터(r11)를 선택한다. 이 때, 실행 스테이트 머신(51)은 선택 제어 신호(S32)를 셀렉터(56)에 출력하여 셀렉터(56)에 의해 판독 실행 어드레스(Ar)를 선택하도록 한다. 이와 함께, 어드레스 신호선(L33)에 판독 실행 어드레스(Ar)로서 값 "11"을 출력한다. 이 값 "11"은 레지스터 어레이(11)에서 레지스터 번호 "11"의 레지스터(r11)을 판독하는 어드레스로서 사용된다. 레지스터(r11)의 값은 "1"이다. 이에 따라, 판독 어드레스(Ar)에 기초하여 레지스터(r11)가 선택된다. 이 선택에 의해 판독 포트(16)로부터 데이터 신호선(L20)에 레지스터(r11)의 출력값인 Y값= "1"을 출력하게 된다. 이들 조작에 의해, 데이터 신호선(L20)에 출력된 레지스터(r11)의 Y값= "1"과, 래치 회로(58)의 출력인 X값= "0"이 ALU(12)에 입력된다. 즉, 레지스터(r10)가 보유하는 값 "0"에 의해 지정된 레지스터(r0)의 X값= "0" (레지스터 상대 레지스터 어드레싱 처리에 의해 선택된 레지스터(r0)의 값)과 레지스터(r11)의 Y값= "1"이 ALU(12)에 입력된다.
그리고, 스텝 A5에서 레지스터(r11)이 보유하는 Y값= "1"과 레지스터 상대 레지스터 어드레싱 처리에 의해 선택된 레지스터(r0)의 X값= "0"이 ALU(12)에 의해 가산되게 된다. 이 때, ALU(12)에는 가산 명령을 나타내는 연산 명령 신호(S35)가 입력되어 있다. 이에 따라, ALU(12)에서는 X= "0"값에 Y값= "1"을 가산하고, 그 가산 결과값 Z= "1"을 연산 결과 신호(S21)로서 셀렉터(59)에 출력하게 된다.
그리고, 스텝 A6에서 기계어로 4001400Bh에 의해 표시되는 연산 명령 #I2에 기초하여 연산 결과값 Z가 셀렉터(59)에 의해 선택된다. 이 때, 셀렉터(59)에서는 선택 제어 신호(S24)에 의해 연산 결과값 Z를 선택하도록 세팅된다. 연산 결과값 Z가 레지스터 어레이(11)에 입력된다. 레지스터 어레이(11)에서는 레지스터 상대 레지스터 어드레싱 처리에 의해 지정되는 레지스터(r0)에, 기입 어드레스(Aw) 및 기입 제어 신호(Sw)에 기초하여 연산 결과값 Z를 저장하게 된다. 즉, 레지스터(r10)가 지정하는 레지스터(r0)에 ALU(12)의 연산 결과값 Z를 보존하는 경우에는 먼저, 실행 스테이트 머신(51)은 어드레스 신호선(L33)에는 기입 실행 어드레스(Aw)로서 값 "10"을 출력한다. 이 때, 판독용의 셀렉터(56)에는 선택 제어 신호(S32)를 출력하여 어드레스 신호선(L33)을 선택하게 된다.
그리고, 레지스터 어레이(11)의 판독 포트(16)에는 레지스터(r10)의 값 "0"이 출력되므로, 이번에는 기입용의 셀렉터(57)에는 선택 제어 신호(S31)를 출력하여 데이터 신호선(20)을 선택하게 된다. 이 선택에 의해 레지스터 어레이(11)의 판독 포트(16)로부터 셀렉터(57)를 통하여 레지스터(r0)을 선택하는 값 "0"이 기입 어드레스(Aw)로서 레지스터 어레이(11)에 입력된다. 여기까지에서 레지스터 어레이(11)에는 기입 어드레스(Aw)와 기입하는 내용이 입력된다. 그 후, 실행 스테이트 머신(51)은 기입 신호(SW)를 이용하여 실제로 값의 기입을 지시한다. 이와 같이 하여, 연산 명령 #I1의 add [r10], r11을 연산할 수 있다.
이 예에서는, 스텝 A7에서 레지스터(r12)가 나타내는 값=10회에 도달했는지가 판별된다. 이 때의 판별에서는 연산 명령 #I3에 기초하여 래치 회로(510)에 보유되어 있는 zero flag의 값이 참조된다. zero flag의 값은 레지스터(r10)의 값과 레지스터(r12)의 값 "10"이 비교되고, 양쪽의 값이 다른 경우는 zero flag에 "0"이 세팅된다. 양쪽의 값이 일치하는 경우는 zero flag에 "1"이 세팅된다. 따라서, 레지스터(r12)가 나타내는 값=10회에 도달하지 않은 경우는 zero flag에 "0"이 세팅되기 때문에, 연산 명령 #I4에 기초하여 스텝 A5에 돌아가서(LOOP하여) 레지스터(r11)의 값인 "1"이 판독 포트(16)에 판독된다. 이 값 "1"이 반복하여 가산 처리가 행해지고, 레지스터(r0)의 값이 "1"씩 증가하게 되고, 그 연산 결과인 "1", "2", "3" ···이 레지스터(r0)에 저장된다. 이에 따라, 기입 어드레스(Aw) 및 기입 제어 신호(Sw)에 기초하여 연산 결과값 Z를 레지스터(r0)에 저장할 수 있다. 그리고, 스텝 A7에서 레지스터(r12)가 나타내는 값=10회에 도달한 경우는 레지스터(r10)의 값 "10"과 레지스터(r12)의 값 "10"이 일치하므로, 명령 #I3에 의해 zeroflag가 "1"로 세팅되고, 명령 #I4에서 제어가 명령 #I1로 이행되지 않게 되므로, 스텝 A5로 LOOP하지 않고 연산 처리가 종료된다.
이와 같이, 본 발명에 따른 제1 실시예로서의 연산 처리 장치 및 연산 처리 방법에 따르면, 도 6에 도시한 플로우차트의 스텝 A1에서 디코더(13)에 의해 해독된 연산 명령 #I1∼#I4 등은 명령 신호(S9) 및 각 인수 신호(S10)로 되어 실행 스테이트 머신(51)에 출력된다. 실행 스테이트 머신(51)에서는 스텝 A2에서 연산 명령 #I1∼#I4에 기초하여 하나의 레지스터(r10)를 선택하고, 스텝 A3에서 레지스터(r10)가 보유하는 값 "0"에 의해 레지스터 상대 레지스터 어드레싱 처리를 실행하게 된다. 또한, 스텝 A4에서 다른 레지스터(r0)가 선택되면, 스텝 A5에서 X값과 Y값이 ALU(12)에 의해 가산되고, 레지스터 어레이(11)의 레지스터(r0)에서는 레지스터 상대 레지스터 어드레싱 처리에 의해 지정되는 기입 어드레스(Aw) 및 기입 제어 신호(Sw)에 기초하여 연산 결과값 Z를 보유하고, 아울러 스텝 A5에서 판독 어드레스(Ar)에 기초하여 당해 연산 결과값 Z를 다음 연산의 가수 X값으로서 출력하게 된다. ALU(12)에서는 레지스터 어레이(11)로부터 판독된 X값 및 Y값을 가산하게 된다.
따라서, 레지스터 어레이(11)를 데이터의 수시 기입 및 판독 가능한 메모리(RAM)와 같이 취급할 수 있으므로, 레지스터(r0∼r12) 등을 통상의 프로세서의 RAM(메모리)과 같이 취급하면서, 레지스터 어레이(11)(레지스터)에 액세스를 하는 것이 가능해진다. 이에 따라, 종래 방식의 중앙 연산 처리 장치(CPU)와 비교하여 외부 메모리의 저장 번지를 지정하는 레지스터 상대 메모리 어드레싱 처리에 의존하지 않게 된다. 종래 방식의 CPU 중에 RAM이나 ROM의 기능을 집어넣을 수 있으므로, 고속 연산 처리를 실행할 수 있고, 아울러 CPU나 RAM, ROM 등을 개별적으로 기판에 배치하는 경우에 비하여 기판 점유 면적을 저감할 수 있다. 당해 연산 처리 장치(100)가 적용되는 응용 장치의 컴팩트화를 도모할 수 있다.
(2) 제2 실시예
도 7은 본 발명에 따른 제2 실시예로서의 연산 처리 장치(100)의 구축예를 도시한 반도체 칩의 평면도이다.
이 실시예에서는 도 1에 도시한 연산 처리 장치(100)를 구축하는 경우에, 미리 동일 반도체 칩상에 복수의 메모리 셀 및 산술 논리 연산 소자를 형성하고, 이 메모리 셀을 조합하여 레지스터 어레이(11) 및 ROM 셀(14)을 획정함과 아울러, 산술 논리 연산 소자를 조합하여 ALU(12), 디코더(13) 및 명령 실행 제어부(50)를 획정한다. 그 후, 레지스터 어레이(11), ROM 셀(24), ALU(12), 디코더(13) 및 명령 실행 제어부(50)를 미리 설정된 배선 정보에 기초하여 결선함과 아울러, ROM 셀(14)에 상술한 연산 프로그램(AP)를 기입하게 된다.
도 7에 도시한 연산 처리 장치(100)는 미리 동일 반도체 칩상에 복수의 메모리 셀(MSE) 및 산술 논리 연산 소자(LAY)를 형성한 프로그램 가능한 반도체 디바이스(PLD; Programmable Logic Device)이다. 이 반도체 디바이스의 행방향에는 예를 들면 N=7개(i=1,2,i···N)의 배선 패턴(이하, 행배선(CO1∼CO7)이라 함)이 배치된다. 열방향으로는 마찬가지로 하여 M=7개(j=1,2,j···M)의 배선 패턴(이하, 열배선(RO1∼RO7)이라 함)이 배치된다. 이 행배선(CO1∼CO7)과 직교하도록 배치된열배선(RO1∼RO7)에 의해 PLD가 격자 형상을 구성하게 된다. 각각의 격자내에는 복수의 메모리 셀(MSE) 및 산술 논리 연산 소자(LAY)를 1단위로 하는 메모리 셀/산술 논리 연산 소자 블록(이하, 간단히 셀 블록이라 함)(SEij)(i=1∼8, j=1∼8)이 형성되어 있다.
이 예에서는 8×8=64개의 셀 블록(SE11∼SE88)이 동일 반도체 칩상에 형성되어 있다. 1개의 셀 블록(SEij)의 상측 절반에는 복수의 메모리 셀(MSE)이 배치되고, 그 하측 절반에는 복수의 산술 논리 연산 소자(LAY)가 배치되어 있다. 또한, 레지스터 어레이(11) 및 ROM 셀(14)은 셀 블록(SEij)내의 메모리 셀을 조합하여 획정하는 경우와, 다른 셀 블록(SEij)내의 메모리 셀도 조합하여 레지스터 어레이(11) 및 ROM 셀(14)을 획정하는 경우를 상정하고 있다.
각각의 행 배선(CO1∼CO7)의 양 종단측 및 열 배선(RO1∼RO7)의 양 종단측에는 I/O 인터페이스(60∼63)가 형성되고, I/O 인터페이스(61)에는 행 배선(CO1∼CO7)의 일단측이 접속되고, 그 타단측에는 I/O 인터페이스(63)가 접속되어 있다. I/O 인터페이스(60)에는 열 배선(RO1∼RO7)의 일단측이 접속되고, 그 타단측에는 I/O 인터페이스(62)가 접속되어 있다. 셀 블록(SE11)에 가장 가까운 행 배선(CO1)이나 열 배선(RO1) 등을 사용하여 I/O 인터페이스(60) 또는 I/O 인터페이스(63)에 배선을 프로그램하는 것이 가능하게 되어 있다. 물론, 다른 행 배선(CO2∼CO7)이나 열 배선(RO2∼RO8) 등을 사용하여 다른 셀 블록(SEij1)에 배선을 프로그램하는 것이 가능하게 되어 있다.
4개의 I/O 인터페이스(60∼63)는 예를 들면, 격자내의 64개의 셀 블록(SEij)내에서, 외주 둘레부를 구성하는 셀 블록(SE11, SE12···SE18, SE11, SE21···SE81, SE81, SE82···SE88) 및 (SE18, SE28···SE88)을 따라 이들을 둘러싸도록 배치되어 있다. 각 셀 블록(SEij)내의 메모리 셀 사이, 산술 논리 연산 소자 사이의 배선이나, 셀 블록(SE11∼SE88)사이의 배선, 이들 사이를 결선하는 열 배선(RO1∼RO7)과 I/O 인터페이스 사이에는 복수의 스위치 소자(트랜지스터)가 도처에 배치되고, 배선 정보에 기초하여 스위치 소자를 온(ON)함으로써, 회로 요소간을 자유롭게 접속할 수 있게 되어 있다.
또, 이 단계에서는 레지스터 어레이(11), ALU(12), 디코더(13), ROM 셀(14) 및 명령 실행 제어부(50) 등이 획정되고 있지 않고, 범용성을 갖는 프로그래머블 로직 디바이스를 이루고 있다. 이 예에서는, 프로그래머블 로직 디바이스를 전자 기기에 CPU로서 편입하는 경우에, 각 기능 회로에 셀 블록(SE11∼SE88)을 할당하거나, 이들 사이를 열 배선(RO1∼RO7)이나 행 배선(CO1∼CO7) 등을 사용하여 결선하고, 당해 전자 기기에서 요구되는 연산 기능에 대하여 자유롭게 프로그램하여 사용자의 희망에 알맞는 CPU 기능 등을 구축하게 된다.
계속하여, 연산 처리 장치(100)의 레이 아웃 구축예에 대하여 설명하겠다. 도 8에 있어서는, 도 7에서 준비된 반도체 칩상에, 도 8에 도시한 파선으로 둘러싸는 듯한 레지스터 어레이(11), ALU(12), 디코더(13), ROM 셀(14), 실행 스테이트 머신(51), 명령 판독 스테이트 머신(52), 셀렉터(53), 프로그램 카운터(54), 인크리멘터(55), 셀렉터(56), 셀렉터(57), 입력용의 셀렉터(59), 래치 회로(58, 510, 511)를 획정하여 연산 처리 장치(100)를 레이아웃한다.
또, 실행 스테이트 머신(51), 명령 판독 스테이트 머신(52), 셀렉터(53), 프로그램 카운터(54), 인크리멘터(55), 셀렉터(56), 셀렉터(57), 입력용의 셀렉터(59) 및 래치 회로(58, 510, 511)는 도 1에 도시한 명령 실행 제어부(50)를 구성한다. 이 예에서, 레지스터 어레이(11)에는 예를 들면, 셀 블록(SE1, SE14, SE23 및 SE43)을 할당하여 구성한다. 8192개의 레지스터(r0∼rn)에는 이들의 셀 블록(SE1, SE14, SE23 및 SE43)의 메모리 셀(MSE)을 사용한다. 레지스터 어레이(11)는 기입 어드레스(Aw) 및 기입 제어 신호(Sw)에 기초하여 임의의 값을 보유하고, 및 판독 어드레스(Ar)에 기초하여 당해 값을 출력하는 복수의 레지스터(r0∼rn)를 구비하도록 메모리 셀(MSE)을 할당한다.
도 2에 도시한 기입 포트(15) 및 판독 포트(16)에는 예를 들면, 셀 블록(SE1, SE 14, SE23 및 SE43)의 산술 논리 연산 소자(LAY)의 입력 버퍼 회로나 출력 버퍼 회로를 사용하면 좋다. 이들 사이의 배선에는 열 배선(RO1, RO2) 및 행 배선(CO2, CO3, CO4)을 사용하여 결선하게 된다. ALU(12)에는 셀 블록(SE26 및 SE36) 등을 할당하여 구성한다. 셀 블록(SE26 및 SE36)의 산술 논리 연산 소자(LAY)를 사용하여 ALU(12)를 구축한다. 이들 사이의 배선에는 열 배선(RO1, RO2) 및 행 배선(CO5, CO6) 등을 사용하여 결선하게 된다.
디코더(13)에는 셀 블록(SE54 및 SE64) 등을 할당하여 구성한다. 셀 블록(SE54 및 SE64) 등의 산술 논리 연산 소자(LAY)를 사용하여 디코더(13)를 구축한다. 이들 사이의 배선에는 열 배선(RO5) 및 행 배선(CO3, CO4) 등을 사용하여 결선하게 된다. ROM 셀(14)에는 셀 블록(SE52 및 SE62) 등을 할당하여 구성한다.셀 블록(SE52 및 SE62) 등의 메모리 셀(MSE)을 사용하여 판독 전용 메모리를 구축한다. 산술 논리 연산 소자(LAY)의 입력 버퍼 회로나 출력 버퍼 회로를 사용하여 연산 프로그램(AP)의 기입/판독 회로를 구성하게 된다. 이들 사이의 배선에는 열 배선(RO5) 및 행 배선(CO1, CO2) 등을 사용하여 결선하게 된다.
실행 스테이트 머신(51)에는 셀 블록(SE56, SE57, SE58, SE66, SE67 및 SE68) 등을 할당하여 구성한다. 이들 사이의 배선에는 열 배선(RO5) 및 행 배선(CO5, CO6, CO7) 등을 사용하여 결선하게 된다. 실행 스테이트 머신(51)은 연산 명령 #I1∼#I4에 기초하여 하나의 레지스터(ri)를 선택하고, 여기에서 선택된 레지스터(ri)가 보유하는 값에 따라 다른 레지스터를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행하는 것이다. 명령 판독 스테이트 머신(52)에는 셀 블록(SE85 및 SE86) 등을 할당하여 구성한다. 이들 사이의 배선에는 열 배선(RO7) 및 행 배선(CO4, CO5, CO6) 등을 사용하여 결선하게 된다. 셀렉터(53) 및 프로그램 카운터(54)에는 셀 블록(SE73) 등을 할당하여 구성한다. 다른 회로와의 사이의 배선에는 열 배선(RO7) 및 행 배선(CO2) 등을 사용하여 결선하게 된다. 인크리멘터(55)에는 셀 블록(SE83) 등을 할당하여 구성한다. 다른 회로와의 사이의 배선에는 열 배선(RO7) 및 행 배선(CO2, CO3) 등을 사용하여 결선하게 된다.
셀렉터(56)에는 셀 블록(SE33) 등을 할당하여 구성한다. 다른 회로와의 사이의 배선에는 행 배선(CO3 및 CO4) 등을 사용하여 결선하게 된다. 셀렉터(56)는 하나의 레지스터를 선택하기 위한 판독 실행 어드레스(Ar) 또는 당해 레지스터를 재차 선택하기 위한 판독 어드레스(Ar) 중의 어느 한쪽을 선택하는 것이다. 셀렉터(57)에는 셀 블록(SE34) 등을 할당하여 구성한다. 다른 회로와의 사이의 배선에는 행 배선(CO2 및 CO3) 등을 사용하여 결선하게 된다. 셀렉터(57)는 하나의 레지스터(ri)를 선택하기 위한 기입 실행 어드레스 또는 당해 레지스터를 재차 선택하기 위한 기입 어드레스(Aw) 중의 어느 한쪽을 선택하는 것이다.
입력용의 셀렉터(59)에는 셀 블록(SE12, SE22) 등을 할당하여 구성한다. 다른 회로와의 사이의 배선에는 열 배선(RO1) 및 행 배선(CO1) 등을 사용하여 결선하게 된다. 래치 회로(58)에는 셀 블록(SE35) 등을 할당하여 구성한다. 다른 회로와의 사이의 배선에는 열 배선(RO2) 및 행 배선(CO5) 등을 사용하여 결선하게 된다. 래치 회로(510)에는 셀 블록(SE37) 등을 할당하여 구성한다. 다른 회로와의 사이의 배선에는 열 배선(RO2) 및 행 배선(CO6, CO7) 등을 사용하여 결선하게 된다. 래치 회로(511)에는 셀 블록(SE41) 등을 할당하여 구성한다. 다른 회로와의 사이의 배선에는 열 배선(RO3) 및 행 배선(CO1) 등을 사용하여 결선하게 된다.
다음으로, 연산 처리 장치(100)의 배선 구축예에 대하여 설명하겠다. 도 9에 있어서는, 도 8에서 획정된 레지스터 어레이(11), ALU(12), 디코더(13), ROM 셀(14), 실행 스테이트 머신(51), 명령 판독 스테이트 머신(52), 셀렉터(53), 프로그램 카운터(54), 인크리멘터(55), 셀렉터(56), 셀렉터(57), 입력용의 셀렉터(59), 래치 회로(58, 510, 511)간을 배선 정보에 의해 결선하여 연산 처리 장치(100)를 구축하게 된다. 이 예에서는 전자 기기의 예를 들면, 프린트 배선 기판에, 연산 처리 장치(100)를 구축하는 프로그래머블 로직 디바이스를 부착함과 아울러, 재기록 가능한 비휘발성의 기억 장치의 일례가 되는 플래시 메모리(70)가 장착된다.
이 플래시 메모리(70)에는 각 셀 블록(SEij)내의 메모리 셀 사이, 산술 논리 연산 소자 사이의 배선이나 셀 블록(SE11∼SE88) 사이의 배선, 이들 사이를 결선하는 열 배선(RO1∼RO7)과 I/O 인터페이스 사이 등의 도처에 배치된 스위치 소자를 온(ON)하기 위한 배선 정보가 저장되어 있다.
도 10은 플래시 메모리(70)에 저장되는 배선 정보예를 도시한 표이다. 도 10에 도시한 배선 정보예에서는 배선 정보(D1∼D38···)에 대한 신호선(L1∼L38···)과 함께, 당해 신호선(L1∼L38)에 전송되는 신호 또는 DATA 등의 용도를 나타내고 있다. 배선 정보(D1∼D38···)는 회로 기술 언어에 의해 작성되고, 네트 리스트(결선 정보)로서 준비된다. 이 예에서 플래시 메모리(70)에 저장되는 배선 정보(D1∼D38···)는 당해 연산 처리 장치(100)의 기능에 따라서 수시로 재기록되는 것이다.
또, 연산 프로그램(AP)은 ROM 셀(14)에 기입하게 된다. 이 예에서 연산 프로그램(AP)에는 레지스터 상대 레지스터 어드레싱 처리를 실행하기 위한 연산 명령 #I1∼#I4이 포함되어 있다. 이 연산 프로그램(AP)을 배선 정보(D1∼D38···)와 링크시켜서 디코더(13)에 출력하도록 해도 좋다. 플래시 메모리(70)에 의해 ROM 셀(14)의 기능을 겸용할 수 있게 된다.
다음으로, 연산 처리 장치(100)에 있어서의 결선예에 대하여 설명하겠다. 도 11에 도시한 결선예에 따르면, 예를 들면 셀 블록(SE22)과 셀 블록(SE66)을 신호선(L24)으로 접속하는 경우, 셀 블록(SE22)과 열 배선(R03) 사이에 배치된 스위칭용 트랜지스터(T23)와, 열 배선(R03)과 행 배선(CO6) 사이에 배치된 트랜지스터(T63)와, 행 배선(CO6)과 셀 블록(SE66) 사이에 배치된 트랜지스터(T66)를 사용한다. 각각의 트랜지스터(T23, T63, T66)는 게이트 제어가능하게 되어 있다. 이것을 전제로 하여, 전원 온(ON)과 함께 플래시 메모리(70)로부터, 예를 들면 도 11에 도시한 표의 배선 정보(D24)가 판독된다. 배선 정보(D24)는 트랜지스터(T23, T63, T66) 각각의 게이트에 설정된다. 이에 따라, 각각의 트랜지스터(T23, T63, T66)가 온(ON)된다. 이들 트랜지스터(T23, T63, T66)의 온(ON)에 의해, 셀 블록(SE22)과 열 배선(R03) 사이, 열 배선(R03)과 행 배선(CO6) 사이 및 행 배선(CO6)과 셀 블록(SE66) 사이가 전기적으로 접속되어, 신호선(L24)을 구축할 수 있다. 이 예에서 셀 블록(SE22)은 셀렉터(59)에 할당되고, 셀 블록(SE66)은 실행 스테이트 머신(51)에 할당되어 있고, 신호선(L24)은 당해 셀렉터(59)의 선택 제어 신호(S24)를 전송할 때에 사용된다.
이와 같이, 각 셀 블록(SEij) 내의 메모리 셀 사이 등의 도처에 배치된 스위칭용의 트랜지스터에 배선 정보(D1∼D38···) 등이 설정되고, 이 배선 정보(D1∼D38···) 등에 기초하여 당해 트랜지스터에 의해 회로 요소 사이를 자유롭게 접속한다. 이에 따라, 레지스터 어레이(11), ALU(12), 디코더(13), ROM 셀(14) 및 명령 실행 제어부(50) 등을 결선하게 된다. 이 설정에 의해 ROM 셀(14)에 저장되는 연산 프로그램(AP)의 사이즈를 작게 할 수 있다.
계속하여, 연산 처리 장치(100)의 회로 구축예에 대하여 설명하겠다. 도 12는 전원 온(ON)과 함께 결선된 연산 처리 장치(100)의 회로도를 도시하고 있다. 도 1에 도시한 연산 처리 장치(100)의 구성도에 관하여 복수의 신호선 등을 기술한것이다. 여기에서 기술한 신호선은 플래시 메모리(70)에 기입되는 배선 정보(D1∼D38) 등에 의거하는 것이다. 배선 정보(D1∼D38) 등은 신호선마다 준비된다. 이 예에서는 배선 정보(D3)에 기초하여 도 11에 도시한 바와 같은 스위칭용의 트랜지스터가 온(ON)됨으로써, 신호선(L3)이 디코더(13)와 ROM 셀(14)을 접속한다. 신호선(L3)에는 연산 프로그램(AP)가 전송된다. 마찬가지로 하여 신호선(L4)은 배선 정보(D4)에 기초하여 디코더(13)와 명령 판독 스테이트 머신(52)을 접속한다. 신호선(L4)에는 명령 제어 신호(S4)가 전송된다.
신호선(L5)은 배선 정보(D5)에 기초하여 ROM 셀(14)과 명령 판독 스테이트 머신(52)과 프로그램 카운터(54)를 접속한다. 신호선(L5)에는 카운트 출력 신호(S5)가 전송된다. 신호선(L6)은 배선 정보(D6)에 기초하여 셀렉터(53)와 프로그램 카운터(54)를 접속한다. 신호선(L6)에는 셀렉터 출력으로서 분기 제어 신호(S27) 또는 인크리먼트 출력 신호(S7) 중의 어느 하나가 전송된다. 신호선(L7)은 배선 정보(D7)에 기초하여 인크리멘터(55)와 셀렉터(53)를 접속한다. 신호선(L7)에는 인크리먼트 출력 신호(S7)가 전송된다. 신호선(L9), 신호선(L10)은 배선 정보(D10)에 기초하여 디코더(13)와 실행 스테이트 머신(51)을 접속한다. 신호선(L9)에는 명령 신호(S9)가 전송되고, 신호선(L10)에는 각 인수 신호(S10)가 전송된다. 신호선(L11)은 배선 정보(D11)에 기초하여 데이터 버스(19A)와 입력용의 셀렉터(59)를 접속한다. 신호선(L11)에는 데이터(DATA)가 전송된다. 신호선(L12)은 배선 정보(D12)에 기초하여 레지스터 어레이(11)와 실행 스테이트 머신(51)을 접속한다. 신호선(L12)에는 기입 제어 신호(Sw)가 전송된다.
기입 어드레스선(L13)은 배선 정보(D13)에 기초하여 레지스터 어레이(11)와 셀렉터(57)를 접속한다. 기입 어드레스선(L13)에는 기입 어드레스(Aw)가 전송된다. 판독 어드레스선(L14)은 배선 정보(D14)에 기초하여 레지스터 어레이(11)와 셀렉터(56)를 접속한다. 판독 어드레스선(L14)에는 판독 어드레스(Ar)가 전송된다. 신호선(L15)은 배선 정보(D15)에 기초하여 래치 회로(511)와 어드레스 버스(19B)를 접속한다. 신호선(L15)에는 외부 어드레스가 전송된다. 신호선(L16)은 배선 정보(D16)에 기초하여 실행 스테이트 머신(51)과 컨트롤 버스(19C)를 접속한다. 신호선(L16)에는 외부 제어 신호(S16)가 전송된다. 신호선(L17)은 배선 정보(D17)에 기초하여 래치 회로(511)와 실행 스테이트 머신(51)을 접속한다. 신호선(L17)에는 래치 제어 신호(S17)가 전송된다.
데이터 신호선(L20)은 배선 정보(D20)에 기초하여 레지스터 어레이(11)와, ALU(12)와, 데이터 버스(19A)와, 셀렉터(57)와, 셀렉터(56)와, 셀렉터(58)와, 입력용의 셀렉터(59)를 접속한다. 데이터 신호선(L20)에는 데이터(DATA), X값, Y값 등이 전송된다. 신호선(L21)은 배선 정보(D21)에 기초하여 ALU(12)와 입력용의 셀렉터(59)를 접속한다. 신호선(L21)에는 연산 결과값 Z가 전송된다. 신호선(L22)은 배선 정보(D22)에 기초하여 ALU(12)와 래치 회로(510)를 접속한다. 신호선(L22)에는 일치 검출 신호(S22)가 전송된다. 신호선(L23)은 배선 정보(D23)에 기초하여 실행 스테이트 머신(51)과 래치 회로(510)를 접속한다. 신호선(L23)에는 플래그 상태 신호(S23)가 전송된다. 신호선(L24)은 배선 정보(D24)에 기초하여 입력용의 셀렉터(59)와 실행 스테이트 머신(51)을 접속한다. 신호선(L24)에는 선택 제어 신호(S24)가 전송된다.
신호선(L25)은 배선 정보(D25)에 기초하여 입력용의 셀렉터(59)와 레지스터 어레이(11)를 접속한다. 신호선(L25)에는 데이터, 연산 결과값 Z, 피수 X값 등이 전송된다. 신호선(L26)은 배선 정보(D26)에 기초하여 실행 스테이트 머신(51)과 명령 판독 스테이트 머신(52)을 접속한다. 신호선(L26)에는 실행 종료 신호(S26)가 전송된다. 신호선(L27)은 배선 정보(D27)에 기초하여 실행 스테이트 머신(51)과 셀렉터(53)를 접속한다. 신호선(L27)에는 분기 제어 신호(S27)가 전송된다. 신호선(L28)은 배선 정보(D28)에 기초하여 실행 스테이트 머신(51)과 셀렉터(53)를 접속한다. 신호선(L28)에는 선택 제어 신호(S28)가 전송된다.
신호선(L29)은 배선 정보(D29)에 기초하여 명령 판독 스테이트 머신(52)과 실행 스테이트 머신(51)을 접속한다. 신호선(L29)에는 명령 실행 개시 신호(S29)가 전송된다. 신호선(L30)은 배선 정보(D30)에 기초하여 명령 판독 스테이트 머신(52)과 프로그램 카운터(54)를 접속한다. 신호선(L30)에는 카운트 제어 신호(S30)가 전송된다. 신호선(L31)은 배선 정보(D31)에 기초하여 셀렉터(57)와 실행 스테이트 머신(51)을 접속한다. 신호선(L31)에는 선택 제어 신호(S31)가 전송된다. 신호선(L32)은 배선 정보(D32)에 기초하여 셀렉터(56)와 실행 스테이트 머신(51)을 접속한다. 신호선(L32)에는 선택 제어 신호(S32)가 전송된다. 어드레스 신호선(L33)은 배선 정보(D33)에 기초하여 셀렉터(56)와 실행 스테이트 머신(51)을 접속한다. 어드레스 신호선(L33)에는 판독 어드레스(Ar)가 전송된다. 신호선(L34)은 배선 정보(D34)에 기초하여 래치 회로(58)와 실행 스테이트 머신(51)을 접속한다.신호선(L34)에는 래치 제어 신호(S58)가 전송된다.
신호선(L35)은 배선 정보(D35)에 기초하여 ALU(12)와 실행 스테이트 머신(51)을 접속한다. 신호선(L35)에는 ALU 제어 신호(S35)가 전송된다. 신호선(L36)은 배선 정보(D36)에 기초하여 래치 회로(58)와 ALU(12)를 접속한다. 신호선(L36)에는 래치 출력으로서 X값 "0" 등이 전송된다. 어드레스 신호선(L37)은 배선 정보(D37)에 기초하여 셀렉터(57)와 실행 스테이트 머신(51)을 접속한다. 어드레스 신호선(L37)에는 기입 어드레스(Aw)가 전송된다. 신호선(L38)은 배선 정보(D38)에 기초하여 실행 스테이트 머신(51)과 래치 회로(510)를 접속한다. 신호선(L38)에는 래치 제어 신호(S38)가 전송된다.
이와 같이, 본 발명에 따른 제2 실시예로서의 연산 처리 장치(100)의 구축 방법에 따르면, 전원 온(ON)과 함께 플래시 메모리(70)로부터 판독된 배선 정보(D1∼D38··· 등)에 기초하여 레지스터 어레이(11), ALU(12), 디코더(13), ROM 셀(14), 실행 스테이트 머신(51), 명령 판독 스테이트 머신(52), 셀렉터(53), 프로그램 카운터(54), 인크리멘터(55), 셀렉터(56), 셀렉터(57), 입력용의 셀렉터(59) 및 래치 회로(58, 510, 511)를 결선하게 된다. 따라서, 실행 스테이트 머신(51)에서 연산 명령 #I1∼#I4에 기초하여 하나의 레지스터(r10)를 선택하고, 이 레지스터(r10)가 보유하는 값 "0"에 의해 다른 레지스터(r0)를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행하는, 프로그램 가능한 연산 처리 장치(100)를 전원 온(ON)과 함께 구축할 수 있다. 1칩으로 메모리 셀을 포함하는 프로세서를 효율적으로 구축하는 것이 가능해진다.
이 장치 구축후의 디코더(13)에서는 ALU(12)를 동작시키기 위한 연산 프로그램(AP)으로부터 연산 명령 #I1∼#I4이 해독되고, 명령 실행 제어부(50)에서는 디코더(13)에 의해 해독된 연산 명령 #I1∼#I4을 실행하기 위하여 레지스터 어레이(11) 및 ALU(12)가 제어된다. ALU(12)에서는 레지스터 어레이(11)로부터 판독된 X값, Y값이 연산된다. 그 레지스터(r10)가 나타내는 값 "0"의 레지스터(r0)에 그 연산 결과값 Z를 저장할 수 있다.
또한, 명령 실행 제어부(50)에서는 PLD 내부의 메모리 기능을 갖는 부분 모두를 레지스터로서 취급할 수 있으므로, 메모리 셀과 레지스터를 구별하여 액세스하는 종류의 프로세서와 비교하여, 고속 동작이 가능하게 된다. 게다가, CPU나 RAM, ROM 등을 개별적으로 기판에 배치하는 경우와 비교하여 기판 점유 면적을 저감할 수 있다. 당해 연산 처리 장치(100)가 적용되는 휴대 단말 장치 등의 전자 기기의 컴팩트화를 도모할 수 있다.
(3) 제3 실시예
도 13은 본 발명에 따른 제3 실시예로서의 연산 처리 시스템(100')의 구성예를 도시한 블록도이다.
이 실시예에서는 복수의 레지스터를 지정하여 레지스터 상대 레지스터 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 실행하는 연산 처리 장치(제2 연산 처리 장치)(100')를 구비하고, 프로그램 작성계에서 작성된 압축 프로그램을 취득하여 레지스터 종류를 해독하고, 이 레지스터 종류에 기초하여 당해 레지스터를 지정하는 명령 비트수를 복원하고, 소정의 명령 길이의 명령 구조를 갖는 프로그램을 복원하도록 하여, 프로그램 데이터를 저장하는 ROM 등의 메모리 용량을 저감할 수 있도록 함과 아울러, 메모리 셀이나 논리 연산 소자로 이루어지는 PLD에 의해 프로세서를 구축하는 경우에, ROM으로서 기능시키는 메모리 셀의 점유율을 저감할 수 있도록 한 것이다(제2 연산 처리 방법). 또한, 프로그램 작성계에서는 레지스터의 사용 빈도에 따라서 명령 길이를 가변할 수 있도록 함과 아울러, 빈번하게 액세스하는 레지스터에는 짧은 길이의 명령을 세팅할 수 있도록 한다(제3 연산 처리 방법).
도 13에 도시한 연산 처리 시스템(10)은 한편으로, 소정의 프로그램 언어에 기초하여 레지스터 상대 레지스터 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 실행하기 위한 명령을 편집하여 프로그램을 작성하고, 다른 한편으로, 당해 프로그램과 복수의 레지스터를 사용하여 데이터를 처리하는 시스템이다. 연산 처리 시스템(10)에서는 프로그램 작성계 I를 이루는 프로그램 작성 장치(200)가 준비된다. 신규로 설계 제조되는 연산 처리 장치(100')를 동작시키기 위한 프로그램을 작성하기 위함이다. 연산 처리 장치(100')는 프로그램 실행계 II를 구성하고, 당해 장치(100')내에는 명령 실행 연산 수단, 기억부, 복수의 레지스터 등이 실장된다. 프로그램 작성 장치(200)에서는, 연산 처리 장치(100')에서 레지스터를 사용하는 빈도에 기초하여 당해 레지스터를 지정하기 위한 명령 비트수를 압축함과 아울러, 당해 프로그램의 명령 구조 중에 레지스터 종류를 기술하여 명령 길이가 다른 압축 프로그램(AP)을 작성하게 된다. 연산 처리 장치(100')에 실장되는 프로그램 저장용의 기억 수단의 메모리 용량을 삭감하기 위함이다.
프로그램 작성 장치(200)는 예를 들면, 데이터 베이스(21), 키보드(22), 마우스(23), 표시 장치(24) 및 제어 장치(25)를 갖고 있다. 데이터 베이스(21)에는 연산 처리 장치(100')의 프로그램 작성에 필요한 데이터가 저장된다. 예를 들면, C언어에 의한 프로그램의 기술에 필요한 "Global 변수 선언", "함수 선언", "Local 변수 선언", "대입", "가산", "비교" 및 "분기"가 저장된다. 데이터 베이스(21)에는 제어 장치(25)가 접속되어 있고, 이 제어 장치(25)에는 키보드(22), 마우스(23) 및 표시 장치(24)가 접속되어 있다. 프로그램 작성 장치(200)에서는 표시 장치(24)에 C언어에 의한 프로그램 기술 화면을 표시하여, 키보드(22) 및 마우스(23)를 사용하여 프로그램이 작성된다.
예를 들면, 신규한 설계 제조에 따른 연산 처리 장치(100')가 N개의 레지스터를 사용하는 경우로서, N개의 레지스터에 제1번 내지 제N번의 시리얼 번호를 부여했을 때, 제1번 내지 제K번 그룹의 레지스터를 사용 빈도가 높은 부류로 하여 "Local 변수 선언"이 이루어지고, 제K+1번 내지 제N번 그룹의 레지스터를 사용 빈도가 낮은 부류로 하여 "Global 변수 선언"이 이루어진다. 이들 선언은 키보드(22)나 마우스(23)를 사용하여 지정되고, 이것은 레지스터 종류를 2개로 분류하여 사용 빈도가 높은 레지스터는 짧은 명령 비트수로 명령 세팅하고, 사용 빈도가 낮은 레지스터는 긴 명령 비트수로 명령 세팅하기 위함이다. 연산 처리 장치(100')에 있어서 레지스터의 수가 예를 들면, 4000∼8000개 정도가 되면, 이것을 지정하는 명령 비트수가 12 내지 13비트 필요하게 된다.
제어 장치(25)에서는 레지스터의 사용 빈도에 따라서 명령의 길이를 가변하게 된다. 빈번하게 액세스하는 레지스터는 짧은 길이의 명령을 세팅하기 위함이다. 사용 빈도가 높은 레지스터는 짧은 명령 비트수가 할당되고, 사용 빈도가 낮은 레지스터는 긴 명령 비트수가 할당된다. 연산 처리 장치(100')에서는 이 프로그램 작성 장치(200)에서 작성된 압축 프로그램(AP)을 취득하여 레지스터 종류를 해독하고, 이 레지스터 종류에 기초하여 당해 레지스터를 지정하는 명령 비트수를 복원하고, 소정 길이의 명령에 기초하여 복수의 레지스터를 지정하여 임의의 연산을 실행하게 된다.
연산 처리 장치(100')는 예를 들면, 명령 해독 복원부(3), 기억부(4), 레지스터 어레이(11') 및 명령 실행 연산부(50’)를 갖고 있다. 레지스터 어레이(11')는 복수의 레지스터를 집합한 것이다. 기억부(4)에는 레지스터 어레이(11') 중에서 당해 레지스터를 지정하기 위한 압축 프로그램(AP)이 저장된다. 압축 프로그램(AP)은 프로그램 작성 장치(200)에서 작성된 것이 사용된다. 예를 들면, 압축 프로그램(AP)은 연산 처리 장치(100')에서 구축된 프로그램 저장용의 기억부(4)에, ROM 라이터 등을 사용하여 기입된다. 이것은 연산 처리 장치(100')에 관하여, 복수의 메모리 셀이나 산술 논리 소자에 의해 구성되는 프로그래머블 로직 디바이스(Programmable Logic Device; PLD)로부터 프로세서을 구축하는 경우가 있기 때문이다. ROM으로서 기능시키는 메모리 셀의 점유율을 저감할 수 있다. 물론, 프로그램 저장용의 기억부(4)를 연산 처리 장치(100')와는 별개로 제조하고, 각각의 기억부(4)에 압축 프로그램(AP)을 저장하고나서 동일 기판상에 실장하는 방법이어도 된다. 기억부(4)로서 판독 전용의 메모리(ROM)나 EEPROM(flash memory)이 사용되기때문이다.
기억부(4)에는 명령 해독 복원부(3)가 접속되어 있고, 이 기억부(4)로부터 압축 프로그램(AP)을 판독하여 레지스터 종류를 해독하고, 이 레지스터 종류에 기초하여 당해 레지스터를 지정하기 위한 명령 비트수를 복원하게 된다. 명령 길이를 정돈하고, 이 명령에 기초하여 복수의 레지스터를 지정하기 위함이다. 명령 해독 복원부(3)에는 명령 실행 연산부(50')가 접속되어 있고, 이 명령 실행 연산부(50')에는 레지스터 어레이(11')가 접속되어 있다. 명령 실행 연산부(50')에서는 명령 해독 복원부(3)에 의해 복원된 소정의 명령 길이의 프로그램에 기초하여 레지스터 어레이(11') 내에서 당해 레지스터를 지정하여 임의의 연산을 실행하게 된다.
계속하여, 본 발명에 따른 연산 처리 방법에 대하여, 당해 연산 처리 시스(10)에 있어서의 처리예에 대하여 설명하겠다. 도 14는 연산 처리 시스템(10)에 있어서의 처리예를 도시한 플로우차트이다. 이 시스템(10)에서는 프로그램 작성계 I에서 소정의 프로그램 언어에 기초하여 레지스터 상대 레지스터 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 실행하기 위한 명령을 편집하여 프로그램을 작성하고, 프로그램 실행계 II에서 당해 프로그램과 복수의 레지스터를 사용하여 데이터를 처리하는 경우를 전제로 한다. 이 연산 처리 장치(100')가 N개의 레지스터를 사용하는 경우로, N개의 레지스터에 제1번 내지 제N번의 시리얼 번호가 부여되는 경우를 예로 든다(제2 연산 처리 방법).
이것을 처리 조건으로 하여, 프로그램 작성계에서는 도 14a에 플로우차트의 스텝 A01에서 소정의 프로그램 언어에 기초하여 레지스터 상대 레지스터 어드레싱처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 실행하기 위한 명령을 편집한다. 그리고, 스텝 A02에서 레지스터를 사용하는 빈도에 기초하여 당해 레지스터를 지정하는 명령 비트수를 압축하고, 명령 길이를 짧게 한다. 예를 들면, 제K+1번 내지 제N번 그룹의 레지스터를 지정하는 명령 비트수를 n비트라 하고 제1번 내지 제K번 그룹의 레지스터를 지정하는 명령 비트수를 m비트라고 했을 때, 예를 들면, n-m=8비트가 되도록, 제1번 내지 제K번 그룹의 레지스터를 지정하는 명령 비트수가 압축된다.
그 후, 스텝 A03에서 당해 프로그램의 명령 구조 중에 레지스터 종류를 기술한다. 예를 들면, 피수 및 가수를 보유하는 1세트의 레지스터, 이것을 "레지스터 번호 1"의 레지스터의 종류를 "레지스터 종류 1", 및 "레지스터 번호 2"의 레지스터의 종류를 "레지스터 종류 2"라고 했을 때, 제1번 내지 제K번 그룹의 레지스터에 관하여 사용 빈도가 높은 경우는 "레지스터 종류 1" 및 "레지스터 종류 2"에 코드 "0"이 기술된다. 또한, 제K+1번 내지 제N번 그룹의 레지스터에 관하여 사용 빈도가 낮은 경우는 "레지스터 종류 1" 및 "레지스터 종류 2"에 코드 "1"이 기술된다.
그리고, 스텝 A04에서 명령 길이가 다른 압축 프로그램(AP)을 작성한다. 이 압축 프로그램(AP)에 있어서, 제1번 내지 제K번 그룹의 레지스터를 지정하는 명령 비트수에 관해서는 m비트이고, 제K+1번 내지 제N번 그룹의 레지스터를 지정하는 명령 비트수에 관해서는 n비트이다. 상술한 예에서 제1번 내지 제K번 그룹의 레지스터 지정을 포함하는 명령 형태에서는, 제K+1번 내지 제N번 그룹의 레지스터 지정을 포함하는 명령 형태와 비교하여 명령 길이가 16비트 짧아진다.
한편, 프로그램 실행계에서는 프로그램 작성계에서 작성된 압축 프로그램(AP)을 도14b에 도시한 플로우차트의 스텝 B1에서 취득한다. 예를 들면, 압축 프로그램(AP)은 연산 처리 장치(100')에서 구축된 프로그램 저장용의 기억부(4)에, ROM 라이터 등을 사용하여 기입된다. 이 압축 프로그램(AP)에서는 사용 빈도가 높은 레지스터는 짧은 명령 비트수=m비트로 명령 세팅되고, 사용 빈도가 낮은 레지스터는 긴 명령 비트수=n비트로 명령 셋트되어 있다. 그리고, 스텝 B2에서 명령을 실행할 것인가를 판단한다. 이 때의 판단은 주지 기술에 의해 이루어진다. 명령을 실행할 경우는 스텝 B3에서 레지스터 종류를 해독한다. 예를 들면, "레지스터 종류 1" 및 "레지스터 종류 2"에 관하여 코드 "0"으로부터 사용 빈도가 높은 레지스터로서 제1번 내지 제K번 그룹의 레지스터 번호가 해독되고, "레지스터 종류 1" 및 "레지스터 종류 2"에 관하여 코드 "1"로부터 사용 빈도가 낮은 레지스터로서 제K+1번 내지 제N번 그룹의 레지스터 번호가 해독된다.
그리고, 해독된 레지스터 종류에 기초하여 스텝 B4에서 당해 레지스터를 지정하는 명령 비트수를 복원한다. 예를 들면, 제1번 내지 제K번 그룹의 레지스터의 명령 비트수=m비트의 상위, 이 예에서 상위 8비트에 "0"이 부가된다. 제1번 내지 제K번 그룹의 레지스터의 명령 비트수가, 제K+1번 내지 제N번 그룹의 레지스터의 명령 비트수와 동일하게 하여 n비트로 정돈된다. 여기에서 복원된 소정 길이의 명령에 기초하여 스텝 B5에서 복수의 레지스터를 지정하여 임의의 연산을 실행한다. 그 후, 스텝 B6에서 연산 처리를 종료할 것인가를 판단한다. 연산 처리를 종료하지 않을 경우는 스텝 B2에 돌아가서 명령을 실행할 것인가를 판단하여 연산 처리를계속한다. 연산 처리를 종료할 경우는 전원 오프 정보 등을 검출하여 당해 연산 처리를 종료한다.
이와 같이, 본 발명에 따른 제3 실시예로서의 연산 처리 시스템(10)에 따르면, 한편으로, 소정의 프로그램 언어에 기초하여 레지스터 상대 레지스터 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 실행하기 위한 명령을 편집하여 프로그램을 작성하고, 다른 한편으로, 당해 프로그램과 복수의 레지스터를 사용하여 데이터를 처리할 경우에, 프로그램 작성 장치(200)에서는 레지스터를 사용하는 빈도에 기초하여 당해 레지스터를 지정하는 명령 비트수를 압축함과 아울러, 당해 프로그램의 명령 구조 중에 레지스터 종류를 기술하여 명령 길이가 다른 압축 프로그램(AP)이 작성된다. 연산 처리 장치(100')에서는, 프로그램 작성 장치(200)에서 작성된 압축 프로그램(AP)을 취득하여 레지스터 종류를 해독하고, 이 레지스터 종류에 기초하여 당해 레지스터를 지정하는 명령 비트수를 복원하고, 소정 길이의 명령에 기초하여 복수의 레지스터를 지정하여 임의의 연산이 실행된다. 따라서, 프로그램 작성계 I에서는 레지스터의 사용 빈도에 따라서 명령의 길이를 가변할 수 있으므로, 빈번하게 액세스하는 레지스터에 짧은 길이의 명령을 세팅할 수 있다. 이에 따라, 프로그램 실행계 II에서는 ROM 등의 기억부(4)에 압축한 명령을 세팅할 수 있고, 프로그램 데이터를 저장하는 기억부(4)의 메모리 용량을 저감할 수 있다. 또한, 메모리 셀이나 논리 연산 소자로 이루어지는 PLD에 의해 프로세서를 구축할 경우에, ROM로서 기능시키는 메모리 셀의 점유율을 저감할 수 있고, 그 만큼의 메모리 셀을 레지스터에 많이 할당할 수 있게 된다.
(4) 제4 실시예
도 15는 본 발명에 따른 제4 실시예로서의 마이크로프로세서(101)의 구성예를 도시한 블록도이다.
이 실시예에서는 연산 처리 장치(100')에 외부 메모리(2)를 접속하여 마이크로프로세서(101)를 구성하고, 복수의 레지스터를 지정하여 레지스터 상대 레지스터 어드레싱 처리를 실행하는 연산 프로그램에 의하여 연산 처리를 실행한다. 물론, 제1 실시예와 동일하게 하여, 레지스터 상대 레지스터 어드레싱 처리를 실행하기 위한 연산 명령을 압축 프로그램(AP)에 기술해도 된다. 이 경우에는, 도 15에 도시한 레지스터 어레이(11')의 입력 부분에 도 1에 도시한 바와 같은 셀렉터(56, 57)를 접속하고, 이 셀렉터(56, 57)를 실행 스테이트 머신(51)에서 제어하면 된다. 제1 실시예의 효과와 제2 실시예의 효과가 중복하여 얻어진다.
이 예에서는, 프로그램 작성계 I에서 작성된 기계어의 명령의 압축 프로그램(AP)을 취득하여 레지스터 종류를 해독하고, 이 레지스터 종류에 기초하여 당해 레지스터를 지정하는 명령 비트수를 복원하고, 소정의 명령 길이의 명령 구조를 갖는 프로그램을 복원하도록 하였다. 이렇게 함으로써 프로그램 데이터를 저장하는 ROM 등의 메모리 용량을 저감할 수 있도록 한 것이다.
도 15에 도시한 마이크로프로세서(101)는 레지스터를 사용하는 빈도에 기초하여 당해 레지스터를 지정하는 명령 비트수가 미리 압축됨과 아울러, 당해 프로그램의 명령 구조 중에 레지스터 종류가 기술된 명령 길이가 다른 압축 프로그램(AP)에 기초하여 데이터를 처리하는 장치다. 이 프로세서(101)에서는 프로그램 작성장치(200)에서 작성된 압축 프로그램(AP)을 취득하여 레지스터 종류를 해독하고, 이 레지스터 종류에 기초하여 당해 레지스터를 지정하는 명령 비트수를 복원하고, 소정 길이의 명령에 기초하여 복수의 레지스터를 지정하여 임의의 연산을 실행하게 된다.
마이크로프로세서(101)는 예를 들면, 레지스터 어레이(11'), 명령 비트 복원 디코더(제1 실시예의 디코더에 상응)(13), ROM(14) 및 명령 실행 연산부(50')를 갖고 있다. 레지스터 어레이(11')는 복수의 레지스터를 집합한 것이다. 레지스터 어레이(11')에는 예를 들면, 8192개×32bit의 레지스터(ri)(i=0∼8191)가 형성된다. 각각의 레지스터(ri)는 기입 어드레스(Aw) 및 기입 제어 신호(Sw)에 기초하여 임의의 값을 보유하고, 및 판독 어드레스(Ar)에 기초하여 피수 X나 가수 Y 등의 값을 출력하게 된다.
이 마이크로프로세서(101)는 기억부의 일례가 되는 프로그램 저장용의 ROM(14)이 실장되어 있고, 레지스터 어레이(11') 중에서 당해 레지스터(ri)를 지정하기 위한 압축 프로그램(AP)이 저장된다. 압축 프로그램(AP)은 기계어의 명령(Instruction) 구조를 갖고 있고, 프로그램 작성 장치(200)에서 작성된 것이 사용된다. 예를 들면, 압축 프로그램(AP)은 ROM 라이터 등을 사용하여 ROM(14)에 기입된다. 명령 실행시, ROM(14)은 예를 들면 프로그램 카운터(54)로부터의 카운트 출력 신호(S5)에 기초하여 압축 프로그램(AP)을 출력하게 된다.
ROM(14)에는 명령 비트 복원 디코더(13)가 접속되어 있고, 이 ROM(14)으로부터 기계어의 명령의 압축 프로그램(AP)을 판독하여 명령 제어 신호(S4), 명령 신호(S9) 및 각 인수 신호(S10)를 발생하게 된다. 명령 신호(S9)에는 load 명령, add 명령, cmp 명령, jump 명령이 포함된다. 각 인수 신호(S10)에는 액세스 방법 #1,액세스 방법 #2, "레지스터 종류 1", "레지스터 종류 2", 레지스터 번호 r0, r1···등, flag 상태(flag condition) 및 점프 어드레스 등이 포함된다.
이 압축 프로그램(AP)에는 레지스터 상대 메모리 어드레싱 처리를 실행하기 위한 연산 명령을 포함하고 있다. 이 처리에서는 연산 명령에 기초하여 하나의 레지스터를 선택하고, 여기에서 선택된 레지스터가 보유하는 값에 따라 외부 메모리(2)를 선택하게 된다. 이 처리는 예를 들면, 액세스 방법 #1에 의해 실행된다. 이 예에서 명령 비트 복원 디코더(13)는 "레지스터 종류 1" 및 "레지스터 종류 2"를 해독하고, 이 "레지스터 종류 1" 및 "레지스터 종류 2"에 기초하여 당해 레지스터(ri)를 지정하기 위한 명령 비트수=n비트를 복원하게 된다. 명령 길이를 압축전의 비트수로 정돈하고, 이 명령에 기초하여 복수의 레지스터(ri) 등을 지정하기 위함이다. 상술한 명령 제어 신호(S4)는 명령 판독 스테이트 머신(52)에 출력된다. 상술한 레지스터 어레이(11') 및 명령 비트 복원 디코더(13)에는 명령 실행연산부(50')가 접속되어 있다. 명령 실행 연산부(50')에서는 명령 비트 복원 디코더(13)에 의해 복원된 소정의 명령 길이의 프로그램에 기초하여 레지스터 어레이(11')안에서 당해 레지스터(ri)를 지정하여 임의의 연산을 실행하게 된다.
명령 실행 연산부(50')는 산술 논리 연산 유닛(Arithmetic and Logic Unit: 이하에서는 ALU라 함)(12), 실행 스테이트 머신(51), 명령 판독 스테이트 머신(52), 셀렉터(53), 프로그램 카운터(PC)(54), +1 인크리멘터(55), 입력용의 셀렉터(59), 래치 회로(58, 510, 511)를 갖고 있고, 레지스터 상대 메모리 어드레싱 처리를 실행하게 된다. 레지스터 어레이(11')에는 데이터 신호선(L20)이 접속되어 있고, 이 신호선(L20)을 통하여 ALU(12)가 접속되어 있다. ALU(12)에서는 레지스터 어레이(11') 중에서 지정된 레지스터로부터 판독된 X나 Y 등의 값을 연산하게 된다. 연산 결과의 값은 Z이다. 연산 종목은 덧셈, 곱셈, 뺄셈, 나눗셈 등이다. 연산 종목은 실행 스테이트 머신(51)으로부터 출력되는 ALU 제어 신호(S35)에 기초하여 설정된다. 데이터 신호선(L20)에는 ALU(12) 이외에 래치 회로(58, 511, 59) 등이 접속되어 있다. 데이터 신호선(L20)에는 DATA, 피수 X값, 가수 Y값 등이 전송된다.
명령 비트 복원 디코더(13)에는 실행 스테이트 머신(51) 및 명령 판독 스테이트 머신(52)이 접속되어 있고, 명령 비트 복원 디코더(13)에 의해 해독된 연산 명령을 실행하기 위하여 레지스터 어레이(11') 및 ALU(12)를 제어하게 된다. 명령 판독 스테이트 머신(52)에서는 명령 비트 복원 디코더(13)로부터 출력되는 명령 제어 신호(S4)에 기초하여 프로그램 카운터(54) 및 실행 스테이트 머신(51)을 제어한다. 예를 들면, 당해 머신(52)은 명령 비트 복원 디코더(13)로부터 명령 신호(S9) 및 각 인수 신호(S10)가 실행 스테이트 머신(51)에 출력됨과 동시에 명령 실행 개시 신호(S29)를 출력한다.
실행 스테이트 머신(51)에는 레지스터 어레이(11'), ALU(12), 래치 회로(58, 510, 511) 및 셀렉터(59)가 접속되어 있다. 당해 머신(51)에서는 명령 실행 개시 신호(S29)에 기초하여 명령의 실행을 개시한다. 예를 들면, 데이터의 기입시에는,기입 제어 신호(Sw)가 레지스터 어레이(11')에 출력되고, 셀렉터(59)에는 선택 제어 신호(S24)가 출력된다. 데이터의 판독시에는, 레지스터 어레이(11')에 판독 어드레스(Ar)가 출력된다. 연산시에는, 래치 제어 신호(S34)가 래치 회로(58)에 출력되고, 래치 회로(510)에는 래치 제어 신호(S38)가 출력된다. 당해 프로세서 외부에는 외부 제어 신호(S16)가 출력된다. 명령의 실행이 종료하면, 실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)에 실행 종료 신호(S26)를 출력하고, 프로그램 카운터(54)의 값을 진행하게 된다.
이 실행 스테이트 머신(51) 및 명령 판독 스테이트 머신(52)에는 셀렉터(53)가 접속되어 있고, 선택 제어 신호(S28)에 기초하여 인크리먼트 출력 신호(S7) 또는 분기 제어 신호(S27) 중의 어느 한쪽을 선택하고, 이것을 셀렉터 출력으로서 프로그램 카운터(54)에 출력하게 된다. 선택 제어 신호(S28)는 실행 스테이트 머신(51)으로부터 공급된다. 인크리먼트 출력 신호(S7)는 인크리멘터(55)로부터 셀렉터(53)에 출력된다. 프로그램 카운터(54)에서는 카운트 제어 신호(S30)에 기초하여 ROM(14)으로부터 압축 프로그램(AP)을 판독하는 장소가 지정된다. +1 인크리멘터(55)는 프로그램 카운터(54)의 카운트 출력 신호(S5)를 "+1" 하여 인크리먼트하게 된다. 카운트 제어 신호(S30)는 명령 해독 스테이트 머신(52)으로부터 공급된다. 이 카운트 출력신호(S5)는 +1 인크리멘터(55) 이외에 ROM(14)에 출력된다.
셀렉터(59)는 데이터 버스(19A), 레지스터 어레이(11') 및 ALU(12)에 접속되어 있고, 데이터 버스(19A)로부터 받아들인 데이터(DATA), 레지스터 어레이(11')로부터 출력되는 피수 X값(가수 Y값) 또는 ALU(12)로부터 출력되는 연산 결과값 Z 중의 어느 하나를 선택 제어 신호(S24)에 기초하여 입력 제어하게 된다. 래치 회로(58)는 레지스터 어레이(11')의 판독 포트와 ALU(12) 사이에 접속되어 있고, 래치 제어 신호(S34)에 기초하여 레지스터(ri)의 출력값 X를 래치하게 된다. 래치 회로(510)는 ALU(12)의 비교 출력부 등에 접속되어 있고, 래치 제어 신호(S38)에 기초하여 일치 검출 신호(S22)를 래치하고, 플래그 상태(flag condition) 신호(S23)를 출력하게 된다. 래치 회로(511)는 레지스터 어레이(11')의 판독 포트와 어드레스 버스(19B) 사이에 접속되어 있고, 래치 제어 신호(S17)에 기초하여 외부 어드레스를 래치하게 된다.
또, 실행된 명령에 의해 점프(명령 분기)가 발생한 경우는 점프 목적지의 어드레스를 나타내는 분기 제어 신호(S27)를 실행 스테이트 머신(51)으로부터 셀렉터(53)에 출력된다. 셀렉터(53)에서는 선택 제어 신호(S28)에 기초하여 그 분기 제어 신호(S27)를 선택하고, 이 분기 제어 신호(S27)를 프로그램 카운터(54)에 기입하게 된다. 또한, 실행 스테이트 머신(51), 셀렉터(59), 데이터 신호선(L20) 및 래치 회로(511)에는 I/O 인터페이스(60)를 통하여 외부 메모리(2)가 접속되어 있다. 레지스터 상대 메모리 어드레싱 처리에 기초하여 ALU(12)를 동작시키기 위함이다. I/O 인터페이스(60)와 외부 메모리(2) 사이는 데이터 버스(19A), 어드레스 버스(19B) 및 컨트롤 버스(19C)에 의해 접속되고, 데이터 버스(19A)에 의해 데이터가 전송되고, 어드레스 버스(19B)에 의해 어드레스가 전송되고, 컨트롤 버스(19C)에 의해 외부 제어 신호(S16)가 외부 메모리(2)에 전송된다. 외부 메모리(2)를 제어하기 위함이다. 외부 메모리(2)에는 예를 들면, 512M바이트×32비트의 RAM(수시기입 판독 가능한 메모리)이 사용된다.
도 16은 레지스터 어레이(11')의 내부 구성예를 도시한 블록도이다. 도 16에 도시한 레지스터 어레이(11')에 따르면, 예를 들면, 8192개의 32bit의 레지스터(ri)(i=0∼8191)가 구비되고, 각각의 레지스터(ri)의 입력에는 기입 포트(15)가 접속되어 있다. 1bit의 레지스터는 D형의 플립플롭 회로 등으로 구성된다. 기입 포트(15)는 도 15에 도시한 셀렉터(59)에 접속되어 있고, 기입 제어 신호(Sw) 및 기입 어드레스(Aw)에 기초하여, 데이터 버스(19A)로부터 취득한 데이터(DATA), 레지스터 어레이(11’)로부터 출력되는 피수 X값(가수 Y값) 또는 ALU(12)로부터 출력되는 연산 결과값 Z 중의 어느 하나를 레지스터(r0∼ri)에 기입하게 된다. 기입 포트(15)는 실행 스테이트 머신(51)에 접속되고, 기입 어드레스(Aw)를 공급하게 된다. 각각의 레지스터(ri)의 출력에는 판독 포트(16)가 접속되어 있다. 판독 포트(16)는 데이터 신호선(L20)을 통하여 도 15에 도시한 ALU(12), 래치 회로(58, 511), 셀렉터(59) 등에 접속되어 있고, 판독 어드레스(Ar)에 기초하여 지정된 레지스터(ri)로부터 데이터(DATA)를 판독하게 된다. 판독 포트(16)는 실행 스테이트 머신(51)에 접속되고, 판독 어드레스(Ar)를 공급하게 된다.
다음으로, 도 17a∼도 17e 및 도 18a∼도 18d를 참조하면서, ROM(14)에 세팅되는 명령의 구조예에 대하여 설명하겠다. 앞서 설명한 ROM(14)에 세팅되는 명령 형태는 도 17a∼도 17e에 도시한 바와 같이, #F1∼#F5의 5종류다. 마이크로프로세서(101)에서는 명령 형태 #F2∼#F4의 명령을 명령 형태 #F1의 명령의 형태로 복원하여 취급된다. 이들 명령 형태 #F1∼#F5에서 각각의 명령은 load, add 및 cmp 명령과, jump 명령으로 크게 둘로 나누어진다. 명령 형태 #F1∼#F4에 있어서, load 명령의 경우는 도 18a에 도시한 바와 같이 명령에 코드 "0"이 기술되고, add 명령의 경우는 명령에 코드 "1"이 기술되어고 cmp 명령의 경우는 명령에 코드 "2"가 각각 기술된다. 명령 형태 #F5는 jump 명령이고, 이 경우는 명령에 코드 "3"이 기술된다. cmp 명령에 관해서는 비교 결과가 동일하였던 경우는 도 15에 도시한 래치 회로(510)의 플래그 상태 신호(S23)에 기초하여 zero flag이 "1"로 세팅되고, 동일하지 않았던 경우는 "0"이 세팅된다.
이 예에서는, load, add 및 cmp 명령은 액세스하는 레지스터(ri)의 번호가 예를 들면, 5비트로 표현할 수 있을 때는 5비트, 그 이외는 13비트로 표현된다. 즉, 사용 빈도가 높은 제0번의 레지스터(r0)으로부터 제31번의 레지스터(r31)를 m=5비트로 표현한다. 사용 빈도가 낮은 제32번의 레지스터(r32)로부터 제8191번의 레지스터(r8191)를 m=13비트로 표현하게 된다. 명령 형태 #F1에서는 명령 길이가 32비트이고, "레지스터 번호 1"로 표시되는 레지스터(ri)의 명령 비트수는 n=13비트이고, "레지스터 번호 2"로 표시되는 레지스터(ri)의 명령 비트수도 n=13비트이다. 명령 형태 #F2에서는 명령 길이가 24비트이고, "레지스터 번호 1"로 표시되는 레지스터(ri)의 명령 비트수는 m=5비트이고, "레지스터 번호 2"로 표시되는 레지스터(ri)의 명령 비트수는 n=13비트이다.
또한, 명령 형태 #F3에서도 명령 길이가 24비트이고, "레지스터 번호 1"로 표시되는 레지스터(ri)의 명령 비트수는 n=13비트이고, "레지스터 번호 2"로 표시되는 레지스터(ri)의 명령 비트수는 m=5비트다. 명령 형태 #F4는 명령 길이가 16비트이고, "레지스터 번호 1"로 표시되는 레지스터(ri)의 명령 비트수는 m=5비트이고, "레지스터 번호 2"로 표시되는 레지스터(ri)의 명령 비트수도 m=5비트다. 어느 명령 형태 #F1∼#F4에 있어서도, 최초의 2비트는 명령의 종류를 나타내고 있다. 명령 종류에 관하여, load는 전송, add는 가산, cmp는 비교, jump는 제어 이행(분기)을 각각 나타내고 있다. load, add, cmp 명령의 경우는 명령의 뒤에 2비트의 액세스 방법 #1, #2가 이어진다. Operand는 왼쪽이 액세스 방법 #1, "레지스터 번호 1"로 표시되고, 오른쪽이 액세스 방법 #2, "레지스터 번호 2"로 표시된다.
즉, 액세스 방법 #1은 "레지스터 번호 1"로 표시되는 레지스터(ri)의 액세스 방법을 나타내고 있고, 액세스 방법 #2는 "레지스터 번호 2"로 표시되는 레지스터(ri)의 액세스 방법을 나타내고 있다. 액세스 방법 #1과 액세스 방법 #2는 각각 레지스터 번호 No. 1, 레지스터 번호 No. 2에 대응하고, 이들 사이에서 처리가 행해진다. 어느것이나 도 18b에 도시한 바와 같이 액세스 방법 #1, #2에는 2종류가 준비되어 있다. 액세스 방법 #1, #2에 관하여 코드 "0"이 기술된 경우는 레지스터 번호 2로 표시되는 레지스터(ri)에 대하여 직접 액세스 방법이다. 당해 레지스터 번호로 표시되는 레지스터(ri)의 값을 직접 사용하는 것을 나타내고 있다. 액세스 방법 #1, #2에 관하여 코드 "1"이 기술된 경우는 "레지스터 번호 1"로 표시되는 레지스터(ri)의 값을 어드레스로 하고, 당해 마이크로프로세서(101)에서 외부 메모리(2)에 대하여 액세스하는 방법이다(도 18b 참조).
또한, 도 17a∼도 17d에 있어서, 액세스 방법 #1, #2의 뒤에는 2비트의 "레지스터 종류 1", "레지스터 종류 2"가 계속하여 기술되어 있다. "레지스터 종류1"은 "레지스터 번호 1"로 표시되는 레지스터(ri)의 종류를 나타내고, "레지스터 종류2"는 "레지스터 번호 2"로 표시되는 레지스터(ri)의 종류를 나타내고 있다. 레지스터 종류는 도 18c에 도시한 바와 같이 2종류가 준비되어 있다. "레지스터 종류 1" 및 "레지스터 종류 2"에 관하여, 코드 "0"이 기술되는 경우는 레지스터 번호가 "31"이하에서 사용 빈도가 높은 레지스터(ri)를 나타내고 있다. 이 레지스터(ri)(i=0∼31)는 레지스터 번호를 m=5비트로 표현할 수 있다. 이 "레지스터 종류 1" 및 "레지스터 종류 2"에 관하여, "1"이 기술된 경우는 레지스터 번호가 "32"이상에서 사용 빈도가 낮은 레지스터(ri)를 나타내고 있다. 이 레지스터(ri)(i=32∼8191)는 레지스터 번호를 n=13비트로 표현하게 된다. 이와 같이, 레지스터 번호의 크기를 구별함으로써 프로그램을 압축할 수 있다. 이 "레지스터 종류 1", "레지스터 종류 2"의 뒤에는 "레지스터 번호 1", "레지스터 번호 2"가 계속하여 기술되어 있다. "레지스터 번호 1"은 예를 들면, 피수를 보유하는 레지스터(ri)를 나타내고, "레지스터 번호 2"는 가수를 보유하는 레지스터(ri)를 나타낸다.
또한, 도 17e에 도시한 jump 명령의 포맷에 따르면, 최초의 2bit에 명령이 기술되고, 이어지는 2bit에는 플래그 상태(flag condition)가 기술된다. 이어지는 20bit에는 점프 어드레스가 기술된다. 플래그 상태는 도 18d에 나타낸 바와 같이, 명령 실행 제어를 옮길 것인가 아닌가의 판단을 하기 위한 조건이다. 코드 "0"은 "무조건"으로 항상 제어를 옮긴다. 코드 "1"은 "zero flag"로 zero flag이 "1"인 경우에, 제어를 옮긴다. 코드 "2"는 "non-zero flag"로 zero flag이 "0"인 경우에 제어를 옮기게 된다. 코드 "3"은 미사용이다.
계속하여, 프로그램 작성계 I에 있어서의 처리예에 대하여 설명하겠다. 도 19는 프로그램 작성계 I에 있어서의 프로그램 작성예를 도시한 표이다. 도 19에 있어서, P1은 프로그램 기술 화면을 이미지하고, P2에는 그 기술 내용을 나타내고, P3에는 실시예에서 해당하는 조건을 기술한 것이다. 소정의 프로그램 언어에 기초하여 레지스터 상대 메모리 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 실행하기 위한 명령을, 도 1에 도시한 프로그램 작성 장치(200)에서 편집하여 압축 프로그램을 작성하기 위함이다.
프로그램 작성 장치(200)에서는 도 1에 도시한 표시 장치(24)에 도 19에 도시한 C언어에 의한 프로그램 기술 화면(P1)을 표시하여, 키보드(22) 및 마우스(23)를 사용하여 압축 프로그램이 작성된다. 이 때, 데이터 베이스(21)로부터 마이크로프로세서(101)의 프로그램 작성에 필요한 데이터가 판독된다. 예를 들면, C언어에 의한 프로그램의 기술에 필요한 "Global 변수 선언", "함수 선언", "Local 변수 선언", "대입", "가산", "비교" 및 "분기"가 판독된다. 이 예에서 신규한 설계 제조에 따른 마이크로프로세서(101)에서, N=8192개의 32비트의 레지스터(ri)를 사용하는 경우이고, 8192개의 레지스터(ri)에 제0번 내지 제8191번의 시리얼 번호를 부여했을 때, 제0번 내지 제31번 그룹의 레지스터(r0∼r31)를 사용 빈도가 높은 부류로 하여 "Local 변수 선언"이 이루어진다.
즉, 이 예에서는 제31번째 이하의 레지스터(ri)에 "Local 변수 선언"이 할당된다. 또한, 제32번 내지 제8191번 그룹의 레지스터(r32∼r8191)를 사용 빈도가 낮은 부류로 하여 "Global 변수 선언"이 이루어진다. 즉, 제32번째 이상의 레지스터(ri)에는 "Global 변수 선언"이 할당된다. 프로그램 작성 장치(200)에서는 "Global 변수 선언"이 이루어진 제32번 내지 제8191번 그룹의 레지스터(r32∼r8191)의 명령 비트수를 n=13비트라고 했을 때, Local 변수 선언이 이루어진 레지스터(r0∼r31)의 명령 비트수는 이것보다도 8비트 적은 m=5비트로 압축된다. 이와 함께, 당해 프로그램의 명령 구조 중에 "레지스터 종류 1", "레지스터 종류 2"를 기술하여 명령 길이가 다른 압축 프로그램(AP)을 작성하게 된다.
도 13에 도시한 제어 장치(25)에서는 레지스터(ri)의 사용 빈도에 따라서 명령의 길이를 가변하게 된다. 이 예에서는, 사용 빈도가 높은 레지스터(r0∼r31)를 짧은 명령 비트수 m=5비트로 명령 세팅하고, 사용 빈도가 낮은 레지스터(r32∼r8191)는 긴 명령 비트수 n=13비트로 명령 셋트하게 된다. 이렇게 하면, 빈번하게 액세스하는 레지스터(r0∼r31)는 짧은 길이의 명령을 세팅할 수 있어, 마이크로프로세서(101)에 실장되는 프로그램 저장용의 ROM(14)의 메모리 용량을 삭감할 수 있다.
계속하여, 프로그램 작성 장치(200)에 있어서의 컴파일 예에 대하여 설명하겠다. 도 20은 프로그램 작성 장치(200)에 있어서의 컴파일 예를 도시한 플로우차트(메인 루틴)이다. 도 21은 컴파일러에 있어서의 대입 및 연산 처리예를 도시하는 플로우차트(서브 루틴)이다.
이 실시예에서는 프로그램 작성계 I에서 C언어에 의한 프로그램에 기초하여 레지스터 상대 메모리 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 실행하기 위한 명령을 편집하여 압축 프로그램을 작성하는 경우를 전제로한다. 또한, 마이크로프로세서(101)가 8192개의 레지스터(r0∼r8191)를 사용하는 경우로, 8192개의 레지스터(ri)에 제0번 내지 제8191번의 시리얼 번호가 부여되는 경우를 예로 든다. 이것을 처리 조건으로 하여, 프로그램 작성계 I에서는 C언어에 의한 프로그램에 기초하여 명령을 편집하기 위하여, 도 20에 플로우차트의 스텝 C1에서 프로그램 어드레스를 "0"으로 한다. 그 후, 스텝 C2로 이행하여 C언어에 의한 프로그램을 1행 읽는다. 이 때, 표시 장치(24)의 프로그램 기술 화면(P1)에는, 예를 들면, "global 변수 선언"을 나타내는
int *read_add *write_add, counter, end_val;
이 표시되고, 또한 함수 선언을 나타내는
void main ()
{
이 표시된다.
그리고, 스텝 C3에서 당해 프로그램의 기술이 "global 변수 선언"인지를 체크한다. 당해 기술이 "global 변수 선언"인 경우는 스텝 C4로 이행하여 제32번째 이상의 레지스터(r32∼r8191)를 할당한다. 이 그룹의 레지스터(r32∼r8191)를 지정하는 명령 비트수를 m비트라고 했을 때, m=13비트이다. 명령은 명령 형태 #F1로 작성된다. 그 후, 스텝 C14로 이행한다. 또한, 스텝 C3에서 당해 기술이 "global 변수 선언"이 아닌 경우는 스텝 C5로 이행하여 "local 변수 선언"인가를 체크한다. 이 때, 표시 장치(24)의 프로그램 기술 화면(P1)에는, 예를 들면 "local 변수 선언"을 나타내는
int temp, added_val;
이 표시된다. 당해 기술이 "local 변수 선언"인 경우는, 스텝 C6로 이행하여 제31번째 이하의 레지스터(r0∼r31)를 할당한다. 레지스터(ri)를 사용하는 빈도가 높은 것부터, 당해 레지스터(ri)를 지정하는 명령 비트수 n을, "global 변수 선언"된 레지스터(r32∼r8191)보다도 8비트 적은 5비트로 압축하기 위함이다. 명령은 명령 형태 #F2 내지 #F4로 작성된다. 그 후, 스텝 C14로 이행한다.
상술한 스텝 C5에서 당해 기술이 "local 변수 선언"이 아닌 경우는 스텝 C7로 이행하여, C언어의 프로그램에서 대입·가산 처리 등의 실행을 나타내는 "do"가 기술되어 있는지를 체크한다. 이 때, 표시 장치(24)의 프로그램 기술 화면(P1)에는, 예를 들면, "do"를 나타낸다
do{
temp = *read_add;
temp = temp + added_val;
*write_add = temp
read_add + read_add + added_val;
write_add = write_add + added_val;
counter = counter + added_val;
}
가 표시된다. 이러한 대입·가산 등의 처리를 나타내는 "do"가 기술되어 있는 경우는, 스텝 C8로 이행하여 현재의 프로그램 어드레스를 기억한다. 그 후, 스텝 C14로 이행한다.
스텝 C7에서 "do"가 기술되어 있지 않는 경우는 스텝 C9로 이행하여 C언어의 프로그램에서 그동안의 처리를 나타내는 "while"이 기술되어 있는지를 체크한다. 이 때, 표시 장치(24)의 프로그램 기술 화면(P1)에는, 예를 들면, "while"을 나타내는
while(counter ! = end_val);
이 표시된다. 이러한 비교·분기 등의 처리를 나타내는 "while"이 기술되어 있는 경우는, 스텝 C10로 이행하여 대입·연산 처리를 실행한다. 예를 들면, 도 21에 나타낸 서브 루틴을 콜(call)하여, 그 플로우차트의 스텝 E1에서 C언어의 프로그램에 있어서, 당해 행이 "while"을 기술하고 있는 행인지가 체크된다. "while"이 기술되어 있는 행인 경우는, 스텝 E2로 이행하여 후속 처리에서 생성하는 명령을 cmp 명령으로 한다. 그 후, 스텝 E6로 이행한다.
스텝 E1에서 "while"이 기술되어 있지 않는 행인 경우는, 스텝 E3로 이행하여 연산 처리는 가산인가를 체크한다. 연산 처리가 가산인 경우는 스텝 E4로 이행하여 후속 처리에서 생성하는 명령을 add 명령으로 한다. 연산 처리가 가산이 아닌 경우는 스텝 E5로 이행하여 후속 처리에서 생성하는 명령을 load 명령으로 한다. 그 후, 스텝 E6로 이행한다. 스텝 E6에서는 레지스터(ri)에 기입되는 변수에 대응하는 레지스터 번호와, 레지스터 어레이(11')로부터 판독되는 변수에 대응하는 레지스터(ri)의 레지스터 번호를 조사할 수 있다. 기입 어드레스(Aw) 및 판독 어드레스(Ar)를 정하기 위함이다. 그 후, 스텝 E7로 이행한다.
스텝 E7에서는 양쪽의 레지스터 번호가 "32" 이상인지를 체크한다. 양쪽의 레지스터 번호가 "32" 이상인 경우는 스텝 E8로 이행하여 도 17a에 도시한 명령 형태 #F1로 명령을 생성한다. 이 명령 형태 #F1로 "레지스터 종류 1" 및 "레지스터 종류 2"에는 "1"이 기술된다. 이 때, "레지스터 종류 1" 및 "레지스터 종류 2"는 압축 프로그램의 명령 구조 중에 기술된다. 예를 들면, 제32번 내지 제8191번 그룹의 레지스터(r32∼r8191)에 관하여 "레지스터 종류 1" 및 "레지스터 종류 2"에 "1"이 기술된다. 그 후, 도 20에 나타낸 메인 루틴의 스텝 C10으로 리턴한다.
또한, 스텝 E7에서 양쪽의 레지스터 번호가 "32" 이상이 아닌 경우는 스텝 E9로 이행하여 양쪽의 레지스터 번호가 "31" 이하인지를 체크한다. 여기에서 양쪽의 레지스터 번호가 "31" 이하인 경우는 스텝 E10으로 이행하여 도 17d에 도시한 명령 형태 #F4로 명령을 생성한다. 이 명령 형태 #F4로 "레지스터 종류 1" 및 "레지스터 종류 2"에는 "0"이 기술된다. 이 때, "레지스터 종류 1" 및 "레지스터 종류 2"는 압축 프로그램의 명령 구조 중에 기술된다. 예를 들면, 제0번 내지 제31번 그룹의 레지스터(r0∼r31)에 관하여 "레지스터 종류 1" 및 "레지스터 종류 2"에 "0"이 기술된다. 그 후, 도 20에 나타낸 메인 루틴의 스텝 C10으로 리턴한다.
또한, 양쪽의 레지스터 번호가 "31" 이하가 아닌 경우는 스텝 E11로 이행하여 레지스터 어레이(11')로부터 판독되는 변수의 레지스터(ri)의 번호가 "32"이상인지를 체크한다. 판독되는 변수의 레지스터(ri)의 번호가 "32" 이상인 경우는, 스텝 E12로 이행하여 도 17b에 도시한 명령 형태 #F2로 명령을 생성한다. 이 명령 형태 #F2로 "레지스터 종류 1"에 "0"이 기술되고, "레지스터 종류 2"에는 "1"이 기술된다. 그 후, 도 20에 도시한 메인 루틴의 스텝 C10으로 리턴한다.
또한, 레지스터 어레이(11')으로부터 판독되는 변수의 레지스터(ri)의 번호가 "32" 이상이 아닌 경우는, 스텝 E13로 이행하여 도 17c에 도시한 명령 형태 #F3로 명령을 생성한다. 이 명령 형태 #F3에서는 "레지스터 종류1"에 "1"이 기술되고, "레지스터 종류 2"에 "0"이 기술된다. 그 후, 도 20에 도시한 메인 루틴의 스텝 C10으로 리턴한다. 그 후, 스텝 C11로 이행하여 jump 명령을 생성한다. jump 명령의 점프 목적지는 먼저 기억한 프로그램 어드레스를 사용한다. 그 후, 스텝 C14로 이행한다. 상술한 스텝 C9에서 "while"이 기술되어 있지 않는 경우는 스텝 C12로 이행하여 C언어의 프로그램에 있어서, 데이터의 대입 또는 가산인지를 체크한다. 데이터의 대입 또는 가산인 경우는 스텝 C13으로 이행하여 데이터의 대입 또는 연산 처리를 실행한다. 이 스텝 C13에서는, 도 21에 도시한 서브 루틴을 콜하여, 그 플로우차트의 스텝 E1∼E13를 거쳐서 도 20에 도시한 메인 루틴의 스텝 C13으로 리턴한다. 그 후, 스텝 C14로 이행한다.
또한, 스텝 C12에서 C언어의 프로그램에 있어서, 데이터의 대입 또는 가산이 아닌 경우는 스텝 C14로 이행한다. 스텝 C14에서는 C언어의 프로그램에 관하여 최후의 행인지를 체크한다. 최후의 행이 아닌 경우는, 스텝 C15로 이행하여 프로그램 어드레스를 진행한다. 그 후, 스텝 C2에 돌아가서 상술한 컴파일 처리를 반복하게 된다. 최후의 행에 이르러 이 컴파일 처리를 종료한다. 이에 따라, 도 17a∼도17e에 도시한 바와 같은 명령 형태 #F1∼#F5이고, 명령 길이가 다른 압축 프로그램(AP)을 작성할 수 있다. 이 압축 프로그램(AP)에 있어서, 제0번 내지 제31번그룹의 레지스터(r0∼r31)를 지정하는 명령 비트수에 관해서는 m=5비트이고, 제32번 내지 제8191번 그룹의 레지스터(r32∼r8191)를 지정하는 명령 비트수에 관해서는 n=13비트다.
계속하여, 프로그램 실행계 II에 있어서의 처리예에 대하여 설명하겠다. 도 22는 복원된 연산 프로그램에 의한 연산 명령의 예를 도시한 표이다. 도 23은 레지스터(r0, r1····r32, r33, r34, r35) 등의 상태예, 도 24는 외부 메모리(2)에 있어서의 데이터 저장예를 각각 나타낸 이미지도이다. 이 예에서는, 연산 처리 장치(100')에 접속된 외부 메모리(2) 중에 도 24에 도시한 바와 같은 10개의 메모리 셀의 배열을 2세트 준비한다. 한쪽은 메모리 배열 #M1이고, 다른 한쪽은 메모리 배열 #M2이다. 그리고, 도 22에 도시한 8개의 연산 명령(Instruction) #I1∼#I8에 기초하여, 그 1세트의 메모리 배열 #M1에 저장된 값에 "1"을 가산하고, 또 1세트의 메모리 배열 #M2에 그 결과를 저장하는 연산 처리의 예를 도시한다.
도 22에 도시한 연산 명령(Instruction) #I1∼#I8은 ROM(14)의 압축 프로그램(AP)을 복원한 후의 연산 프로그램에 의한 것이다. 이 연산 프로그램에서는 도 23에 도시한 바와 같이, 액세스 빈도가 높은 레지스터(ri)가 2개 있기 때문에, 이들을 각각 r0과 r1에 할당했다. 이에 따라, 프로그램 전체의 길이를 압축하기 전의 연산 프로그램과 비교하여 효율적으로 단축할 수 있었다. 또한, 도 23에 있어서, 레지스터 번호 r0으로 표시되는 레지스터는 일시적으로 사용되고, 레지스터 번호 r1로 표시되는 레지스터에는 가산값 "1"이 저장된다. 또한, 레지스터 번호 r32로 표시되는 레지스터에는 판독 어드레스 "0"이 저장되고, 레지스터 번호 r33으로표시되는 레지스터에는 기입 어드레스 "10"이 저장되고, 레지스터 번호 r34로 표시되는 레지스터에는 카운터의 초기값 "0"이 저장되고, 레지스터 번호 r35로 표시되는 레지스터에는 연산 횟수값(종료값) "10"이 저장된다.
도 22에 도시한 각각의 연산 명령 #I1∼#I8에는 니마닉에 의한 표현, 기계어에 의한 표현 및 처리의 내용이 나타나 있다. 연산 명령 #I1은 도 22에 도시한 명령 구조에 있어서, 기계어로 140020h에 의해 표시되는 load, r0, (r32)이고, 레지스터 어레이(11’)의 레지스터(r32)의 값을 어드레스로 하고, 외부 메모리(2)로부터 판독한 값을 레지스터(r0)에 저장하는 내용이다. 동작으로서는 예를 들면, 레지스터(r32)의 값을 "0"으로 했을 때, 도 24에 도시한 외부 메모리(2)의 판독 어드레스가 "0"인 내용인, 메모리 배열 #M1의 데이터 "0"이 판독되고, 이 데이터 "0"이 레지스터(r0)에 기입된다.
연산 명령 #I2는 기계어로 4001h에 의해 표시되는 add, r0, r1이고, 레지스터 어레이(11')의 레지스터(r0)에 레지스터(r1)의 값을 가산하여, 그 결과를 레지스터(r0)에 저장하는 내용이다. 동작으로서는 레지스터(r0)의 내용인 "0"에 레지스터(r1)의 값인 "1"이 가산되고, 그 결과 "1"이 레지스터(r0)에 기입된다. 연산 명령 #I3은 기계어로 280420h에 의해 표시되는 load, (r33), r0이고, 레지스터 어레이(11')의 레지스터(r33)의 값을 어드레스로 하여, 레지스터(r0)의 값을 외부 메모리(2)에 기입하는 내용이다. 동작으로서는 레지스터(r33)가 나타낸 외부 메모리(2)의 메모리 배열 #M2의 어드레스에 데이터 "1"이 기입된다.
연산 명령 #I4는 기계어로 480401h에 의해 표시되는 add, r32, r1이고, 레지스터 어레이(11')의 레지스터(r32)에 레지스터(r1)의 값을 가산하여, 그 결과를 레지스터(r32)에 저장하는 내용이다. 동작으로서는 레지스터(r32)의 내용인 "0"에 레지스터(r1)의 값인 "1"이 가산되고, 그 결과 "1"이 레지스터(r32)에 기입된다. 연산 명령 #I5는 기계어로 480421h에 의해 표시되는 add, r33, r1이고, 레지스터 어레이(11’)의 레지스터(r33)에 레지스터(r1)의 값을 가산하여, 그 결과를 레지스터(r33)에 저장하는 내용이다. 동작으로서는 레지스터(r33)의 내용인 "0"에 레지스터(r1)의 값인 "1"이 가산되고, 그 결과 "1"이 레지스터(r33)에 기입된다.
연산 명령 #I6은 기계어로 480441h에 의해 표시되는 add, r34, r1이고, 레지스터 어레이(11')의 레지스터(r34)에 레지스터(r1)의 값을 가산하여, 그 결과를 레지스터(r34)에 저장하는 내용이다. 동작으로서는 레지스터(r34)의 내용인 "0"에 레지스터(r1)의 값인 "1"이 가산되고, 그 결과 "1"이 레지스터(r34)에 기입된다. 이 연산 명령 #I4∼#I6에 의해 실행 스테이트 머신(51)내의 카운터에서는 판독 어드레스(Ar) 및 기입 어드레스(Aw)에 관하여 "1"이 가산된다. 연산 명령 #I7은 기계어로 8C044023h에 의해 표시되는 cmp, r34, r35이고, 레지스터 어레이(11')의 레지스터(r34)의 내용과 레지스터(r35)의 내용을 비교하고, 그 값이 동일한 경우는 zero flag에 "1"을 세팅하고, 다른 경우는 "0"으로 세팅하는 내용이다. 동작으로서는 레지스터(r34)와 레지스터(r35)의 값인 "1"과 "10"은 다르므로, zero flag에는 "0"이 세팅된다. zero flag의 값은 래치 회로(510)에 의해 보유되고, 이후의 명령에 의해 참조된다.
연산 명령 #I8은 기계어로 E00000h에 의해 표시되는 jump nz, LOOP이고,zero flag가 "0"인 경우는, LOOP로 표시되는 라벨에 제어를 옮기는 내용이다. 동작으로서는, zero flag가 "0"인 경우는 제어를 연산 명령 #I1로 옮긴다. 상기의 동작이 10회 반복되면 레지스터(r34)의 값이 "10"이 되고, 연산 명령 #I7에 의해 zero flag가 "1"로 세팅되고, 연산 명령 #I8에서 제어가 옮겨가지 않게 되고, 연산 처리를 종료하게 된다. 이와 같이, 모든 레지스터(ri)의 명령 비트수를 단일 방법으로 표현한 경우와 비교하여, 효율적으로 ROM(14)을 사용하는 것이 가능하게 된다.
계속하여, 마이크로프로세서(101)에 있어서의 동작예에 대하여 설명하겠다. 도 25는 마이크로프로세서(101)에 있어서의 동작예를 도시한 플로우차트이다. 도 26a 및 도 26b는 명령 비트 복원 디코더(13)에 있어서의 처리예를 도시한 플로우차트이다.
이 실시예에서는 마이크로프로세서(101)가 프로그램 실행계 II를 구성하고, ROM(14)으로부터 판독된 압축 프로그램(AP)으로부터 도 22에 도시한 연산 명령 #I1∼#I8을 포함하는 연산 프로그램을 복원한다. 이 때, 명령 형태 #F1∼#F4에 관하여 "레지스터 종류 1" 및 "레지스터 종류 2"에 코드 "0"이 기술되어 있는 경우는, 명령 비트 복원 디코더(13)에 의해 레지스터 번호의 확장이 행해진다. 이 때의 명령 비트의 확장에서는, 예를 들면, "레지스터 번호 1"의 명령 비트수 m=5비트의 상위에 8비트의 "0"을 추가하게 된다. 이 연산 프로그램에 기초하여, 도 24에 도시한 외부 메모리(2) 중의 메모리 배열 #M1의 값에 "1"을 가산하고, 메모리 배열 #M2에 저장하게 된다.
레지스터 어레이(11')의 레지스터 상태에 대하여는, 도 23에 도시한 바와 같이 예를 들면, 6개의 레지스터(r0, r1, r32, r33, r34, r35)에 관하여, r0이 부정(不定), r1이 초기값 "1", r32 및 r34가 모두 초기값 "0", r33 및 r35가 초기값 "10"이 설정된다. 이들 값을 기입하는 경우는, 실행 스테이트 머신(51)에서는 레지스터 어레이(11')에 기입 어드레스(Aw)가 출력되고, 그 초기값 "0", "1", "10"이 설정된다. 이것을 동작 조건으로 하여, 도 25에 도시한 플로우차트의 스텝 F1에서, 먼저, 명령 비트 복원 디코더(13)는 ROM(14)으로부터 압축 프로그램(기계어 명령)(AP)을 순차로 수취하고, 이 프로그램(AP)을 해독하여 소정의 명령 길이의 연산 명령 #I1∼#I8을 검출한다.
이 명령 비트 복원 디코더(13)는 예를 들면, 도 26a에 도시한 서브 루틴을 콜하여 그 플로우차트의 스텝 G1에서 명령 부분을 도출하고, 명령 신호(S9)를 실행 스테이트 머신(51)에 출력한다. 이와 함께, 명령 비트 복원 디코더(13)에서는 스텝 G2로 이행하여 당해 명령 형태가 jump 명령인지를 체크한다. 당해 명령 형태가 #F5로 표시되는 jump 명령인 경우는 스텝 G12로 이행하여 flag condition, jump address를 출력한다. 그 후, 메인 루틴의 스텝 F1로 리턴한다. 또한, 스텝 G2에서 당해 명령 형태가 jump 명령이 아닌 경우는, 스텝 G4로 이행하여 당해 명령 형태에 관하여 "레지스터 종류 1"에 기술되어 있는 코드는 "0" 또는 "1"인지를 체크한다. "레지스터 종류 1"에 코드 "0"이 기술되어 있는 경우는 스텝 G4로 이행하여 "레지스터 번호 1"의 명령 비트수 m을 5bit 길이로 하여 압축 프로그램(AP)으로부터 도출한다. 그 후, 스텝 G5로 이행하여 "레지스터 번호 1"의 명령 비트수m=5bit의 상위 8비트에 "0"을 부가하여 13bit 길이로 한다. 그 후, 도 26b에 도시한 플로우차트의 스텝 G7로 이행한다.
한편, 상술한 스텝 G3에서 "레지스터 종류 1"에 코드 "1"이 기술되어 있는 경우는 스텝 G6로 이행하여 "레지스터 번호 1"의 명령 비트수 n을 13bit 길이로 하여 압축 프로그램(AP)으로부터 도출한다. 그 후, 도 26b에 도시한 플로우차트의 스텝 G7로 이행하고, 당해 명령 형태에 관하여 "레지스터 종류 2"에 기술되어 있는 코드는 "0"또는 "1"인지를 체크한다. "레지스터 종류 2"에 코드 "0"이 기술되어 있는 경우는 스텝 G8로 이행하여 "레지스터 번호 2"의 명령 비트수 m을 5bit 길이로 하여 압축 프로그램(AP)으로부터 도출한다. 그 후, 스텝 G9로 이행하여 "레지스터 번호 2"의 명령 비트수 m=5bit의 상위 8비트에 "0"을 부가하여 13bit 길이로 한다. 그 후, 스텝 G11로 이행한다.
상술한 스텝 G7에서 "레지스터 종류 2"에 코드 "1"이 기술되어 있는 경우는 스텝 G10로 이행하여 "레지스터 번호 2"의 명령 비트수 n을 13bit 길이로 하여 압축 프로그램(AP)으로부터 도출한다. 그 후, 스텝 G11로 이행하여, "레지스터 번호 1", "레지스터 번호 2", "액세스 방법 #1" 및 "액세스 방법 #2"를 검출한다. 그 후, 도 25에 도시한 메인 루틴의 스텝 F1로 리턴한다. 따라서, 실행 스테이트 머신(51)에는 "레지스터 종류 1" 및 "레지스터 종류 2"는 출력되지 않고, 소정의 명령 길이의 연산 명령 #I1∼#I8에 의거하는 명령 제어 신호(S4), 명령 신호(S9) 및 각 인수 신호(S10)가 출력된다.
이 명령 신호(S9)에는 load 명령, add 명령, cmp 명령, jump 명령이 포함된다. 각 인수 신호(S10)에는 액세스 방법 #1,액세스 방법 #2, 레지스터 번호 r0, r1···등, flag 상태(flag condition) 및 점프 어드레스 등이 포함된다. 명령 제어 신호(S4)는 디코더(13)로부터 명령 판독 스테이트 머신(52)에 출력된다. 한편, ROM(14)에서 압축 프로그램(AP)을 판독하는 장소(어드레스)는 프로그램 카운터(54; PC)에 의해 지정된다. 이들 판독 동작은 판독 스테이트 머신(52)에 의해 제어된다.
명령 판독 스테이트 머신(52)에서는 명령 비트 복원 디코더(13)로부터 출력되는 명령 제어 신호(S4)에 기초하여 프로그램 카운터(54) 및 실행 스테이트 머신(51)을 제어한다. 예를 들면, 당해 머신(52)은 명령 비트 복원 디코더(13)로부터 명령 신호(S9) 및 각 인수 신호(S10)가 실행 스테이트 머신(51)에 출력됨과 아울러 명령 실행 개시 신호(S29)를 출력한다. 실행 스테이트 머신(51)에서는 명령 실행 개시 신호(S29)에 기초하여 명령의 실행을 개시한다. 예를 들면, 데이터의 기입시에는, 기입 제어 신호(Sw)가 레지스터 어레이(11')에 출력되고, 셀렉터(59)에는 선택 제어 신호(S24)가 출력된다. 데이터의 판독시에는, 레지스터 어레이(11')에 판독 어드레스(Ar)가 출력된다.
연산시에는, 래치 제어 신호(S34)가 래치 회로(58)에 출력되고, 래치 회로(510)에는 래치 제어 신호(S38)가 출력된다. 당해 프로세서 외부에는 외부 제어 신호(S16)가 출력된다. 명령의 실행이 종료하면, 실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)에 실행 종료 신호(S26)를 출력하고, 프로그램 카운터(54)의 값을 진행하게 된다. 프로그램 카운터(54)에서는 카운트 제어 신호(S30)에 기초하여 ROM(14)로부터 압축 프로그램(AP)을 판독하는 장소가 지정된다. +1 인크리멘터(55)는 프로그램 카운터(54)의 카운트 출력 신호(S5)를 "+1" 하여 인크리먼트하게 된다.
그리고, 스텝 F2에서 실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)의 명령 판독 제어를 받아서 연산 명령 #I1을 수취하면, 기계어로 140020h에 의해 표시되는 load, r0, (r32)에 기초하여 기입 신호(S16)를 외부 메모리(2)에 출력한다. 이 값은 레지스터 어레이(11')의 판독 어드레스(Ar)로서 사용된다. 레지스터 어레이(11')는 32번째의 값을 데이터 신호선(L20)에 출력한다. 이 값은 래치 회로(511)에 의해 보유되고, 어드레스 버스(19B)를 경유하고, 외부 메모리(2)에 출력된다. 그리고, 레지스터 어레이(11')의 레지스터(r32)의 값을 어드레스로 하고, 외부 메모리(2)로부터 판독한 값을 레지스터(r0)에 저장한다. 이 때, 레지스터(r32)의 값이 "0"이므로, 도 12에 나타낸 외부 메모리(2)의 어드레스가 "0"인 내용인 메모리 배열 #M1의 데이터 "0"이 판독되고, 이 데이터 "0"이 레지스터(r0)에 기입된다.
즉, 외부 메모리(2)로부터 어드레스 버스(19B)에 의해 전송된 어드레스(장소)의 데이터가 셀렉터(59)에 출력된다. 실행 스테이트 머신(51)에서는 이 데이터가 선택되도록, 선택 신호(S24)를 출력한다. 이에 따라, 데이터가 레지스터 어레이(11')에 입력된다. 그리고, 실행 스테이트 머신(51)에서는 기입 어드레스(Aw)= "0"을 레지스터 어레이(11')에 출력한다. 그 후, 실행 스테이트 머신(51)은 기입 신호(Sw)를 사용하여 실제로, 연산 결과값의 기입을 지시하게 된다. 그 후, 스텝F3에서 실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)의 명령 판독 제어를 받아서 연산 명령 #I2를 수취하면, 기계어로 4001h에 의해 표시되는 add, r0, r1에 기초하여 레지스터 어레이(11')의 레지스터(r0)에 레지스터(r1)의 값을 가산하고, 그 결과를 레지스터(r0)에 저장한다. 이 때, 레지스터(r0)의 내용인 "0"에 레지스터(r1)의 값인 "1"이 가산되고, 그 결과 "1"이 레지스터(r0)에 기입된다.
그리고, 스텝 F4에서 실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)의 명령 판독 제어를 받아서 연산 명령 #I3을 수취하면, 기계어로 280420h에 의해 표시되는 load, (r33), r0에 기초하여 레지스터 어레이(11')의 레지스터(r33)의 값을 어드레스로 하여, 레지스터(r0)의 값을 외부 메모리(2)에 기입한다. 이 때, 레지스터(r33)가 나타내는 외부 메모리(2)의 메모리 배열 #M2의 어드레스에 데이터 "1"이 기입된다. 그 후, 스텝 F5에서 실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)의 명령 판독 제어를 받아서 연산 명령 #I4를 수취하면, 기계어로 480401h에 의해 표시되는 add, r32, r1에 기초하여 레지스터 어레이(11')의 레지스터(r32)에 레지스터(r1)의 값을 가산하고, 그 결과를 레지스터(r32)에 저장한다. 이 때, 레지스터(r32)의 내용인 "0"에 레지스터(r1)의 값인 "1"이 가산되고, 그 결과 "1"이 레지스터(r32)에 기입된다. 이 연산 명령 #I4에 의해 실행 스테이트 머신(51)내의 카운터에서는 판독 어드레스(Ar) 및 기입 어드레스(Aw)에 관하여 "1"이 가산된다.
그리고, 스텝 F6에서 실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)의 명령 판독 제어를 받아서 연산 명령 #I5를 수취하면, 기계어로 480421h에의해 표시되는 add, r33, r1에 기초하여 레지스터 어레이(11')의 레지스터(r33)에 레지스터(r1)의 값을 가산하여, 그 결과를 레지스터(r33)에 저장한다. 이 때, 레지스터(r33)의 내용인 "0"에 레지스터(r1)의 값인 "1"이 가산되고, 그 결과 "1"이 레지스터(r33)에 기입된다. 이 연산 명령 #I5에 의해 실행 스테이트 머신(51) 내의 카운터에서는 판독 어드레스(Ar) 및 기입 어드레스(Aw)에 관하여 "1"이 가산된다. 그 후, 스텝 F7에서 실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)의 명령 판독 제어를 받아서 연산 명령 #I6을 수취하면, 기계어로 480441h에 의해 표시되는 add, r34, r1에 기초하여 레지스터 어레이(11')의 레지스터(r34)에 레지스터(r1)의 값을 가산하여, 그 결과를 레지스터(r34)에 저장한다. 이 때, 레지스터(r34)의 내용인 "0"에 레지스터(r1)의 값인 "1"이 가산되고, 그 결과 "1"이 레지스터(r34)에 기입된다. 이 연산 명령 #I6에 의해 실행 스테이트 머신(51) 내의 카운터에서는 판독 어드레스(Ar) 및 기입 어드레스(Aw)에 관하여 "1"이 가산된다.
이 예에서는, 스텝 F8에서 레지스터(r35)가 나타내는 값=10회에 도달했는지가 판별된다. 예를 들면, 실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)의 명령 판독 제어를 받아서 연산 명령 #I7을 수취하면, 기계어로 8C044023h에 의해 표시되는 cmp, r34, r35에 기초하여 레지스터 어레이(11')의 레지스터(r34)의 내용과 레지스터(r35) 내용을 비교하고, 그 값이 동일한 경우는, zero flag에 "1"을 세팅하고, 다른 경우는 "0"으로 세팅한다. 이 때, 레지스터(r34)와 레지스터(r35)의 값인 "1"과 "10"은 다르므로, zero flag에는 "0"이 세팅된다. zero flag의 값은 래치 회로(510)에 의해 보유되어, 이후의 명령에 의해 참조된다. 그리고,실행 스테이트 머신(51)은 명령 판독 스테이트 머신(52)의 명령 판독 제어를 받아서 연산 명령 #I8을 수취하면, 기계어로 E00000h에 의해 표시되는 jump nz, LOOP에 기초하여 zero flag이 "0"인 경우는, LOOP로 표시되는 라벨로 제어를 이행한다. zero flag이 "0"인 경우는 제어를 스텝 F2의 연산 명령 #I1로 옮긴다. 상기의 동작이 스텝 F8에서 10회 반복되면 레지스터(r34)의 값이 "10"이 되고, 연산 명령 #I7에 의해 zero flag가 "1"로 세팅되고, 연산 명령 #I8에서 제어가 옮겨가지 않게 되고, 연산 처리를 종료하게 된다.
이와 같이, 본 발명에 따른 제4 실시예로서의 마이크로프로세서(101)에 따르면, 8192개의 레지스터(r0∼r8191) 중에서 그 사용 빈도에 기초하여 당해 레지스터(ri)를 지정하는 명령 비트수가 미리 압축됨과 아울러, 당해 프로그램의 명령 구조 중에 "레지스터 종류 1" 및 "레지스터 종류 2"가 기술된 명령 길이가 다른 압축 프로그램(AP)에 기초하여 데이터를 처리하게 된다. ROM(14)에는 8192개의 레지스터(r0∼r8191) 중에서 당해 레지스터(ri)를 지정하기 위한 압축 프로그램(AP)이 기억된다. 명령 비트 복원 디코더(13)에서는, 이 ROM(14)으로부터 압축 프로그램(AP)을 판독하여 "레지스터 종류 1" 및 "레지스터 종류 2"가 해독되고, 이 "레지스터 종류 1" 및 "레지스터 종류 2"에 기초하여 당해 레지스터(ri)를 지정하기 위한 명령 비트수가 복원된다.
따라서, 레지스터(ri)의 사용 빈도에 따라서 가변된 명령 길이의 압축 프로그램(AP)으로서, 빈번하게 액세스하는 레지스터(r0∼r31)에는 짧은 길이의 명령이 세팅된, 압축 프로그램 데이터를 ROM(14)에 저장할 수 있으므로, 그 메모리 용량을저감할 수 있다. 이 예에서는 프로그램을 압축하기 전과 비교하여 16비트×32개×명령수 만큼 메모리 용량을 저감할 수 있다. 이에 따라, 메모리 셀이나 논리 연산 소자로 이루어지는 PLD에 의해 마이크로프로세서(101)를 구축하는 경우에, ROM으로서 기능시키는 메모리 셀의 점유율을 저감할 수 있고, 그 만큼의 메모리 셀을 레지스터에 많이 할당할 수 있게 된다.
이 실시예에서는, 연산 처리 장치(100')에 외부 메모리(2)를 접속하여 마이크로프로세서(101)를 구성하고, 복수의 레지스터를 지정하여 레지스터 상대 메모리 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 실행하는 경우에 관하여 설명하였으나, 이것에 한정되는 것은 아니고, 제1 실시예와 동일하게 하여, 레지스터 상대 레지스터 어드레싱 처리를 실행하기 위한 연산 명령을 압축 프로그램(AP)에 기초하여 연산 처리를 실행하도록 해도 된다. 이 경우에는 도 15에 도시한 레지스터 어레이(11')의 입력 부분에, 도 1에 도시한 바와 같은 셀렉터(56, 57)를 접속하고, 이 셀렉터(56, 57)를 실행 스테이트 머신(51)에서 제어하면 된다. 이와 같이 하면, 제1 실시예의 레지스터 어레이(11)를 수시 기입 및 판독 가능한 메모리와 같이 동작할 수 있다는 효과, 기판 점유 면적을 저감할 수 있다는 효과에 더하여, 제2 실시예의 프로그램 데이터를 저장하는 ROM 등의 메모리 용량을 저감할 수 있다는 효과를 중복하여 얻을 수 있게 된다.
본 발명은 각종 전자 기기에 내장 가능하고 프로그램 가능한 1칩 마이크로컴퓨터 등에, 또한 명령 실행 프로그램 등에 기초하여 각종 데이터 처리를 행하는CPU, MPU, PLD 등, 이들 조립 전자 부품에 적용하기에 매우 바람직하다.

Claims (25)

  1. 임의의 연산 프로그램에 기초하여 연산 처리를 행하는 장치에 있어서,
    기입 어드레스 및 기입 제어 신호에 기초하여 임의의 값을 보유하고, 및 판독 어드레스에 기초하여 당해 값을 출력하는 레지스터를 복수개 갖는 레지스터 어레이와,
    상기 레지스터 어레이로부터 판독된 값을 연산하는 연산부와,
    상기 연산부를 동작시키기 위한 연산 프로그램으로부터 연산 명령을 해독하는 명령 해독부와,
    상기 명령 해독부에 의해 해독된 연산 명령을 실행하기 위하여 상기 레지스터 어레이 및 연산부를 제어하는 명령 실행 제어부를 구비하고,
    상기 명령 실행 제어부는,
    상기 연산 명령에 기초하여 하나의 상기 레지스터를 선택하고,
    선택된 상기 레지스터가 보유하는 값에 따라 다른 레지스터를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행하는 것을 특징으로 하는 연산 처리 장치.
  2. 제1항에 있어서, 상기 연산 프로그램을 저장한 판독 전용 메모리 셀을 구비하는 것을 특징으로 하는 연산 처리 장치.
  3. 제1항에 있어서, 상기 연산 프로그램에는 상기 레지스터 상대 레지스터 어드레싱 처리를 실행하기 위한 연산 명령을 포함하는 것을 특징으로 하는 연산 처리 장치.
  4. 제1항에 있어서, 상기 레지스터 어레이 및 판독 전용 메모리가 복수의 메모리 셀에 의해 구성되고,
    상기 연산부, 명령 해독부 및 명령 실행 제어부가 복수의 산술 논리 연산 소자에 의해 구성되고,
    상기 메모리 셀 및 산술 논리 연산 소자를 동일 반도체 칩상에 구비한 프로그래머블 로직 디바이스에 의해 구성되는 것을 특징으로 하는 연산 처리 장치.
  5. 제1항에 있어서, 상기 명령 실행 제어부에는 상기 하나의 레지스터를 선택하기 위한 판독 실행 어드레스 또는 당해 레지스터를 재차 선택하기 위한 판독 어드레스 중의 어느 한쪽을 선택하는 제1 셀렉터와,
    상기 하나의 레지스터를 선택하기 위한 기입 실행 어드레스 또는 당해 레지스터를 재차 선택하기 위한 기입 어드레스 중의 어느 한쪽을 선택하는 제2 셀렉터를 갖는 것을 특징으로 하는 연산 처리 장치.
  6. 임의의 연산 프로그램에 기초하여 연산 처리를 행하는 장치를 구축하는 방법에 있어서,
    미리 동일 반도체 칩상에 복수의 메모리 셀 및 산술 논리 연산 소자를 형성하고,
    상기 메모리 셀을 조합하여 레지스터 어레이 및 판독 전용 메모리를 획정함과 아울러, 상기 산술 논리 연산 소자를 조합하여 연산부, 명령 해독부 및 명령 실행 제어부를 획정하고, 그 후, 상기 레지스터 어레이, 판독 전용 메모리, 연산부, 명령 해독부 및 명령 실행 제어부를 미리 설정된 배선 정보에 기초하여 결선함과 아울러, 상기 판독 전용 메모리에 임의의 연산 프로그램을 기입하는 것을 특징으로 하는 연산 처리 장치의 구축 방법.
  7. 제6항에 있어서, 상기 연산 프로그램에는 상기 레지스터 상대 레지스터 어드레싱 처리를 실행하기 위한 연산 명령을 포함하는 것을 특징으로 하는 연산 처리 장치의 구축 방법.
  8. 제6항에 있어서, 상기 배선 정보를 저장하는 재기록 가능한 비휘발성의 기억 장치가 설치되고,
    전원 온(ON)과 함께 상기 기억 장치로부터 배선 정보를 판독하여 설정하고,
    설정된 상기 배선 정보에 기초하여 상기 레지스터 어레이, 판독 전용 메모리, 연산부, 명령 해독부 및 명령 실행 제어부 사이를 결선하는 것을 특징으로 하는 연산 처리 장치의 구축 방법.
  9. 제6항에 있어서, 상기 기억 장치에 저장되는 배선 정보는 당해 연산 처리 장치의 기능에 따라서 수시로 재기록되는 것을 특징으로 하는 연산 처리 장치의 구축 방법.
  10. 제6항에 있어서, 상기 레지스터 어레이는 기입 어드레스 및 기입 제어 신호에 기초하여 임의의 값을 보유하고, 및 판독 어드레스에 기초하여 당해 값을 출력하는 복수의 레지스터를 갖는 것을 특징으로 하는 연산 처리 장치의 구축 방법.
  11. 제6항에 있어서, 상기 명령 실행 제어부는 상기 연산 명령에 기초하여 하나의 상기 레지스터를 선택하고, 선택된 상기 레지스터가 보유하는 값에 따라 다른 레지스터를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행하는 것을 특징으로 하는 연산 처리 장치의 구축 방법.
  12. 제6항에 있어서, 상기 명령 실행 제어부에는 상기 하나의 레지스터를 선택하기 위한 판독 실행 어드레스 또는 당해 레지스터를 재차 선택하기 위한 판독 어드레스 중의 어느 한쪽을 선택하는 제1 셀렉터와,
    상기 하나의 레지스터를 선택하기 위한 기입 실행 어드레스 또는 당해 레지스터를 재차 선택하기 위한 기입 어드레스 중의 어느 한쪽을 선택하는 제2 셀렉터가 구비되는 것을 특징으로 하는 연산 처리 장치의 구축 방법.
  13. 제6항에 있어서, 상기 연산부에서는 상기 레지스터 어레이로부터 판독된 값이 연산되고,
    상기 명령 해독부에서는 상기 연산부를 동작시키기 위한 연산 프로그램으로부터 연산 명령이 해독되고,
    상기 명령 실행 제어부에서는 상기 명령 해독부에 의해 해독된 연산 명령을 실행하기 위하여 상기 레지스터 어레이 및 연산부가 제어되는 것을 특징으로 하는 연산 처리 장치의 구축 방법.
  14. 임의의 연산 프로그램에 기초하여 연산 처리를 행하는 방법에 있어서,
    기입 어드레스 및 기입 제어 신호에 기초하여 임의의 값을 보유하고, 및 판독 어드레스에 기초하여 당해 값을 출력하는 레지스터를 미리 복수개 준비하고, 그 후,
    상기 연산 프로그램으로부터 연산 명령을 해독하고,
    상기 연산 명령에 기초하여 하나의 상기 레지스터를 선택하고,
    선택된 상기 레지스터가 보유하는 값에 따라 다른 레지스터를 선택하는 레지스터 상대 레지스터 어드레싱 처리를 실행함과 아울러, 상기 연산 명령에 기초하여 다른 상기 레지스터를 선택하고,
    선택된 다른 상기 레지스터가 보유하는 값과 상기 레지스터 상대 레지스터 어드레싱 처리에 의해 선택된 레지스터의 값을 연산하는 것을 특징으로 하는 연산 처리 방법.
  15. 제14항에 있어서, 상기 레지스터가 보유하는 값에 따라 선택되고 있는 레지스터에 상기 연산의 결과를 저장하는 것을 특징으로 하는 연산 처리 방법.
  16. 제14항에 있어서, 상기 연산 프로그램에는 상기 레지스터 상대 레지스터 어드레싱 처리를 실행하기 위한 연산 명령을 포함하는 것을 특징으로 하는 연산 처리 방법.
  17. 레지스터 상대 레지스터 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 행하는 장치에 있어서,
    복수의 레지스터와,
    상기 레지스터를 사용하는 빈도에 기초하여, 당해 레지스터를 지정하는 명령 비트수가 미리 압축됨과 아울러, 상기 프로그램의 명령 구조 중에 레지스터 종류가 기술된 명령 길이가 다른 압축 프로그램을 기억하는 기억부와,
    상기 기억부로부터 압축 프로그램을 판독하여 레지스터 종류를 해독하고, 당해 레지스터 종류에 기초하여 상기 레지스터를 지정하기 위한 명령 비트수를 복원하는 명령 해독부와,
    상기 명령 해독부에 의해 복원된 소정 길이의 명령에 기초하여 상기 레지스터를 지정하여 임의의 연산을 실행하는 명령 실행 연산부를 구비하는 것을 특징으로 하는 연산 처리 장치.
  18. 제17항에 있어서, 상기 레지스터 종류는,
    N개의 레지스터를 사용하는 경우에 있어서,
    상기 N개의 레지스터에 제1번 내지 제N번의 시리얼 번호를 부여했을 때,
    상기 제1번 내지 제K번 그룹의 레지스터를 사용 빈도가 높은 부류로, 상기 제K+1번 내지 제N번 그룹의 레지스터를 사용 빈도가 낮은 부류로 나누는 것을 특징으로 연산 처리 장치.
  19. 레지스터 상대 레지스터 어드레싱 처리를 실행하는 연산 프로그램에 기초하여 연산 처리를 행하는 연산 방법에 있어서,
    상기 레지스터를 사용하는 빈도에 기초하여, 당해 레지스터를 지정하는 명령 비트수가 미리 압축됨과 아울러, 상기 프로그램의 명령 구조 중에 레지스터 종류가 기술된 명령 길이가 다른 압축 프로그램을 기억하고,
    상기 압축 프로그램을 판독하여 레지스터 종류를 해독하고,
    당해 레지스터 종류에 기초하여 상기 레지스터를 지정하기 위한 명령 비트수를 복원하고,
    복원된 상기 소정 길이의 명령에 기초하여 상기 레지스터를 지정하여 임의의 연산을 실행하는 것을 특징으로 하는 연산 처리 방법.
  20. 제19항에 있어서, 상기 레지스터 종류는,
    N개의 레지스터를 사용하는 경우에 있어서,
    상기 N개의 레지스터에 제1번 내지 제N번의 시리얼 번호를 부여했을 때,
    상기 제1번 내지 제K번 그룹의 레지스터를 사용 빈도가 높은 부류로,
    상기 제K+1번 내지 제N번 그룹의 레지스터를 사용 빈도가 낮은 부류로 나누는 것을 특징으로 연산 처리 방법.
  21. 한편으로, 소정의 프로그램 언어에 기초하여, 레지스터 상대 레지스터 어드레싱 연산을 실행하기 위한 명령을 편집하여 프로그램을 작성하는 프로그램 작성 장치와, 다른 한편으로, 당해 프로그램과 복수의 레지스터를 사용하여 상기 레지스터 상대 레지스터 어드레싱 연산을 실행하는 연산 처리 장치를 갖는 연산 처리 시스템에 있어서,
    상기 프로그램 작성 장치는,
    상기 레지스터를 사용하는 빈도에 기초하여 당해 레지스터를 지정하는 명령 비트수를 압축함과 아울러, 당해 프로그램의 명령 구조중에 레지스터 종류를 기술하여 명령 길이가 다른 압축 프로그램을 작성하고,
    상기 연산 처리 장치는,
    상기 프로그램 작성 장치에서 작성된 압축 프로그램을 취득하여 레지스터 종류를 해독하고,
    상기 레지스터 종류에 기초하여 당해 레지스터를 지정하는 명령 비트수를 복원하고, 소정 길이의 명령에 기초하여 복수의 레지스터를 지정하여 임의의 연산을실행하는 것을 특징으로 하는 연산 처리 시스템.
  22. 제21항에 있어서, 상기 연산 처리 장치는,
    복수의 레지스터와,
    상기 레지스터를 지정하기 위한 압축 프로그램을 기억하는 기억부와,
    상기 기억부로부터 압축 프로그램을 판독하여 레지스터 종류를 해독하고, 당해 레지스터 종류에 기초하여 상기 레지스터를 지정하기 위한 명령 비트수를 복원하는 명령 해독부와,
    상기 명령 해독부에 의해 복원된 소정 길이의 명령에 기초하여 상기 레지스터를 지정하여 임의의 연산을 실행하는 명령 실행 연산부를 갖는 것을 특징으로 하는 연산 처리 시스템.
  23. 제21항에 있어서, 상기 레지스터 종류는,
    N개의 레지스터를 사용하는 경우에 있어서,
    상기 N개의 레지스터에 제1번 내지 제N번의 시리얼 번호를 부여했을 때,
    상기 제1번 내지 제K번 그룹의 레지스터를 사용 빈도가 높은 부류로,
    상기 제K+1번 내지 제N번 그룹의 레지스터를 사용 빈도가 낮은 부류로 나누는 것을 특징으로 하는 연산 처리 시스템.
  24. 프로그램 작성계에서 소정의 프로그램 언어에 기초하여 레지스터 상대 레지스터 어드레싱 연산을 실행하기 위한 명령을 편집하여 프로그램을 작성하고, 프로그램 실행계에서 당해 프로그램과 복수의 레지스터를 사용하여 상기 레지스터 상대 레지스터 어드레싱 연산을 실행하는 연산 처리 방법에 있어서,
    상기 프로그램 작성계에서는,
    상기 레지스터를 사용하는 빈도에 기초하여 당해 레지스터를 지정하는 명령 비트수를 압축함과 아울러, 당해 프로그램의 명령 구조 중에 레지스터 종류를 기술하여 명령 길이가 다른 압축 프로그램을 작성하고,
    상기 프로그램 실행계에서는,
    상기 프로그램 작성계에서 작성된 압축 프로그램을 취득하여 레지스터 종류를 해독하고,
    해독된 상기 레지스터 종류에 기초하여 당해 레지스터를 지정하는 명령 비트수를 복원하고,
    복원된 소정 길이의 상기 명령에 기초하여 복수의 레지스터를 지정하여 임의의 연산을 실행하는 것을 특징으로 연산 처리 방법.
  25. 제24항에 있어서, 상기 레지스터 종류는,
    N개의 레지스터를 사용하는 경우에 있어서,
    상기 N개의 레지스터 제1번 내지 제N번의 시리얼 번호를 부여했을 때,
    상기 제1번 내지 제K번 그룹의 레지스터를 사용 빈도가 높은 부류로,
    상기 제K+1번 내지 제N번 그룹의 레지스터를 사용 빈도가 낮은 부류로 나누는 것을 특징으로 하는 연산 처리 방법.
KR10-2004-7015082A 2002-03-27 2003-03-26 연산 처리 장치, 그 구축 방법, 연산 처리 시스템 및 연산처리 방법 KR20040097212A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2002088916A JP2003288204A (ja) 2002-03-27 2002-03-27 演算処理装置、その構築方法及び演算処理方法
JPJP-P-2002-00088916 2002-03-27
JPJP-P-2002-00195123 2002-07-03
JP2002195123A JP3698125B2 (ja) 2002-07-03 2002-07-03 データ処理システム、データ処理装置及びデータ処理方法
PCT/JP2003/003716 WO2003081422A1 (fr) 2002-03-27 2003-03-26 Processeur d'operations, procede de construction, systeme de traitement d'operations et procede de traitement d'operations

Publications (1)

Publication Number Publication Date
KR20040097212A true KR20040097212A (ko) 2004-11-17

Family

ID=28456288

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7015082A KR20040097212A (ko) 2002-03-27 2003-03-26 연산 처리 장치, 그 구축 방법, 연산 처리 시스템 및 연산처리 방법

Country Status (4)

Country Link
US (3) US7581083B2 (ko)
EP (1) EP1489493A1 (ko)
KR (1) KR20040097212A (ko)
WO (1) WO2003081422A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285402A (ja) * 2005-03-31 2006-10-19 Pioneer Electronic Corp 画像処理装置
WO2008006400A1 (en) 2006-07-11 2008-01-17 Freescale Semiconductor, Inc. Microprocessor and method for register addressing therein
US8407715B2 (en) * 2007-04-30 2013-03-26 National Tsing Hua University Live range sensitive context switch procedure comprising a plurality of register sets associated with usage frequencies and live set information of tasks
WO2009137108A1 (en) * 2008-05-08 2009-11-12 Mips Technologies, Inc. Microprocessor with compact instruction set architecture
US20100312991A1 (en) * 2008-05-08 2010-12-09 Mips Technologies, Inc. Microprocessor with Compact Instruction Set Architecture
US9900280B2 (en) * 2009-03-30 2018-02-20 Avaya Inc. System and method for managing incoming requests for a communication session using a graphical connection metaphor
CN104571949B (zh) * 2014-12-22 2017-07-07 华中科技大学 基于忆阻器实现计算与存储融合的处理器及其操作方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62251930A (ja) 1986-04-25 1987-11-02 Nec Corp 情報処理装置
JPH0399321A (ja) 1989-09-13 1991-04-24 Fujitsu Ltd 命令制御方式
JP3033597B2 (ja) 1990-08-06 2000-04-17 株式会社日立製作所 プライオリティーエンコーダ及びこれを用いた半導体集積回路
JPH0555907A (ja) 1991-08-23 1993-03-05 Kawasaki Steel Corp プログラマブル論理回路装置
US5890222A (en) * 1995-01-04 1999-03-30 International Business Machines Corporation Method and system for addressing registers in a data processing unit in an indirect addressing mode
US5493239A (en) * 1995-01-31 1996-02-20 Motorola, Inc. Circuit and method of configuring a field programmable gate array
JPH10320172A (ja) 1997-05-15 1998-12-04 Seiko Epson Corp プログラム圧縮方法およびプログラム復号方法ならびにプログラム格納装置
JP3989634B2 (ja) 1998-09-28 2007-10-10 株式会社ローラン 集積回路及び集積回路用のデータを記録した記録媒体
US6651160B1 (en) * 2000-09-01 2003-11-18 Mips Technologies, Inc. Register set extension for compressed instruction set
US7023744B1 (en) * 2003-11-18 2006-04-04 Xilinx, Inc. Reconfigurable SRAM-ROM cell

Also Published As

Publication number Publication date
US7581083B2 (en) 2009-08-25
EP1489493A1 (en) 2004-12-22
US20050149556A1 (en) 2005-07-07
US20070250685A1 (en) 2007-10-25
US20080046470A1 (en) 2008-02-21
WO2003081422A1 (fr) 2003-10-02

Similar Documents

Publication Publication Date Title
JP3101560B2 (ja) プロセッサ
US6484304B1 (en) Method of generating application specific integrated circuits using a programmable hardware architecture
US6163836A (en) Processor with programmable addressing modes
US7478351B2 (en) Designing system and method for designing a system LSI
JP2006146953A (ja) プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体
CN104375972A (zh) 用于可配置数学硬件加速器的微处理器集成配置控制器
JP2002539519A (ja) Vliwプロセッサにおけるレジスタ・アドレッシングの間接制御を提供するためのレジスタファイル索引付け方法及び装置
US20080046470A1 (en) Operation-processing device, method for constructing the same, and operation-processing system and method
JPH09294069A (ja) プログラマブルlsiおよびその演算方法
US20010025363A1 (en) Designer configurable multi-processor system
JP3805314B2 (ja) プロセッサ
Gokhale et al. High level compilation for fine grained FPGAs
JPH01119828A (ja) マイクロプロセッサ
JPH03216776A (ja) 集積回路装置及びそれにより構成されたマイクロプロセッサ
Lu et al. The MorphoSys dynamically reconfigurable system-on-chip
KR20030083611A (ko) 시스템 lsi의 설계방법 및 이를 기억하는 기억매체
Wilberg et al. Design flow for hardware/software cosynthesis of a video compression system
JP2004334429A (ja) 論理回路及びその論理回路上で実行するプログラム
KR19980018065A (ko) 스칼라/벡터 연산이 조합된 단일 명령 복수 데이터 처리
JP3841820B2 (ja) マイクロコンピュータ
JP5157129B2 (ja) 情報処理装置およびその回路設計方法
JP3698125B2 (ja) データ処理システム、データ処理装置及びデータ処理方法
US20050272197A1 (en) Semiconductor device
JP2003288204A (ja) 演算処理装置、その構築方法及び演算処理方法
US5864691A (en) Central processing unit with a selector that bypasses circuits where processing is not required

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application