KR100535852B1 - 데이타처리장치 - Google Patents

데이타처리장치 Download PDF

Info

Publication number
KR100535852B1
KR100535852B1 KR1019970001570A KR19970001570A KR100535852B1 KR 100535852 B1 KR100535852 B1 KR 100535852B1 KR 1019970001570 A KR1019970001570 A KR 1019970001570A KR 19970001570 A KR19970001570 A KR 19970001570A KR 100535852 B1 KR100535852 B1 KR 100535852B1
Authority
KR
South Korea
Prior art keywords
instruction
vliw
processor
instructions
risc
Prior art date
Application number
KR1019970001570A
Other languages
English (en)
Other versions
KR970059916A (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 KR970059916A publication Critical patent/KR970059916A/ko
Application granted granted Critical
Publication of KR100535852B1 publication Critical patent/KR100535852B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

마이크로 프로세서나 마이크로컴퓨터 등의 데이타처리장치에 관한 것으로서, 명령세트가 다른 프로세서에 있어서 상호외 명령을 실행할 수 있도록 하기 위해, 명령세트가 다른 프로세서 사이에 있어서, 한쪽의 프로세서가 소정의 동작을 실행하는 것에 의해서 다른 프로세서의 명령을 실행할 수 있도록 하며, 소정의 동작이라고 하는 것은 소정의 분기명령을 실행하는 것이나 특정의 어드레스공간으로의 분기 등이 사용되는 것이다.
이러한 것에 의해 특정의 명령세트를 갖는 프로세서를 다른 명령세트를 갖는 프로세서로 확장할 수 있고, 호환성을 유지하면서 확장할 수 있고, 예를 들면 RISC형 프로세서를 VLIW형 프로세서로 확장하는 경우가 적합하며, 또 다른 명령세트를 갖는 프로세서를 원칩으로 실현하는 것에 의해 연산유닛 등의 자원의 공유화에 의한 저코스트화나 안전성강화를 실현할 수 있다는 효과가 있다.

Description

데이타처리장치
본 발명은 마이크로 프로세서나 마이크로컴퓨터 등의 데이타처리장치에 관한 것으로서, 특히 소프트웨어의 호환을 유지해서 고속성능을 달성하는 데이타처리장치에 적용해서 유효한 기술에 관한 것이다.
마이크로 프로세서의 아키텍쳐에는 여러가지의 것이 존재한다. 예를 들면, CISC(Complexed Instruction Set Computer)형 마이크로 프로세서, RISC(Reduced Instruction Set Computer)형 마이크로 프로세서, VLIW(Very Long Instruction Word)(또는 LIW(Long Instruction Word))형 마이크로 프로세서 등을 들 수 있다.
CISC형 마이크로 프로세서는 예를 들면 8비트 또는 16비트를 최소명령길이 단위로 하고, 최소명령길이 단위의 정수배길이의 가변길이의 명령포맷으로 명령체제(명령세트)를 구성하고 있다. 최대명령길이는 48비트길이, 64비트길이, 80비트길이 등이다. 명령세트를 구성하는 명령수가 많고, 1명령이 여러개의 처리를 실행하고 또, 명령워드길이가 가변인 마이크로 프로그램 제어 등 때문에 하드웨어 량이 많아 고속성능을 따라가기 위해서는 난점이 있는 아키텍쳐라고 되어 있었다.
CISC형 마이크로 프로세서의 예로서는 모토롤라(Motorola)사의 680X0, 인텔(Intel)사의 80X86 등이 있다.
고속성능을 따라가는 하나의 해결책으로서 RISC형 마이크로 프로세서가 나오고 있다. RISC형 마이크로 프로세서는 16비트길이, 32비트길이 또는 64비트길이 등의 고정길이의 명령포맷으로, 1명령은 단순한 처리를 실행하고 비교적 적은 명령수로 명령체계를 구성하고 있다. 명령이 단순하기 때문에, 마이크로 프로세서의 제어부의 하드웨어량도 CISC형의 마이크로 프로세서에 비해 적고, 또 파이프 라인처리에도 적합하며, 비교적 고속성능을 내기 쉬운 아키텍쳐이다. 또한, 16비트길이 명령과 32비트길이 명령이 혼재한 명령포맷으로 명령체계를 구성한 것도 있다. RISC 프로세서의 예로서는 선 마이크로 시스템스(Sun Microsystems)사의 SP ARC, 밉스 테크놀로직스(MIPS Technologics)사의 MIPS(R3000 등) 등이 있다.
최근, 고속화를 위해 동작주파수를 향상시키는 방법 이외에 동시에 동작시키는 연산유닛의 수를 증가시키는 방법이 취해지고 있다. 이 여러개의 연산유닛을 동시에 실행하는 방식은 슈퍼스칼라(Superscalar)방식으로 불리우고 있다. 그러나, 슈퍼스칼라방식에 의해 여러개의 명령을 동시에 실행할 수 있는지 아닌지를 조사하는, 즉 명령의존성을 조사하는 기능이 필요하게 되어 회로규모가 증대하는 경향에 있다.
이것에 대해 고정길이지만, 긴 명령길이의 명령포맷으로 명령체계를 구성하는 프로세서로서 VLIW형 프로세서가 존재한다. VLIW 프로세서에서는 128비트이상의 긴 명령을 사용해서 여러개의 연산기가 동시에 동작한다, 동시에 동작하는 연산기의 수(병렬로 실행할 수 있는 처리명령수)에 있어서 VLIW방식은 슈퍼스칼라 방식보다 많다. VLIW형 프로세서에서는 소오스 프로그램의 컴파일(Compile)시에 미리 명령 의존성을 체크하고 동시에 실행할 수 있는 명령을 일괄해서 1명령으로 한다. 동시에 실행할 수 있는 명령수가 동시에 실행할 수 있는 최대명령수에 도달하지 않는 경우에는 NOP(No-operation)명령이 컴파일러(Compiler)에 의해서 삽입된다. VLIW형 프로세서에서는 실행시에 재차 명령 의존성을 체크할 필요가 없으므로, RISC형 마이크로 프로세서의 슈퍼스칼라방식에 비해 회로규모는 적어진다.
또한, VLIW형 프로세서의 예로서는 닛케이 일렉트로닉스 1989년 11월 27일호(no, 487) p. 196, p. 197에 기재된 멀티플로 컴퓨터(Multiflow Computer)사의 Trace ce/300 등이 있다.
한편, RISC형의 아키텍쳐의 채용 등에 의해 동작주파수의 향상이나 동시에 실행하는 명령수의 증가로 인해 마이크로 프로세서의 성능이 향상되어 왔다. 그 때문에 종래 전용 하드웨어나 전용 컨트롤러를 사용해서 실행하고 있던 동화상의 압축/신장(MPEG(Moving Picture Experts Group)디코더/인코더)나 3차원 그래픽처리를 소프트웨어에서 실행하는 것이 고려되고 있다.
MPEG디코더/인코더나 3차원 그래픽처리 등의 동일처리의 반복으로 다량의 데이타를 취급하는 소위 멀티미디어 용도의 처리에는 VLIW형 마이크로 프로세서가 적합하다고 되어 왔다.
한편, 종래의 마이크로 프로세서 또는 CPU(중앙처리장치)는 CISC형 또는 RISC형으로, 각각의 소프트웨어자산의 축적이 있다. CISC형, RISC형, VLIW형의 마이크로 프로세서는 각각 명령세트, 명령포맷, 어드레싱 모드, 프로그래밍 모델 등은 달라서 소프트웨어의 호환성은 없다.
마이크로 프로세서는 동일 아키텍쳐(명령체계를 포함함)에서는 성능향상에 한계가 있다. 그래서, 아키텍쳐변경이 요구되지만 지금까지 구축해 왔던 소프트웨어자산의 계승이 문제로 된다.
본 발명의 목적은 종래의 소프트웨어와 호환성은 유지하면서 새로운 아키텍쳐(명령체계)의 소프트웨어를 실행하는 고성능인 프로세서를 실현하는 것이다.
본 발명의 다른 목적은 프로세서 내부의 자원 예를 들면 연산유닛 등의 공유화 또는 공용화에 의한 하드웨어의 증가를 억제해서 고속성능을 실현하는 것이다.
또, 본 발명의 또 다른 목적은 프로세서 사이의 동작제어방식에 의한 고속화와 저소비전력화의 쌍방을 실현하는 것이다.
본 발명의 상기 및 그 밖의 목적과 새로운 특징은 본 명세서의 기술 및 첨부도면에서 명확하게 될 것이다.
본원에 있어서 개시되는 발명 중 대표적인 것의 개요를 간단히 설명하면 다음과 같다.
데이타처리장치는 제1 명령세트의 명령을 실행하는 제1 프로세서와 제1 명령세트와는 다른 제2 명령세트의 명령을 실행하는 제2 프로세서를 갖고, 상기 제1 프로세서가 상기 제1 명령세트 중의 소정의 명령을 실행했을 때, 상기 제2 프로세서가 상기 제2 명령세트의 명령은 실행한다.
기억장치에 기억되는 프로그램을 실행하는 데이타처리장치는 제1 명령세트의 명령에 의해서 구성되는 프로그램과 제1 명령세트와는 다른 제2 명령세트의 명령에 의해서 구성되는 프로그램을 상기 데이타처리장치의 어드레스공간에 배치한다.
상기 제1 명령세트의 명령은 가변길이이고, 상기 제2 명령세트의 명령은 고정길이로 한다. 상기 제1 명령세트의 명령의 최대워드 길이는 상기 제2 명령의 워드길이보다 긴 경우가 있다. 상기 제1 명령세트의 명령의 최대워드 길이는 상기 제2 명령의 워드길이보다 짧은 경우가 있다.
상기 제1 명령세트의 명령과 상기 제2 명령세트의 명령은 모두 고정길이인 경우가 있다. 상기 제1 명령세트의 명령의 워드길이는 상기 제2 명령의 워드길이보다 짧은 경우가 있다.
데이타처리장치는 연산기를 갖고 제1 명령군을 저장하는 제1 기억부에서 명령을 리드해서 실행하는 제1 데이타처리부, 병렬동작이 가능한 여러개의 연산기를 갖고 동시에 실행할 수 있는 명령을 1명령으로서 실행하는 제2 데이타처리부 및 상기 제2 데이타처리부가 실행하는 명령군을 저장하는 제2 기억부를 구비하고, 상기 제1 데이타처리부가 리드한 명령이 소정의 명령일 때, 상기 제2 데이타처리부에서 실행하는 명령을 상기 제2기억부에서 리드한다.
마이크로 프로세서는 RISC명령을 실행하는 RISC코어, VLIW명령을 저장하는 VLIW테이블, VLIW명령을 실행하는 VLIW코어 및 상기 RISC코어와 VLIW코어의 동작전환은 제어하는 VLIW 기동판정 유닛을 갖고, 상기 RISC코어가 RISC명령중 서브루틴 콜 또는 분기명령을 실행했을 때 분기할 곳(이하, 분기지(branch destination)이라 함) 어드레스에서 상기 VLIW테이블에서 VLIW명령을 리드하고, 상기 VLIW 기동판정 유닛이 상기 RISC코어에서 상기 VLIW코어로 동작을 이행하고, 상기 VLIW테이블에서 VLIW명령의 완료코드가 리드될 때까지 VLIW코어가 동작한다.
상기 마이크로 프로세서는 또 분기지 어드레스를 어드레스변환하는 TLB를 갖고, 상기 VLIW테이블에서 리드되는 VLIW명령은 확장하기 위한 신호를 어드레스변환시에 TLB에서 동시에 리드시킨다.
상기 마이크로 프로세서는 또 VLIW명령으로 분기한 후, 계속해서 실행되는 VLIW명령의 동작과 VLIW명령 실행후에 복귀하는 RISC명령의 동작에 관련성이 있는지를 조사하는 회로를 갖고, 관련성이 없는 경우에 VLIW명령의 완료를 기다리지 않고 복귀할 곳(이하, 복귀지(restoring destination)라고 함)의 RISC명령을 병렬로 실행할 수 있다.
상기 마이크로 프로세서에 있어서, VLIW명령의 실행을 금지하거나 실행을 제어하는 레지스터를 프로세서 내부에 갖고, VLIW명령의 실행금지시에는 VLIW명령과 동등한 동작을 실행하는 RISC명령열로 분기하는 것에 의해 VLIW코어의 동작을 정지시켜 저소비전력화를 도모하는 기능을 갖는다.
상기 VLIW테이블을 불휘발성 메모리에 내장한다. 상기 불휘발성 메모리는 마스크ROM, 플래시메모리, 강유전체메모리 중의 어느 하나인 것이 바람직하다.
상기 VLIW테이블을 휘발성 메모리에 내장한다. 상기 휘발성 메모리는 SRAM 또는 DRAM 중의 어느 하나인 것이 바람직하다.
상기 VLIW테이블을 RISC코어의 프로세서에 의해 리라이트 가능한 메모리에 내장하는 것이 바람직하다.
[발명의 실시형태]
실시예1
도 1에는 본 발명의 실시형태에 관한 마이크로 프로세서(100)의 블럭도가 도시되어 있다. 마이크로 프로세서(100)은 RISC명령의 처리를 실행하는 RISC코어부(106), VLIW명령의 처리를 실행하는 VLIW코어부(140) 및 데이타캐시(129)로 구성된다. 마이크로 프로세서(100)은 반도체집적회로 제조기술을 사용해서 단결정실리콘과 같은 1개의 반도체기판에 형성된다. 이 반도체기판은 수지몰드기술을 사용해서 소위 플라스틱 패키지에 봉지된다. RISC명령이라고 하는 것은 예를 들면 종래의 기술에 기재된 RISC형 마이크로 프로세서가 실행하는 명령이다. VLIW명령이라고 하는 것은 예를 들면 종래의 기술에 기재된 VLIW형 프로세서가 실행하는 명령이다.
RISC코어부(106)은 명령페치유닛(101), 명령캐시(107), RISC 디코드유닛(114), 부동소수점유닛(118), 정수연산유닛(119), 로드/스토어유닛(127)로 구성된다. 부동소수점유닛(118)은 부동소수점(floating point)데이타만을 취급하는 연산유닛으로서, 부동소수점 데이타의 연산실행 등을 실행한다. 정수연산유닛(119)는 정수(integer)데이타만을 취급하는 연산유닛으로서, 정수데이타의 연산실행 등을 실행한다.
VLIW코어부(140)은 VLIW 기동판정유닛(104), VLIW테이블(113), VLIW디코드유닛(115), N개의 연산유닛(120), VLIW로드/스토어유닛(131)로 구성된다.
명령페치유닛(101)이 명령 어드레스 버스(105)로 실행할 명령의 어드레스를 출력한다. RISC 명령 실행시에는 명령 어드레스 버스(105)의 어드레스에 대응하는 명령이 명령캐시(107)에서 명령버스(108)에 리드되고, RISC디코드유닛(114)에 있어서 RISC명령의 디코드를 실행한다. 또한, 명령캐시(107)에 해당하는 명령이 존재하지 않을(캐시미스) 때에는 어드레스버스(134)와 데이타버스(135)를 사용해서 버스컨트롤러(도시하지 않음)를 거쳐서 마이크로 프로세서 외부의 메모리에서 명령이 리드된다. RISC디코드유닛(114)에서의 디코드 결과는 RISC연산유닛 제어신호(117)을 통해서 부동소수점유닛(118)이나 정술연산유닛(119) 등의 제어가 실행된다. 도 1에서는 VLIW코어의 연산유닛(120)과 RISC코어의 정수연산유닛(119) 및 부동소수점유닛(118)을 서로 공유하고 있는 상태를 나타내고 있으므로, 연산유닛(120)으로의 액세스가 발생하는 경우도 있다.
또, 명령이 메모리액세스 명령이었던 경우에는 RISC로드/스토어유닛(127)로 액세스가 발생하고, 어드레스버스(126)에서 데이타캐시(129)로 액세스가 발생하고, 데이타버스(128), RISC용 데이타버스(121)을 통해서 데이타가 정수연산유닛(119)와 부동소수점유닛(118)의 레지스터에 저장된다. 데이타캐시(129)에 해당하는 데이타가 없는(캐시미스) 경우, 버스컨트롤러를 거쳐서 어드레스버스(139)와 데이타버스(138)을 사용해서 마이크로 프로세서 외부의 메모리를 액세스한다.
RISC명령의 실행중에 VLIW명령의 실행을 실행하기 위한 분기명령(RISC명령의 일부)이 발생한 경우, RISC 디코드유닛(114)에서 VLIW 분기명령 디코드신호(142)를 통해서 명령페치유닛(101)로 분기발생을 알린다, 신호 분기지 어드레스는 분기지 어드레스용 버스(136)을 통해서 전달된다. 레지스터파일내의 레지스터에 분기지 어드레스가 저장되어 있는 경우에는 분기지 어드레스용 버스(141)을 통해서 정수연산유닛(119) 등에서 RISC디코드유닛(114)로 어드레스가 전송된다. VLIW테이블(113)은 RISC코어의 메모리공간의 특정 어드레스공간에 할당되어 있고, 그 어드레스공간을 액세스하는 것에 의해 VLIW테이블(113)에 저장되어 있는 VLIW명령을 액세스하는 것이 가능하게 된다. 이것에 의해서 VLIW테이블(113)으로부터의 VLIW명령의 리드 및 리라이트를 실행할 수 있다.
VLIW 분기명령 디코드신호(142)를 통해서 분기 발생을 받은 명령페치유닛(101)은 VLIW명령 분기신호(103)을 통해서 VLIW 기동판정유닛(104)로 VLIW명령으로의 분기가 발생한 것을 알린다. VLIW 기동판정유닛(104)는 VLIW명령을 기동하는 조건을 판정하고, RISC코어 제어신호(109)를 통해 RISC 디코드유닛(114)로 명령 어드레스버스(105)의 어드레스에서 리드한 명령의 실행을 중지시킨다. RISC 디코드유닛(114)내 또는 VLIW디코드유닛(115)내의 레지스터에서 지정된 경우에는 소비전력저감을 위해 RISC코어(106) 전체 또는 일부의 클럭을 정지시킬 수 있다. 또한, VLIW명령을 실행하지 않는 경우에도 마찬가지로 VLIW코어 전체 또는 일부의 클럭을 정지시킬 수 있다.
VLIW테이블(113)에서 명령 어드레스 버스(105)의 어드레스를 사용하여 VLIW명령 버스(112)로 VLIW명령이 리드된다. VLIW 디코드유닛(115)는 VLIW명령버스(112)의 VLIW명령을 VLIW 기동판정유닛(104)에서 VLIW명령 디코드 기동신호(111)을 통해서 보내져 오는 기동조건에 따라서 디코드하고, VLIW 연산유닛 제어신호(116)을 통해서 VLIW 연산유닛(120) 또는 RISC코어부(106)의 정수연산유닛(119)나 부동 소수점유닛(118)의 각각의 제어를 병렬로 실행한다. VLIW 연산유닛(120)이라고 하는 것은 정수연산유닛, 부동소수점 연산유닛, 고정소수점데이타를 취급하는 DSP(Digital Signal Processor : 예를 들면 곱합연산) 등의 연산유닛이다. 도 1에는 각 연산유닛이 개별로 레지스터 파일을 갖는 로컬 레지스터 파일형의 프로세서의 예가 도시되어 있다. 각 연산유닛 사이의 데이타의 수수는 연산기 사이의 데이타버스(123)을 통해서 실행된다. VLIW명령에 메모리 액세스명령이 포함되어 있었던 경우, VLIW로드/스토어유닛(131)이 데이타캐시(129)매 대해 어드레스버스(125)와 데이타버스(130), VLIW용 데이타버스(124)를 사용하여 액세스가 발생한다.
VLIW명령이 연속해서 계속되는 경우에는 명령 어드레스버스(105)를 통해서 VLIW 기동판정유닛(104)내에 유지되어 있는 어드레스정보를 사용하여 명령 어드레스버스(132)의 어드레스와 VLIW 테이블 제어신호(133)을 통해서 VLIW 테이블(113)에서 VLIW명령이 리드된다. 리드된 VLIW명령이 마지막의 명령인 것을 나타내는 완료코드를 포함하고 있는 경우, VLIW 디코드유닛(115)가 VLIW 명령실행 상태신호(110)을 통해서 VLIW 기동판정유닛(104)에 VLIW명령열의 완료를 알린다. VLIW명령 실행 상태 신호(110)으로는 VLIW명령의 완료 이외에 인터럽트, 예외 등의 VLIW명령 실행에 영향을 미치는 정보도 출력된다. VLIW 기동판정유닛(104)는 VLIW명령열의 완료를 받고 VLIW명령 완료신호(102)와 RISC코어 제어신호(109)를 통해 VLIW명령의 완료를 명령페치유닛(101)과 RISC 디코드유닛(114)로 전달하고, RISC명령으로 복귀한다.
즉, RISC명령의 실행에는 RISC코어(106)은 사용하고, VLIW명령의 실행에는 VLIW코어(140)을 사용한다. VLIW코어(140)의 실행에서는 새로이 RISC명령에 추가된 VLIW명령으로의 분기명령 또는 특정 어드레스로의 분기를 트리거로 하고, VLIW명령 기동판정유닛(104)가 마이크로 프로세서 내부에 유지하는 VLIW테이블(113)에서 순차 VLIW명령을 VLIW디코더(115)에 리드한다. VLIW 명령실행후, 처리를 RISC명령열로 복귀한다. 즉, VLIW명령의 실행을 서브루틴화해서 VLIW테이블(113)에 저장하는 것에 의해 고속동작이 필요한 처리를 VLIW명령에 의해 실행하는 것이 가능하게 된다. 서브루틴화하는 것에 의해 VLIW회로를 갖지 않는 마이크로 프로세서라도 분기지에 VLIW명령과 동등한 동작은 하는 RISC명령열을 배치하는 것에 의해, 호환성의 유지가 가능하다.
또, 저소비전력동작이 필요하고 또한 VLIW명령을 사용하는 고속인 동작이 필요하지 않는 경우에는 내장 제어레지스터의 상태에 따라 VLIW코어(140)의 동작을 정지시키고, RISC코어(106)만으로 동작을 실행할 수도 있다. 반대로, RISC코어(106)의 동작이 필요하지 않는 경우에는 RISC코어(106)의 동작을 정지시키고 VLIW코어(140)만으로 동작시키는 것도 가능하다.
또, RISC명령의 실행중에 VLIW코어(140)의 연산기(레지스터 파일을 포함함)를 사용할 수 있고, VLIW명령 실행중에 RISC코어(106)의 연산기(레지스터 파일)을 사용할 수 있으므로, 자원의 공용이 가능하게 되어 반도체집적회로의 칩면적 저감이 가능하게 된다.
VLIW 기동판정유닛(104)는 VLIW명령 실행중에 실행중인 VLIW명령이 VLIW명령 실행 완료후에 복귀지의 RISC명령과 의존성이 없는지를 제어신호(137)을 통해서 얻어지는 디코드결과에 따라서 판정하고, 의존성이 없는 경우에는 VLIW명령 완료신호(102)와 RISC코어 제어신호(109)를 통해서 RISC명령과 VLIW명령의 병렬실행의 제어 선택이 가능하다.
VLIW테이블(113)에는 마스크ROM, EPROM(전기적 라이트 자외선 소거의 불휘발성메모리), EEPROM(전기적소거/라이트 가능한 불휘발성메모리), 플래시메모리(플래시EEPROM), 강유전체메모리(Ferroelectric Memory) 등의 불휘발성메모리, DRAM(다이나믹 RAM), SRAM(스테이틱 RAM) 등의 휘발성메모리가 사용된다. 리라이트 가능한 메모리, 예를 들면 EEPROM, 플래시메모리, 강유전체메모리, DRAM, SRAM 등을 사용한 경우, VLIW테이블 데이타버스(122)를 통해서 시스템에 따른 VLIW테이블을 설정하는 것이 가능하다. 이것에 의해서 VLIW동작중에 동적으로 VLIW테이블을 시스템에 최적인 구성으로 할 수 있다. 또, VLIW 기동판정유닛(104)내에 있는 레지스터로의 액세스에도 이 VLIW테이블 데이타버스(122)가 사용된다. SRAM을 사용하면 다른 메모리를 사용하는 경우에 비해 라이트 및 리드를 고속으로 할 수 있다. DRAM은 메모리소자가 1개인 트랜지스터로 구성되고, SRAM은 메모리소자가 4개 또는 6개인 트랜지스터로 구성되므로, DRAM을 사용하는 것에 의해 VLIW테이블을 SRAM을 사용하는 것보다 작게 할 수 있다.
실시예1의 변형예
도 2에는 도 1에 관한 마이크로 프로세서의 변형예가 도시되어 있다. 도 2에서는 RISC코어(106)과 VLIW코어(140)의 레지스터를 공통으로 갖는 글로벌 레지스터형의 마이크로 프로세서가 도시되어 있다. 도 1의 마이크로 프로세서(100)과 동일부분에는 동일기호가 사용되고 있다. 마이크로 프로세서(200)은 반도체 집적회로 제조기술을 사용해서 단결정실리콘과 같은 1개의 반도체기판에 형성된다. 이 반도체기판은 수지몰드기술을 사용해서 소위 플라스틱패키지에 봉지된다.
마이크로 프로세서(200)에서는 부동소수점유닛(118), 정수연산유닛(119), VLIW연산유닛(120)에서 연산유닛과 레지스터 파일 사이의 버스(202)를 통해서 어드레스 파일(201)과의 리드/라이트가 실행된다. 메모리 액세스명령의 경우에는 RISC용의 데이타버스(121), VLIW용 데이타버스(124)를 통해서 로드/스토어유닛(204)로 액세스가 발생한다. 레지스터 파일(201)과 로드/스토어유닛(204) 사이의 데이타 전송은 버스(203)을 통해서 실행된다. 로드/스토어유닛(204)와 데이타캐시(129) 사이의 데이타전송은 어드레스 버스(206)과 데이타버스(205)를 사용해서 실행된다. 도 2에서는 도 1과 달리 RISC 연산유닛 제어신호(117)과 VLIW 연산유닛 제어신호(116)이 제어할 수 있는 연산유닛을 각각의 코어의 연산유닛으로 한정하는 경우가 도시되어 있다.
레지스터 파일(201), 로드/스로어유닛(204) 및 데이타캐시(129)를 RISC코어(106)과 VLIW코어(140)에서 공유하고 있으므로, 반도체집적회로의 칩면적의 저감이 도모된다.
<VLIW코어의 상세>
도 3에는 도 1 및 도 2에 도시된 명령페치유닛(101), VLIW테이블(113), VLIW 기동 판정회로(104), VLIW 디코드유닛(104)의 상세블럭도가 도시되어 있다.
명령페치유닛(101)은 분기조건 판정회로(315), RISC코어용 프로그램 카운터(316), 가산기(317) 등으로 구성된다.
명령페치유닛(101)에서는 VLIW명령으로의 VLIW 분기명령 디코드신호(142)를 받고, 분기조건 판정회로(315)가 VLIW명령 분기신호(103)을 통해서 VLIW 기동 판정회로(104)로 VLIW명령으로의 분기가 발생한 것을 알린다. 분기조건 판정회로(315)는 VLIW 기동 판정회로(104)에서 VLIW명령 완료신호(102)를 통해서 VLIW명령이 완료되었는지 완료되지 않았는지의 판단도 실행한다. 이것에 의해 RISC코어(106), VLIW코어(140)의 병렬실행시에 VLIW코어(140)을 중복해서 기동하는 일이 없도록 하는 것이 가능하게 된다. VLIW명령으로의 분기가 발생했을 때, 분기지 어드레스용 버스(136)에서 RISC코어용 프로그램 카운터(PC)(316)에 설정된 어드레스를 명령 어드레스버스(105)로 출력한다. RISC코어용 프로그램 카운터(316)은 가산기(317)에 의해 갱신된다.
VLIW테이블(113)은 셀렉터(303), 어드레스 래치(304), 데이타래치(305), VLIW 테이블 저장 메모리(306) 등으로 구성된다.
VLIW테이블(113)내에서는 명령페치유닛(101)에서 명령 어드레스버스(105)를 통해서 설정되는 어드레스와 VLIW 기동 판정유닛(104)내에 유지되어 있는 VLIW용 프로그램 카운터(302)에서 명령 어드레스 버스(132)를 통해서 설정되는 어드레스의 선택을 셀렉터(303)을 사용해서 실행한다. 선택된 어드레스는 어드레스래치(304)에 설정되고, 이 어드레스를 사용해서 VLIW 테이블 저장 메모리(306)에서 VLIW명령이 VLIW명령 버스(112)로 출력된다. VLIW테이블의 변경은 어드레스래치(304)에 의해 지정된 어드레스가 지시하는 VLIW테이블 저장 메모리(306)에 대해 VLIW 테이블 데이타버스(122)로 출력된 데이타를 데이타래치(305)를 통해서 실행한다. 이들 VLIW테이블(113)내의 제어는 VLIW 기동판정유닛(104)내에 있는 테이블제어회로(307)이 VLIW테이블 제어신호(133)을 통해서 실행한다.
VLIW 기동판정유닛(104)는 명령 어드레스 버스(105)상의 어드레스를 유지하는 VLIW테이블용 프로그램 카운터(302), 그 프로그램 카운터(302)를 인크리먼트하는 가산기(301), 프로그램 카운터(302)로부터의 어드레스를 디코드하는 디코더(309), VLIW기동의 가부나 VLIW기동에 필요한 정보를 유지하는 VLIW 코어 제어레지스터(REG)(308), 디코드의 결과와 VLIW명령으로의 분기를 알리는 신호(103)과 VLIW코어 제어 레지스터(308)의 값과 VLIW명령 실행상태 신호(110) 등의 정보를 받고 VLIW의 기동을 판정하는 VLIW 기동 판정회로(310), -VLIW코어 제어 레지스터(308)의 정보 등에서 VLIW 테이블을 제어하는 테이블 제어회로(307) 등으로 구성된다. 또한, -VLIW코어 제어 레지스터(308)의 갱신은 VLIW테이블 데이타버스(122)를 통해서 실행된다.
VLIW디코드유닛(115)는 -VLIW명령버스(112)로부터의 VLIW명령을 선택하는 멀티플렉서(313), -VLIW명령버스(112)상의 VLIW명령 완료코드나 제어신호(317)상의 RISC명령 디코드정보를 받아 실행제어를 판정하는 조정회로(311), VLIW명령 디코드 기동신호(111)을 받아 VLIW연산기의 기동제어를 실행하는 기동회로(312), VLIW용으로 여러개 마련된 여러개의 연산유닛을 제어하는 VLIW 연산유닛 제어회로(314) 등으로 구성된다.
VLIW코어의 변형예
도 4에는 도 1 및 도 2의 마이크로 프로세서가 논리 어드레스를 물리 어드레스로 변환하는 메모리 매니지먼트 유닛(MMU)의 어드레스 변환 테이블(TLB)를 내장하고 있는 경우의 예가 도시되어 있다.
도 4는 도 3에 대해 어드레스 변환 버퍼(TLB)(401)이 명령페치유닛(101)과 VLIW테이블(113) 사이에 위치하고 있다. 도 3과 동일 부분은 동일 기호가 사용되고 있다.
명령 어드레스(105)(논리 어드레스)를 TLB(401)을 사용해서 명령 어드레스(403)(물리 어드레스)으로 변환하고 명령 어드레스(403)이 명령캐시(107), VLIW테이블(113), VLIW 기동판정 테이블(104)로 출력된다. TLB(401)에 있어서 명령 어드레스를 변환할 때에 VLIW 기동 보조 정보신호(402)를 리드하고, 이것을 이용해서 VLIW 기동판정회로(310)이나 기동회로(312)가 동작한다.
동작타이밍
도 5에는 VLIW 분기명령에 의해 VLIW명령이 RISC명령과 병렬로 실행하는 경우의 타이밍도와 VLIW명령의 코드할당의 예가 도시되어 있다.
VLIW 분기명령은 RISC명령의 1개로서, RISC명령1, 2, 3과 마찬가지로 RISC코어(106)에서 파이프라인처리에 의해 실행된다. (501), (504), (506), (507)은 그의 파이프라인 스테이지를 나타내고 있다. I는 명령페치, D는 명령코드, E는 실행, M은 메모리액세스, W는 라이트의 스테이지를 나타낸다. 또, VLIW명령1, 2, 3은 VLIW코어(140)에서 파이프라인처리에 의해 실행된다. (502), (503), (505)는 그의 파이프라인 스테이지를 나타내고 있다. 파이프라인의 VI, VD, VE, VM, VW는 각각 VLIW용의 명령페치, 명령디코드, 실행, 메모리액세스, 라이트의 스테이지를 나타낸다.
VLIW 분기명령에서 VLIW명령1로 3사이클후에 분기했다고 하면 VLIW명령1의 파이프라인(502)가 사이클4에서 개시한다. VLIW명령2 이후의 VLIW명령이 VLIW명령 실행후의 복귀지의 RISC명령과 의존성이 없는 경우, VLIW명령2의 실행(503)과 RISC명령1의 실행(504)를 병렬로 실행하는 것이 가능하다. VLIW명령3의 실행(505)와 RISC명령2의 실행(506)도 병렬로 동작시킬 수 있고, VLIW명령이 완료하면 VLIW명령용의 파이프라인은 사라지고 RISC명령3의 실행(507)이 실행된다.
VI스테이지에서 VLIW테이블에서 리드되는 VLIW명령의 코드할당의 예를 도 5의 하부에 도시한다. VLIW명령에는 여러개의 연산기를 제어하기 위한 코드가 1명령으로 채워져 있다. 이 VLIW명령의 명령길이는 128비트 또는 256비트의 고정 길이이다, (508)은 VLIW 연산기1을 제어하기 위한 필드, (509)는 VLIW 연산기2를 제어하기 위한 필드, (510)은 정수연산기를 제어하기 위한 필드, (511)은 부동 소수점 연산기를 제어하기 위한 필드, (512)는 VLIW명령의 완료나 그 밖의 정보를 저장하기 위한 필드 등으로 구성되어 있다. (508), (509), (510), (511), (512)의 각각의 필드는 32비트길이로서, (513)의 연산코드, (514)의 디스플레이스먼트, (515)의 소오스 레지스터1, 5, (516)의 소오스 래지스터2, (517)의 디스티네이션 레지스터 등의 할당이 실행되고 있다. 이 명령코드를 VLIW디코더가 디코드하고 각 연산기를 제어한다.
시스템구성
도 6에는 본 발명을 이용한 시스템의 전체도가 도시되어 있다. (601)은 1장 또는 여러장의 프린트기판상에 구성된 시스템으로서, 이 시스템에 디스플레이(611), CD-ROM(Compact Disc-ROM)(612), 비디오카메라(615), LCD(Liquid Crystal Display)(618), 키보드나 프린터 등의 주변장치(620) 등이 접속된다. 시스템(601)은프로세서(602), 프로그램 등을 저장하는 ROM(608), 데이타나 프로그램을 저장하는 SRAM(609), DRAM(614) 및 SDRAM(Synchronous DRAM)(614), 표시용 화상데이타 등을 저장하는 3차원 그래픽용 프레임버퍼(610), CD-ROM을 제어하는 CD-ROM 디코더(613), 비디오카메라를 제어하는 비디오 컨트롤러(616), 액정표시장치(LCD)를 제어하는 LCD 컨트롤러(619), 키보드나 프린터 등의 주변장치(620)을 제어하는 주변장치 컨트롤러(621) 등이 시스템버스(607)에 접속되어 구성되어 있다.
프로세서(602)는 제1 명령세트를 갖는 프로세서1(603)과 제2 명령세트를 갖는 프로세서2(605)로 구성되어 있고, 제어신호(606)에 의해 프로세서1이 프로세서2를, 제어신호(604)에 의해 프로세서2가 프로세서1을 제어한다. 프로세서(602)는 3차원 그래픽스, MPEG의 인코드/디코드를 고속으로 처리할 수 있으므로, 종래와 같은 전용의 하드웨어회로가 필요없고, 프린트기판상에 실장하는 반도체칩의 개수를 삭감할 수 있으며, 프린트기판 개수의 삭감 또는 프린트기판 자신의 크기를 작게 할 수 있다.
원칩 프로세서
도 7에는 도 6의 프로세서(602)를 1개의 반도체집적회로장치로 구성한(원칩에 내장한) 경우의 블럭도가 도시되어 있다. 프로세서(701)은 반도체집적회로 제조기술을 사용해서 단결정실리콘과 같은 1개의 반도체기판에 형성된다. 이 반도체기판은 수지몰드기술을 사용해서 소위 플라스틱 팩키지에 봉지된다. 이 원칩에는 ROM(608)이나 RAM(609) 등의 메모리가 포함되는 경우도 있다.
원칩의 프로세서(701)은 제1 명령세트를 갖는 프로세서1(708)과 제2 명령세트를 갖는 프로세서2(711), 데이타캐시(712), 주변장치, 클럭펄스 발생회로(CPG)(714), 입출력회로(I/O)(715) 등으로 구성된다.
프로세서1(708)과 프로세서2(711)의 조합에는 16비트 고정길이 명령의 RISC 프로세서와 64비트 고정길이 명령의 VLIW 프로세서의 조합이나 32비트 고정길이 명령의 RISC 프로세서와 128비트 고정길이 명령의 VLIW 프로세서의 조합이나 64비트 고정길이 명령의 RISC 프로세서와 256비트 고정길이 명령의 VLIW 프로세서 등이 있다. 이 조합에서는 프로세서1과 프로세서2를 반대로 하는 것도 가능하다. 도 7에서는 프로세서1(708)이 RISC 프로세서(도 1의 RISC코어(106)), 프로세서2(711)이 VLIW 프로세서(도 1의 VLIW코어(140))인 경우가 도시된다.
프로세서1(708)은 명령페치유닛(101), 명령캐시(107), RISC 디코드 유닛(114), 1개 또는 여러개의 연산유닛(704), RISC로드/스토어유닛(127)로 구성되고, 내부버스(702)에 의해 접속되어 있다. 명령페치유닛(101)이 명령캐시(107)에서 명령을 리드하고, 그 리드한 명령을 RISC디코드유닛(114)에서 해석하고, 연산유닛(704)가 동작하고, 메모리액세스가 필요한 경우에는 로드/스토어유닛(127)이 기동한다. 연산유닛(704)에는 승산유닛, 정수연산유닛, 부동소수점유닛, 제산유닛, DSP 등의 연산유닛이 배치된다, 또, 동일한 연산유닛을 여러개 갖는 경우도 있다. 명령캐시로의 명령의 리드는 버스(709)를 사용해서 버스 제어 유닛(712)에서 실행된다. RISC로드/스토어유닛(127)은 버스(705)를 사용해서 데이타캐시(129)로 액세스를 실행한다. 데이타캐시(129)로의 데이타의 페치는 버스제어유닛(712)에서 버스(707)을 사용해서 실행된다.
프로세서2(711)은 VLIW 기동판정유닛(104), VLIW테이블(113), VLIW 디코드유닛(115), 1개 또는 여러개의 연산유닛(704), VLIW 로드/스토어유닛(131)로 구성되고, 내부버스(702)에 의해 접속되어 있다. VLIW 기동판정유닛(104)에서 VLIW명령의 기동이 걸리면, VLIW테이블(113)에서 VLIW명령이 리드되고, VLIW디코드유닛(115)에서 명령을 해석하고 연산유닛(704)가 동작하고, 메모리액세스가 필요한 경우에는 로드/스토어유닛(131)이 기동한다. VLIW테이블(113)에는 마스크ROM이나 플래시메모리 등의 불휘발성 메모리 또는 SRAM이나 DRAM 등의 휘발성메모리가 사용된다. VLIW테이블은 칩 외부에 존재하는 것도 있으며, 그 경우에는 버스제어유닛을 통해서 외부에서 VLIW명령의 리드가 실행된다. 연산유닛(704)에는 승산유닛, 정수연산유닛, 부동소수점유닛, 제산유닛, DSP 등의 연산유닛이 배치된다. 또, 동일한 연산유닛을 여러개 갖는 경우도 있다. VLIW로드/스토어유닛(131)은 버스(706)을 사용해서 데이타캐시(129)로 액세스를 실행한다.
버스제어유닛(712)는 버스(713)은 사용해서 I/O(715)로 액세스를 실행한다. I/O(715)는 어드레스신호(717), 데이타신호(716)을 사용해서 칩 외부와의 데이타수수를 실행한다. 버스(713)에는 주변모듈(710) 등이 접속되는 경우도 있다. 또, 내부의 클럭은 CPG(714)에 의해서 발생된다.
프로세서1(708)과 프로세서2(711) 사이의 인터페이스는 제어신호선(또는 버스)(703)을 사용해서 실행된다.
도 7과 같이 프로세서1과 프로세서2를 원칩화하는 것에 의해 데이타캐시를 공유할 수 있으므로 데이타의 일치제어를 쉽게 실행할 수 있게 된다. 또, 프로세서 사이의 신호가 칩 외부로 나오지 않으므로 안전성이 강화된다. 또, 프로세서간의 통신의 고속화와 정보량을 삭감할 수 있으므로, 저코스트화와 고속화가 도모된다.
본 발명의 실시형태에서는 명령세트가 다른 프로세서 사이의 동작을 전환하는 방법으로서 프로세서를 전환하기 위한 분기명령 또는 특정 어드레스 공간으로의 분기를 트리거로서 사용하고 있다. 제1 프로세서와 제2 프로세서 사이에서 동작을 전환하는 경우, 제1 프로세서 또는 제2 프로세서 중 어느 한쪽의 프로세서가 전체의 실행을 제어하는 마스터 프로세서로 되고, 또 다른 한쪽이 슬레이브 프로세서로 된다. 마스터 프로세서는 항상 한쪽의 프로세서에 고정되어 있는 것은 아니고, 동적으로 어느쪽의 프로세서라도 마스터 프로세서로 되는 것은 가능하다.
마스터 프로세서에서 슬레이브 프로세서로 동작이 이행된 후, 슬레이브 프로세서의 동작이 복귀후의 마스터 프로세서의 동작에 영향을 미치지 않는 경우, 슬레이브 프로세서 또는 마스터 프로세서가 의존성을 판단하는 것에 의해 병렬로 2개의 프로세서를 동작시키는 것이 가능하다.
<실시예2>
도 8에는 본 발명에 관한 실시형태인 마이크로컴퓨터(800)의 블럭도가 도시되어 있다. 마이크로컴퓨터(800)은 반도체 제조 프로세스 기술을 사용해서 실리콘과 같은 1개의 반도체기판상에 형성된다. 이 반도체기판은 수지몰드기술을 사용해서 소위 플라스틱 패키지에 봉지된다.
마이크로컴퓨터(800)은 제1 프로세서(801), 제2 프로세서(802), 제1 메모리(803), 제2 메모리(804), 프로세서 전환회로(805), 어드레스 버스(806), 데이타버스(807) 및 버스제어유닛(808)을 갖는다.
제1 프로세서(801)은 RISC형 프로세서로서, 16비트 고정길이 명령을 실행하는 프로세서이다. 제2 프로세서(802)는 VLIW형의 프로세서로서, 64비트 길이명령을 실행하는 프로세서이다. 제1 프로세서(801)과 제2 프로세서(802)의 명령체계(명령세트, 명령포맷 또는 프로그래밍모델 등)은 다르다. 제1 메모리(803)에는 제1 프로세서(801)이 실행하는 명령(프로그램)이 저장된다. 제2 메모리(804)에는 제2 프로세서(802)가 실행하는 명령(프로그램)이 저장된다. 제1 메모리(803) 및 제2 메모리(804)는 불휘발성 메모리 또는 휘발성 메모리로 구성된다. 제1 메모리(803)과 제2 메모리(804)를 라이트할 수 있는 메모리로 구성하는 것에 의해 반도체 공급자뿐만 아니라 반도체의 사용자가 프로그램하는 것이 가능하게 된다. 즉, 제1 명령세트를 사용한 프로그램과 제2 명령세트를 사용한 프로그램의 양쪽을 사용자에 의해서 할 수 있다. 불휘발성메모리, 휘발성메모리 및 리라이트 가능한 메모리로서는 도1 의 마이크로 프로세서의 VLIW테이블(113)에서 사용되는 것과 마찬가지이다.
메모리맵
도 9의 메모리맵에 도시한 바와 같이 제1 프로세서의 프로그램과 제2 프로세서의 프로그램은 제1 프로세서(801) 또는 제2 프로세서(802)의 어드레스 공간상에 있다. 제1 메모리(803)에는 제1 프로세서의 프로그램의 일부 또는 전체가 저장된다. 또, 제2 메모리(804)에는 제2 프로세서의 프로그램의 일부 또는 전체가 저장된다.
프로세서 전환회로(805)는 제1 프로세서(801) 또는 제2 프로세서(802)의 어드레스가 입력되고, 제1 메모리(803)과 제2 메모리(804) 중의 어느 한쪽을 액세스 할 것인지를 판정한다. 제1 프로세서(801)이 제1 메모리(803)을 액세스하는 경우에는 어드레스신호와 제어신호(812)를 프로세서 전환회로(805)에 입력한다. 프로세서 전환회로(805)는 제1 메모리(803)의 액세스에 필요한 어드레스신호나 제어신호(808)을 출력한다. 또, 제2 프로세서(802)로 먼저 리드된 명령의 동작 중지나 저소비전력화를 위한 클럭정지를 위한 제어신호(810)을 출력한다. 한편, 제2 프로세서(802)가 제2 메모리(804)를 액세스하는 경우에는 어드레스신호와 제어신호(813)을 프로세서 전환회로(805)에 입력한다. 프로세서 전환회로(805)는 제2 메모리의 액세스에 필요한 어드레스신호나 제어신호를 신호선(809)로 출력한다. 또, 제1 프로세서(801)로 먼저 리드된 명령의 동작 중지나 저소비전력화를 위한 클럭정지를 위한 제어신호(811)을 출력한다. 프로세서 전환회로(805)에 의해서 제1 프로세서와 제2 프로세서가 배타적으로 동작한다.
제1 프로세서(801)은 제1 프로세서의 프로그램을 실행하고, 그 프로그램 중의 분기명령 등에 의해 제2 프로세서의 프로그램영역을 나타내는 어드레스를 출력하는 것에 의해 제2 프로세서에서 제2 프로세서의 프로그램을 실행할 수 있다. 또, 제2 프로세서는 제2 프로세서의 프로그램중의 분기명령 등에 의해 제1 프로세서의 프로그램영역을 나타내는 어드레스를 출력하는 것에 의해 제1 프로세서의 프로그램으로 복귀할 수 있다.
또한, 프로세서 전환회로(805)내에 제어 레지스터가 있고, 이 레지스터를 리라이트하는 것에 의해 도 9에 도시한 메모리맵은 변경할 수 있다. 상기 제어 레지스터에서 제1 프로세서의 프로그램영역, 제2 프로세서의 프로그램영역, 데이타영역의 각각의 개시 어드레스와 종료 어드레스 등을 지정할 수 있다.
이것에 의해서 명령체계가 다른 프로그램을 1개의 마이크로컴퓨터로 실행시킬 수 있고, 제1 프로세서의 프로그램이 종래부터 축적된 소프트웨어라도 새로운 아키텍쳐의 프로그램을 제2 프로세서에서 실행할 수 있으므로, 소프트웨어의 호환성을 유지할 수 있다.
또, 동작하지 않는 프로세서의 클럭을 정지시키는 것에 의해 저소비전력화를 실현할 수 있다.
제1 프로세서(801)과 제2 프로세서(802)의 명령길이는 비교적 짧으므로, 명령디코더 등의 제어부나 연산부를 작게 할 수 있으므로, 제1 메모리(803) 또는 제2 메모리(804)의 용량을 크게 할 수 있다. 또한, 프로세서의 면적이 크더라도 좋은 경우에는 명령길이는 길게 해도 좋다.
본 발명의 실시형태에 의해 명령세트가 다른 프로세서 사이의 동작을 특정 명령에 의해 전환하는 것이 가능하게 되므로, 호환성을 유지하면서 다른 명령세트를 갖는 프로세서로의 확장이 가능하게 된다.
또, 프로세서 사이에서 연산유닛 등의 자원을 공유화할 수 있으므로 저코스트화로 이어진다.
다른 명령세트를 갖는 프로세서를 원칩에 내장한 경우에는 프로세서 간 통신의 고속화와 내부정보가 칩외부로 출력되지 않는 것에 의한 안전성강화가 도모된다.
동작중에 고속인 처리가 필요하지 않게 되었을 때에 1개의 프로세서의 동작을 완전히 정지시키고, 다른 프로세서에서 정지시킨 프로세서와 동일 기능의 처리를 시키는 것에 의해 저소비전력화가 도모된다.
이것에 의해서 [1] 소프트웨어는 종래와 완전히 호환성을 유지한 상태로 1GIPS(Giga Instructions Per Second), 최대 10GOPS(Giga Operations Per Second)의 고성능을 실현할 수 있다. [2] 기존의 소프트웨어 상태에서 미들웨어부분의 성능을 1자리 향상시킬 수 있다. [3] 새로운 어플리케이션도 지금까지의 명령세트 상태에서 작성할 수 있다. [4] 모든 어플리케이션을 소프트웨어로 실현할 수 있다.
이상, 본 발명자에 의해서 이루어진 발명을 실시형태에 따라서 구체적으로 설명했지만, 본 발명은 그것에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에 있어서 여러가지 변경가능한 것은 물론이다. 예를 들면, 도 1의 마이크로 프로세서에서는 RISC코어의 연산기와 VLIW코어의 연산기는 쌍방에서 공용할 수 있었지만, 도 2의 마이크로 프로세서와 같이 독립시켜도 좋다. 도 2에서는 로드/스토어유닛(204)는 RISC코어와 VLIW코어의 공유로 한 경우를 도시했지만, 로드/스토어유닛은 도 1과 같은 2개를 가져도 상관없다. 제1 프로세서를 RISC형 프로세서, 제2 프로세서를 VLIW형 프로세서로 구성했지만, 명령세트가 다른 2개의 프로세서로 구성할 수 있다. 즉, RISC형과 RISC형, RISC형과 CISC형, CISC형과 CISC형, CISC형과 VLIW형, VLIW형과 VLIW형 등의 프로세서를 사용해도 좋다. 또, RISC 프로세서와 VLIW 프로세서의 명령길이를 16비트와 64비트, 32비트와 128비트, 64비트와 256비트의 예를 도시했지만, 명령길이의 조합은 그것에 한정되는 것은 아니다. 또, 각 실시형태는 필요에 따라서 조합 또는 일부를 치환해서 새로운 실시형태를 형성할 수 있다.
본원에 있어서 개시되는 발명 중 대표적인 것에 의해서 얻어지는 효과를 간단히 설명하면 다음과 같다.
즉, 종래의 소프트웨어를 실행하는 제1 프로세서와 새로운 아키텍쳐의 소프트웨어를 실행하는 제2 프로세서를 갖고, 제1 프로세서가 제2 프로세서에 기동을 걸 수 있으므로 종래의 소프트웨어와 호환성을 유지하면서 새로운 아키텍쳐(명령체계)의 소프트웨어를 실행하는 고성능인 프로세서를 실현할 수 있다.
2개의 프로세서 내부의 자원 예를 들면 연산유닛 등을 공유화하는 것에 의해 하드웨어의 증가를 억제하여 고속성능을 실현할 수 있다.
2개의 프로세서를 병렬로 동작시키는 경우와 간헐적으로 동작시키는 2개의 제어방식이 가능하므로 고속화와 저소비전력화의 쌍방을 실현할 수 있다.
도 1은 본 발명의 하나의 실시형태에 관한 마이크로 프로세서의 블럭도,
도 2는 도 1에 관한 마이크로 프로세서의 변형예의 블럭도,
도 3은 도 1 및 도 2의 마이크로 프로세서의 VLIW 기동논리에 관한 상세도,
도 4는 도 1 및 도 2의 마이크로 프로세서에 TLB를 사용하는 경우의 VLIW 기동논리에 관한 상세도,
도 5는 VLIW 명령실행시의 파이프라인의 구성과 명령코드의 예를 도시한 도면,
도 6은 본 발명에 관한 마이크로 프로세서를 이용한 시스템의 전체도,
도 7은 원칩의 프로세서의 블럭도,
도 8은 본 발명에 관한 다른 실시형태인 마이크로 컴퓨터의 블럭도,
도 9는 도 8의 마이크로 컴퓨터의 메모리맵을 도시한 도면.
※부호의 설명※
100: 마이크로 프로세서
101: 명령페치유닛
102: VLIW명령 완료신호
103: VLIW명령 분기신호
104: VLIW 기동판정유닛
105, 132: 명령어드레스 버스
106: RISC코어
107: 명령캐시
108: 명령버스
109: RISC코어 제어신호
110: VLIW명령 실행 상태신호
111: VLIW명령 디코드 기동신호
112: VLIW명령 버스
113: VLIW 테이블
114: RISC명령 디코드유닛
115: VLIW명령 디코드유닛
116: VLIW연산유닛 제어신호
117: RISC연산유닛 제어신호
118: 부동소수점 연산유닛
119: 정수연산유닛
120: VLIW연산유닛
121: RISC용 데이타버스
122: VLIW 테이블 데이타버스
123: 연산기 사이의 데이타버스
124: VLIW용 데이타버스
125, 126: 어드레스버스
127: RISC로드/스토어유닛
128, 130: 데이타버스
129: 데이타캐시
131: VLIW 로드/스토어유닛
133: VLIW 테이블 제어신호
134, 139: 어드레스버스
135, 138: 데이타버스
136, 141: 분기지(branch destination) 어드레스용 버스
137: 제어신호
140: VLIW 코어
142: VLIW 분기명령 디코드신호
200: 마이크로 프로세서
201: 레지스터 파일
202: 연산유닛과 레지스터 파일 사이의 버스
203: 레지스터 파일과 로드/스토어유닛 사이의 버스
204: 로드/스토어유닛
205: 데이타버스
206: 어드레스버스
301: 가산기
302: VLIW코어용 프로그램 카운터
303: 셀렉터
304: 어드레스래치
305: 데이타래치
306: VLIW 테이블 저장 메모리
307: 테이블 제어회로
308: VLIW코어 제어 레지스터
309: 디코더
310: VLIW기동 판정회로
311: 조정회로
312: 기동회로
313: 멀티플렉서
314: VLIW 연산유닛 제어회로
315: VLIW 분기조건 판정회로
316: RISC코어용 프로그램 카운터
317: 가산기
401: 어드레스 변환 버퍼(TLB)
402: VLIW 기동 보조 정보신호
403: 명령 어드레스(물리 어드레스)
501: VLIW 분기명령의 파이프라인
502: VLIW 명령1
503: VLIW명령2
504: RISC명령1
505: VLIW명령3
506: RISC명령2
507: RISC명령3
508: VLIW 연산기1 제어필드
509: VLIW 연산기2 제어필드
510: 정수연산기 제어필드
511: 부동소수점 연산기 제어필드
512: VLIW명령 완료 코드
513: 연산코드
514: 디스플레이스먼트
515: 소오스 레지스터1
516: 소오스 레지스터2
517: 디스티네이션 레지스터
601 : 시스템
602: 프로세서
603: 프로세서1
604: 프로세서2에서 프로세서1의 제어신호
605: 프로세서2
606: 프로세서1에서 프로세서2의 제어신호
607: 시스템버스
608: ROM
609: RAM
610: 3차원 그래픽스용 프레임버퍼
611: 디스플레이
612: CD-ROM
613: CD-ROM 디코더
614: DRAM
615: 비디오카메라
616: 비디오 컨트롤러
617: SDRAM
618: LCD
619: LCD 컨트롤러
620: 키보드나 프린터 등 주변장치
621: 주변장치 컨트롤러
701: 프로세서
702: 내부버스
703: 프로세서1과 프로세서2 사이의 제어신호
704: 연산유닛(정수연산, 부동소수점연산, 승제산, DSP 등)
705: 프로세서1과 데이타캐시 사이의 버스
706: 프로세서2와 데이타캐시 사이의 버스
707: 데이타캐시와 버스제어유닛 사이의 버스
708: 프로세서1(RISC 프로세서)
709: 명령캐시와 버스제어유닛 사이의 버스
710: 주변모듈
711: 프로세서2(VLIW 프로세서)
712: 버스제어유닛
713: 버스제어유닛과 I/O사이의 버스
714: 클럭펄스 발생회로(CPG)
715: 입출력회로(I/O)
716: 데이타신호선
717: 어드레스신호선
800: 마이크로컴퓨터
801: 제1 프로세서
802: 제2 프로세서
803: 제1 메모리
804: 제2 메모리
805: 프로세서 전환회로
806: 어드레스버스
807: 데이타버스
808: 버스제어유닛

Claims (17)

  1. 제1 명령세트의 명령을 실행하는 제1 프로세서와 제1 명령세트와는 다른 제2 명령세트의 명령을 실행하는 제2 프로세서를 갖는 데이타처리장치로서,
    상기 제1 프로세서가 상기 제1 명령세트 중의 소정의 명령을 실행했을 때, 상기 제2 프로세서가 상기 제2 명령세트의 명령을 실행하고,
    상기 데이타 처리장치는 상기 제2 명령세트의 명령으로 분기한 후, 계속해서 실행되는 상기 제2 명령세트의 명령의 동작과 상기 제2 명령세트의 명령실행후에 복귀하는 상기 제1 명령세트의 명령의 동작에 관련성이 있는지를 조사하는 회로를 더 갖고, 관련성이 없는 경우에 상기 제2 명령세트의 명령의 완료를 기다리지 않고 복귀지의 상기 제1 명령세트의 명령을 병렬로 실행할 수 있는 것을 특징으로 하는 데이타처리장치.
  2. 제1항에 있어서,
    상기 제1 명령세트의 명령은 가변길이이고, 상기 제2 명령세트의 명령은 고정길이인 것을 특징으로 하는 데이타처리장치.
  3. 제1항에 있어서,
    상기 제2 명령세트는 3차원 화상처리를 위한 명령을 갖는 것을 특징으로 하는 데이타처리장치.
  4. 제1항에 있어서,
    상기 제1 명령세트의 명령과 상기 제2 명령세트의 명령은 모두 고정길이인 것을 특징으로 하는 데이타처리장치.
  5. 제4항에 있어서,
    상기 제1 명령세트의 명령의 워드길이는 상기 제2 명령의 워드길이보다 짧은 것을 특징으로 하는 데이타처리장치.
  6. 연산기를 갖고 제1 명령군을 저장하는 제1 기억부로부터 명령을 리드해서 실행하는 제1 데이타처리부,
    병렬동작이 가능한 여러개의 연산기를 갖고 동시에 실행할 수 있는 명령을 1명령으로서 실행하는 제2 데이타처리부 및
    상기 제2 데이타처리부가 실행하는 명령군을 저장하는 제2 기억부를 구비하는 데이타처리장치로서,
    상기 제1 데이타처리부가 리드한 명령이 소정의 명령일 때, 상기 제2 데이타 처리부에서 실행하는 명령을 상기 제2 기억부로부터 리드하고,
    상기 데이타처리장치는 상기 제2 명령세트의 명령으로 분기한 후, 계속해서 실행되는 상기 제2 명령세트의 명령의 동작과 상기 제2 명령세트의 명령실행후에 복귀하는 상기 제1 명령세트의 명령의 동작에 관련성이 있는지를 조사하는 회로를 더 갖고, 관련성이 없는 경우에 상기 제2 명령세트의 명령의 완료를 기다리지 않고 복귀지의 상기 제1 명령세트의 명령을 병렬로 실행할 수 있는 것을 특징으로 하는 데이타처리장치.
  7. RISC명령을 실행하는 RISC코어, VLIW명령을 저장하는 VLIW테이블, VLIW명령을 실행하는 VLIW코어 및 상기 RISC코어와 상기 VLIW코어의 동작전환을 제어하는 VLIW 기동판정 유닛을 갖는 마이크로 프로세서로서,
    상기 RISC코어가 RISC명령중 서브루틴콜 또는 분기명령을 실행했을 때 분기지 어드레스에서 상기 VLIW테이블로부터 VLIW명령을 리드하고, 상기 VLIW 기동판정 유닛이 상기 RISC코어로부터 상기 VLIW코어로 동작을 이행하고, 상기 VLIW테이블로 부터 VLIW명령의 완료코드가 리드될 때까지 VLIW코어가 동작하고,
    상기 마이크로 프로세서는 VLIW명령으로 분기한 후, 계속해서 실행되는 VLIW명령의 동작과 VLIW명령 실행후에 복귀하는 RISC명령의 동작에 관련성이 있는지를 조사하는 회로를 더 갖고, 관련성이 없는 경우에 VLIW명령의 완료를 기다리지 않고 복귀지의 RISC명령을 병렬로 실행할 수 있는 것을 특징으로 하는 마이크로 프로세서.
  8. RISC명령을 실행하는 RISC코어, VLIW명령을 저장하는 VLIW테이블, VLIW명령을 실행하는 VLIW코어 및 상기 RISC코어와 상기 VLIW코어의 동작전환을 제어하는 VLIW 기동판정 유닛을 갖는 마이크로 프로세서로서,
    상기 RISC코어가 RISC명령중 서브루틴콜 또는 분기명령을 실행했을 때 분기지 어드레스에어 상기 VLIW테이블로부터 VLIW명령을 리드하고, 상기 VLIW 기동판정 유닛이 상기 RISC코어로부터 상기 VLIW코어로 동작을 이행하고, 상기 VLIW테이블로 부터 VLIW명령의 완료로드가 리드될 때까지 VLIW코어가 동작하고,
    상기 마이크로 프로세서는 VLIW명령의 실행을 금지하거나 실행을 제어하는 레지스터를 더 갖고, VLIW명령 실행금지시에는 VLIW명령과 동등한 동작을 실행하는 RISC명령열로 분기하는 것에 의해 VLIW코어의 동작을 정지시켜 저소비전력화를 도모하는 기능을 갖는 것을 특징으로 하는 마이크로 프로세서.
  9. 제7항에 있어서,
    상기 VLIW테이블을 불휘발성 메모리에 내장되는 것을 특징으로 하는 마이크로 프로세서.
  10. 제9항에 있어서,
    상기 불휘발성 메모리는 마스크ROM, 플래시메모리, 강유전체메모리 중의 어느 하나인 것을 특징으로 하는 마이크로 프로세서.
  11. 제7항에 있어서,
    상기 VLIW테이블을 휘발성 메모리에 내장되는 것을 특징으로 하는 마이크로 프로세서.
  12. 제11항에 있어서,
    상기 휘발성 메모리는 SRAM 또는 DRAM 중의 어느 하나인 것을 특징으로 하는 마이크로 프로세서.
  13. 제7항에 있어서,
    상기 VLIW테이블은 상기 RISC코어의 프로세서에 의해 리라이트 가능한 메모리에 내장되는 것을 특징으로 하는 마이크로 프로세서.
  14. 제1 명령세트와 상기 제1 명령세트와는 다른 제2 명령세트를 실행할 수 있는 데이타 처리장치로서,
    상기 데이타 처리장치는 명령캐시, 테이블 및 실행부를 구비하고,
    상기 데이타 처리장치가 상기 제1 명령세트에 포함되는 명령에 따라서 동작하는 경우에는, 상기 실행부는 상기 명령캐시에서 출력되는 명령을 실행하고,
    상기 데이타 처리장치가 상기 제2 명령세트에 포함되는 명령에 따라서 동작하는 경우에는, 상기 실행부는 상기 테이블에서 공급되는 명령을 실행하며,
    상기 제1 명령세트는 상기 실행부가 실행하는 명령의 공급원을 상기 명령캐시에서 상기 테이블로 변경하는 명령을 포함하는 것을 특징으로 하는 데이타 처리장치.
  15. 제14항에 있어서,
    상기 제1 명령세트에 포함되는 명령의 비트길이는 상기 제2 명령세트에 포함되는 명령의 비트길이보다 긴 것을 특징으로 하는 데이타 처리장치.
  16. 제14항에 있어서,
    상기 데이타 처리장치는 명령어드레스를 유지하기 위한 명령페치유닛을 더 구비하고,
    상기 명령캐시는 상기 명령페치유닛으로부터 명령어드레스를 받아, 상기 실행부로 상기 명령어드레스에 대응하는 명령을 출력하는 것을 특징으로 하는 데이타 처리장치.
  17. 제14항에 있어서,
    상기 명령캐시는 상기 제1 명령세트에 포함되는 명령을 출력하고, 상기 테이블은 상기 제2 명령세트에 포함되는 명령을 출력하는 것을 특징으로 하는 데이타 처리장치.
KR1019970001570A 1996-01-31 1997-01-21 데이타처리장치 KR100535852B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP96-015016 1996-01-31
JP01501696A JP3623840B2 (ja) 1996-01-31 1996-01-31 データ処理装置及びマイクロプロセッサ

Publications (2)

Publication Number Publication Date
KR970059916A KR970059916A (ko) 1997-08-12
KR100535852B1 true KR100535852B1 (ko) 2006-05-10

Family

ID=11877080

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970001570A KR100535852B1 (ko) 1996-01-31 1997-01-21 데이타처리장치

Country Status (4)

Country Link
US (3) US6023757A (ko)
JP (1) JP3623840B2 (ko)
KR (1) KR100535852B1 (ko)
TW (1) TW334544B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101032771B1 (ko) 2009-05-29 2011-05-06 광운대학교 산학협력단 구성형 프로세서에서 risc 명령어와 확장 명령어를 병렬 처리하기 위한 방법 및 그에 따른 구성형 프로세서
US10102005B2 (en) 2011-07-25 2018-10-16 Samsung Electronics Co., Ltd. External intrinsic interface

Families Citing this family (115)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3623840B2 (ja) 1996-01-31 2005-02-23 株式会社ルネサステクノロジ データ処理装置及びマイクロプロセッサ
US6786420B1 (en) 1997-07-15 2004-09-07 Silverbrook Research Pty. Ltd. Data distribution mechanism in the form of ink dots on cards
US6618117B2 (en) 1997-07-12 2003-09-09 Silverbrook Research Pty Ltd Image sensing apparatus including a microcontroller
US6803989B2 (en) * 1997-07-15 2004-10-12 Silverbrook Research Pty Ltd Image printing apparatus including a microcontroller
US6948794B2 (en) 1997-07-15 2005-09-27 Silverbrook Reserach Pty Ltd Printhead re-capping assembly for a print and demand digital camera system
AUPO802797A0 (en) * 1997-07-15 1997-08-07 Silverbrook Research Pty Ltd Image processing method and apparatus (ART54)
AUPO850597A0 (en) 1997-08-11 1997-09-04 Silverbrook Research Pty Ltd Image processing method and apparatus (art01a)
US6985207B2 (en) * 1997-07-15 2006-01-10 Silverbrook Research Pty Ltd Photographic prints having magnetically recordable media
US7110024B1 (en) 1997-07-15 2006-09-19 Silverbrook Research Pty Ltd Digital camera system having motion deblurring means
US6624848B1 (en) 1997-07-15 2003-09-23 Silverbrook Research Pty Ltd Cascading image modification using multiple digital cameras incorporating image processing
US6879341B1 (en) 1997-07-15 2005-04-12 Silverbrook Research Pty Ltd Digital camera system containing a VLIW vector processor
US6690419B1 (en) 1997-07-15 2004-02-10 Silverbrook Research Pty Ltd Utilising eye detection methods for image processing in a digital image camera
JP3414209B2 (ja) * 1997-07-30 2003-06-09 松下電器産業株式会社 プロセッサ
US6216223B1 (en) * 1998-01-12 2001-04-10 Billions Of Operations Per Second, Inc. Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
US6219776B1 (en) * 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
JP3541669B2 (ja) * 1998-03-30 2004-07-14 松下電器産業株式会社 演算処理装置
JPH11306084A (ja) * 1998-04-23 1999-11-05 Fujitsu Ltd 情報処理装置及び記憶媒体
AUPP702098A0 (en) 1998-11-09 1998-12-03 Silverbrook Research Pty Ltd Image creation method and apparatus (ART73)
US7114056B2 (en) * 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US7117342B2 (en) * 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US6438700B1 (en) * 1999-05-18 2002-08-20 Koninklijke Philips Electronics N.V. System and method to reduce power consumption in advanced RISC machine (ARM) based systems
AUPQ056099A0 (en) 1999-05-25 1999-06-17 Silverbrook Research Pty Ltd A method and apparatus (pprint01)
JP2001092663A (ja) * 1999-09-17 2001-04-06 Sanyo Electric Co Ltd データ処理装置
US6351803B2 (en) 1999-10-01 2002-02-26 Hitachi Ltd. Mechanism for power efficient processing in a pipeline processor
US6591369B1 (en) 1999-10-01 2003-07-08 Stmicroelectronics, Ltd. System and method for communicating with an integrated circuit
US6496905B1 (en) 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability
US6820195B1 (en) 1999-10-01 2004-11-16 Hitachi, Ltd. Aligning load/store data with big/little endian determined rotation distance control
US7266728B1 (en) 1999-10-01 2007-09-04 Stmicroelectronics Ltd. Circuit for monitoring information on an interconnect
US6928073B2 (en) 1999-10-01 2005-08-09 Stmicroelectronics Ltd. Integrated circuit implementing packet transmission
US6779145B1 (en) 1999-10-01 2004-08-17 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6457118B1 (en) 1999-10-01 2002-09-24 Hitachi Ltd Method and system for selecting and using source operands in computer system instructions
US6408381B1 (en) 1999-10-01 2002-06-18 Hitachi, Ltd. Mechanism for fast access to control space in a pipeline processor
US6859891B2 (en) 1999-10-01 2005-02-22 Stmicroelectronics Limited Apparatus and method for shadowing processor information
US6412043B1 (en) 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6298394B1 (en) 1999-10-01 2001-10-02 Stmicroelectronics, Ltd. System and method for capturing information on an interconnect in an integrated circuit
US6574651B1 (en) 1999-10-01 2003-06-03 Hitachi, Ltd. Method and apparatus for arithmetic operation on vectored data
US7072817B1 (en) 1999-10-01 2006-07-04 Stmicroelectronics Ltd. Method of designing an initiator in an integrated circuit
US6615370B1 (en) 1999-10-01 2003-09-02 Hitachi, Ltd. Circuit for storing trace information
US6826191B1 (en) 1999-10-01 2004-11-30 Stmicroelectronics Ltd. Packets containing transaction attributes
US6601189B1 (en) 1999-10-01 2003-07-29 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6349371B1 (en) 1999-10-01 2002-02-19 Stmicroelectronics Ltd. Circuit for storing information
US6732307B1 (en) 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US6701405B1 (en) 1999-10-01 2004-03-02 Hitachi, Ltd. DMA handshake protocol
US6598128B1 (en) 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6629115B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method and apparatus for manipulating vectored data
US6557119B1 (en) 1999-10-01 2003-04-29 Stmicroelectronics Limited Microcomputer debug architecture and method
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US6629207B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US6567932B2 (en) 1999-10-01 2003-05-20 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6434665B1 (en) 1999-10-01 2002-08-13 Stmicroelectronics, Inc. Cache memory store buffer
US6918065B1 (en) 1999-10-01 2005-07-12 Hitachi, Ltd. Method for compressing and decompressing trace information
US6590907B1 (en) 1999-10-01 2003-07-08 Stmicroelectronics Ltd. Integrated circuit with additional ports
US6553460B1 (en) 1999-10-01 2003-04-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6546480B1 (en) 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data
US6598177B1 (en) 1999-10-01 2003-07-22 Stmicroelectronics Ltd. Monitoring error conditions in an integrated circuit
US6542983B1 (en) 1999-10-01 2003-04-01 Hitachi, Ltd. Microcomputer/floating point processor interface and method
US6460174B1 (en) 1999-10-01 2002-10-01 Stmicroelectronics, Ltd. Methods and models for use in designing an integrated circuit
US6449712B1 (en) 1999-10-01 2002-09-10 Hitachi, Ltd. Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
US6502210B1 (en) 1999-10-01 2002-12-31 Stmicroelectronics, Ltd. Microcomputer debug architecture and method
US7000078B1 (en) 1999-10-01 2006-02-14 Stmicroelectronics Ltd. System and method for maintaining cache coherency in a shared memory system
US6412047B2 (en) * 1999-10-01 2002-06-25 Stmicroelectronics, Inc. Coherency protocol
US6665816B1 (en) 1999-10-01 2003-12-16 Stmicroelectronics Limited Data shift register
US6693914B1 (en) 1999-10-01 2004-02-17 Stmicroelectronics, Inc. Arbitration mechanism for packet transmission
US6463553B1 (en) 1999-10-01 2002-10-08 Stmicroelectronics, Ltd. Microcomputer debug architecture and method
US6530047B1 (en) 1999-10-01 2003-03-04 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6633971B2 (en) 1999-10-01 2003-10-14 Hitachi, Ltd. Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline
US6684348B1 (en) 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
US7260745B1 (en) 1999-10-01 2007-08-21 Stmicroelectronics Ltd. Detection of information on an interconnect
US6487683B1 (en) 1999-10-01 2002-11-26 Stmicroelectronics Limited Microcomputer debug architecture and method
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
JP2003529151A (ja) 2000-03-27 2003-09-30 インフィネオン テクノロギーズ アーゲー 構成可能な長命令語(cliw)を使用するプロセッサにユーザ定義の実行ユニットを追加するための方法と装置
JP4640880B2 (ja) * 2000-07-14 2011-03-02 国立大学法人東京工業大学 マイクロプロセッサシステム
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
JP5372307B2 (ja) * 2001-06-25 2013-12-18 株式会社ガイア・システム・ソリューション データ処理装置およびその制御方法
US7937559B1 (en) 2002-05-13 2011-05-03 Tensilica, Inc. System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes
US7376812B1 (en) 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7346881B2 (en) * 2002-05-13 2008-03-18 Tensilica, Inc. Method and apparatus for adding advanced instructions in an extensible processor architecture
EP1378824A1 (en) * 2002-07-02 2004-01-07 STMicroelectronics S.r.l. A method for executing programs on multiple processors and corresponding processor system
US7162617B2 (en) * 2003-02-14 2007-01-09 Fine Arc Incorporated Data processor with changeable architecture
JP3805314B2 (ja) 2003-02-27 2006-08-02 Necエレクトロニクス株式会社 プロセッサ
US20060212678A1 (en) * 2003-04-15 2006-09-21 Koninklijke Philips Electronics N.V. Reconfigurable processor array exploiting ilp and tlp
US20050108509A1 (en) * 2003-11-13 2005-05-19 Safford Kevin D. Error detection method and system for processors that employs lockstepped concurrent threads
US7610476B1 (en) * 2003-12-05 2009-10-27 Advanced Micro Devices, Inc. Multiple control sequences per row of microcode ROM
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
ITMI20040600A1 (it) * 2004-03-26 2004-06-26 Atmel Corp Sistema dsp su chip a doppio processore a virgola mobile nel dominio complesso
EP1728171A2 (en) * 2004-03-26 2006-12-06 Atmel Corporation Dual-processor complex domain floating-point dsp system on chip
US7287185B2 (en) * 2004-04-06 2007-10-23 Hewlett-Packard Development Company, L.P. Architectural support for selective use of high-reliability mode in a computer system
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
KR100636596B1 (ko) * 2004-11-25 2006-10-23 한국전자통신연구원 고에너지 효율 병렬 처리 데이터 패스 구조
GB2420884B (en) * 2004-12-03 2009-04-15 Picochip Designs Ltd Processor architecture
US7461275B2 (en) * 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
JP4580879B2 (ja) * 2006-03-02 2010-11-17 富士通セミコンダクター株式会社 リコンフィグラブル回路
US8352713B2 (en) * 2006-08-09 2013-01-08 Qualcomm Incorporated Debug circuit comparing processor instruction set operating mode
US20080133879A1 (en) * 2006-12-05 2008-06-05 Electronics And Telecommunications Research Institute SIMD parallel processor with SIMD/SISD/row/column operation modes
GB2454865B (en) * 2007-11-05 2012-06-13 Picochip Designs Ltd Power control
KR100935858B1 (ko) * 2007-12-05 2010-01-07 한국전자통신연구원 재구성 가능한 산술연산기 및 이를 구비한 고효율 프로세서
US9152427B2 (en) * 2008-10-15 2015-10-06 Hyperion Core, Inc. Instruction issue to array of arithmetic cells coupled to load/store cells with associated registers as extended register file
GB2466661B (en) * 2009-01-05 2014-11-26 Intel Corp Rake receiver
GB2470037B (en) 2009-05-07 2013-07-10 Picochip Designs Ltd Methods and devices for reducing interference in an uplink
GB2470771B (en) 2009-06-05 2012-07-18 Picochip Designs Ltd A method and device in a communication network
GB2470891B (en) 2009-06-05 2013-11-27 Picochip Designs Ltd A method and device in a communication network
US9632794B2 (en) 2009-06-23 2017-04-25 Seiko Epson Corporation Subprocessor, integrated circuit device, and electronic apparatus
GB2474071B (en) 2009-10-05 2013-08-07 Picochip Designs Ltd Femtocell base station
US8954714B2 (en) * 2010-02-01 2015-02-10 Altera Corporation Processor with cycle offsets and delay lines to allow scheduling of instructions through time
GB2482869B (en) 2010-08-16 2013-11-06 Picochip Designs Ltd Femtocell access control
JP5565228B2 (ja) * 2010-09-13 2014-08-06 ソニー株式会社 プロセッサ
US20120210438A1 (en) * 2011-02-15 2012-08-16 Guobiao Zhang Secure Three-Dimensional Mask-Programmed Read-Only Memory
GB2489716B (en) 2011-04-05 2015-06-24 Intel Corp Multimode base system
GB2489919B (en) 2011-04-05 2018-02-14 Intel Corp Filter
GB2491098B (en) 2011-05-16 2015-05-20 Intel Corp Accessing a base station
US11150721B2 (en) * 2012-11-07 2021-10-19 Nvidia Corporation Providing hints to an execution unit to prepare for predicted subsequent arithmetic operations
GB2546465B (en) 2015-06-05 2018-02-28 Advanced Risc Mach Ltd Modal processing of program instructions
US10708976B2 (en) 2015-09-04 2020-07-07 Ford Global Technologies, Llc Methods and systems for a vehicle computing system to wirelessly communicate data
US10474549B2 (en) * 2017-07-31 2019-11-12 Oracle International Corporation System recovery using a failover processor
US20200057645A1 (en) 2018-08-16 2020-02-20 Tachyum Ltd. System and method for location aware processing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06250847A (ja) * 1993-02-25 1994-09-09 Fujitsu Ltd 並列論理型言語の命令をvliw方式の命令に変換する変換方式
JPH07110769A (ja) * 1993-10-13 1995-04-25 Oki Electric Ind Co Ltd Vliw型計算機
US5448746A (en) * 1990-05-04 1995-09-05 International Business Machines Corporation System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
KR100259738B1 (ko) * 1992-01-06 2000-07-01 가나이 쓰도무 병렬 연산 기능을 가지는 데이터 처리 장치

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778423A (en) * 1990-06-29 1998-07-07 Digital Equipment Corporation Prefetch instruction for improving performance in reduced instruction set processor
US5309564A (en) * 1992-03-19 1994-05-03 Bradley Graham C Apparatus for networking computers for multimedia applications
US5542059A (en) * 1994-01-11 1996-07-30 Exponential Technology, Inc. Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US6496922B1 (en) * 1994-10-31 2002-12-17 Sun Microsystems, Inc. Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5752035A (en) * 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
US5794062A (en) * 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor
JP3451595B2 (ja) * 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5826089A (en) * 1996-01-04 1998-10-20 Advanced Micro Devices, Inc. Instruction translation unit configured to translate from a first instruction set to a second instruction set
JP3623840B2 (ja) 1996-01-31 2005-02-23 株式会社ルネサステクノロジ データ処理装置及びマイクロプロセッサ
US5784636A (en) * 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
US5828897A (en) * 1996-12-19 1998-10-27 Raytheon Company Hybrid processor and method for executing incrementally upgraded software
US6202143B1 (en) * 1997-08-21 2001-03-13 Samsung Electronics Co., Ltd. System for fetching unit instructions and multi instructions from memories of different bit widths and converting unit instructions to multi instructions by adding NOP instructions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448746A (en) * 1990-05-04 1995-09-05 International Business Machines Corporation System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
KR100259738B1 (ko) * 1992-01-06 2000-07-01 가나이 쓰도무 병렬 연산 기능을 가지는 데이터 처리 장치
JPH06250847A (ja) * 1993-02-25 1994-09-09 Fujitsu Ltd 並列論理型言語の命令をvliw方式の命令に変換する変換方式
JPH07110769A (ja) * 1993-10-13 1995-04-25 Oki Electric Ind Co Ltd Vliw型計算機

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101032771B1 (ko) 2009-05-29 2011-05-06 광운대학교 산학협력단 구성형 프로세서에서 risc 명령어와 확장 명령어를 병렬 처리하기 위한 방법 및 그에 따른 구성형 프로세서
US10102005B2 (en) 2011-07-25 2018-10-16 Samsung Electronics Co., Ltd. External intrinsic interface

Also Published As

Publication number Publication date
US6760832B2 (en) 2004-07-06
TW334544B (en) 1998-06-21
KR970059916A (ko) 1997-08-12
JPH09212358A (ja) 1997-08-15
JP3623840B2 (ja) 2005-02-23
US20030065911A1 (en) 2003-04-03
US6496919B1 (en) 2002-12-17
US6023757A (en) 2000-02-08

Similar Documents

Publication Publication Date Title
KR100535852B1 (ko) 데이타처리장치
KR100190252B1 (ko) 고속 프로세서에서의 브랜치 처리 방법 및 장치
KR0185988B1 (ko) 멀티프로세서 또는 파이프 라인식 프로세서 시스템에서 데이타의 보존을 확실히 하는 방법
US9195786B2 (en) Hardware simulation controller, system and method for functional verification
US9003422B2 (en) Microprocessor architecture having extendible logic
US7000094B2 (en) Storing stack operands in registers
KR100230105B1 (ko) 간략화된 명령 세트 프로세서의 성능 개선 방법 및 그 프로세서 시스템
KR100208889B1 (ko) 병렬처리장치 및 병렬처리방법
US8185882B2 (en) Java virtual machine hardware for RISC and CISC processors
US20060242388A1 (en) Processor with register dirty bit tracking for efficient context switch
JP2002116908A (ja) ネイティブおよび非ネイティブの命令集合間相互呼び出し
KR19980032100A (ko) 캐쉬 슬라이스로서 리사이즈 및 재배치가능한 메모리 스크래치패드
US20020083302A1 (en) Hardware instruction translation within a processor pipeline
KR20010050792A (ko) 2개의 서로 다른 고정 길이 명령 세트를 실행하기 위한프로세서 아키텍쳐
KR100272622B1 (ko) 데이타 처리장치
US6012138A (en) Dynamically variable length CPU pipeline for efficiently executing two instruction sets
KR100277805B1 (ko) 데이타처리장치
JPH04104350A (ja) マイクロプロセッサ
EP0101718B1 (en) Computer with automatic mapping of memory contents into machine registers
US5187782A (en) Data processing system
JP2636821B2 (ja) 並列処理装置
JP2785820B2 (ja) 並列処理装置
Thongkaew et al. Register-Based Process Virtual Machine Acceleration Using Hardware Extension with Hybrid Execution
Spruth et al. Processing Unit Chip
JPH11272463A (ja) 記憶装置及び情報処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E801 Decision on dismissal of amendment
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE AMENDMENT REQUESTED 20040826

Effective date: 20050929

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20111118

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20121121

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee