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

데이타처리장치 Download PDF

Info

Publication number
KR100277805B1
KR100277805B1 KR1019930014080A KR930014080A KR100277805B1 KR 100277805 B1 KR100277805 B1 KR 100277805B1 KR 1019930014080 A KR1019930014080 A KR 1019930014080A KR 930014080 A KR930014080 A KR 930014080A KR 100277805 B1 KR100277805 B1 KR 100277805B1
Authority
KR
South Korea
Prior art keywords
register
address
bit
data
mode
Prior art date
Application number
KR1019930014080A
Other languages
English (en)
Other versions
KR940004440A (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 KR940004440A publication Critical patent/KR940004440A/ko
Application granted granted Critical
Publication of KR100277805B1 publication Critical patent/KR100277805B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing

Landscapes

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

Abstract

데이타처리장치에 관한 것으로써, 하위CPU와의 상위 호환을 실현하여 연속적으로 사용할 수 있는 어드레스공간을 상대적으로 확장할 수 있는 CPU를 제공하기 위해, 데이터정보의 유지에는 2분할해서 이용할 수 있고, 하위CPU의 어드레스비트수 이상의 비트수로 어드레스로써도 이용할 수 있는 레지스터구성을 채용하고, 데이타정보의 바이트/워드사이즈는 연산코드의 사이즈비트로 지정하고, 긴워드사이즈의 데이타정보의 이용은 접두코드 또는 하위CPU와 같은 비트수의 새로 추가한 연산코드로 지정하고, 바이트사이즈의 데이타정보에 대해 이용하는 바이트사이즈 레지스터의 상위/하위는 레지스터지정필드의 소정의 1비트로 지정하며, 워드사이즈의 데이타정보에 대해서는 그 소정의 1비트로 워드사이즈레지스터의 상위/하위를 지정한다.
이러한 장치를 이용하는 것에, 의해 상위 및 하위레벨에서의 프로그램의 호환이 가능하게 된다.

Description

데이타처리장치
제1도는 본 발명의 1실시예에 관한 싱글칩 마이크로컴퓨터의 블럭도.
제2도는 하위CPU의 레지스터구서예의 설명도.
제3도는 제2도의 CPU의 범용레지스터의 데이타구성을 도시한 설명도.
제4도는 본 발명에 관한 데이타처리장치의 1실시예인 CPU의 레지스터구성 설명도.
제5도는 본 실시예에 관한 CPU의 레지스터상의 데이타구성도.
제6도는 본 실시예에 과ㅎ난 CPU에 의한 어드레싱모드와 실효어드레스 계산방법의 1예의 설명도.
제7도는 본 실시예에 관한 CPU에 의한 어드레싱모드와 실효어드레스 계산방법의 다른 예의 설명도.
제8도는 본 실시예에 관한 CPU에 의한 어드레싱모드와 실효어드레스 계산방법의 다른 예의 설명도.
제9도는 본 실시예에 관한 CPU의 명령포맷의 1예의 설명도.
제10도는 본 실시예에 관한 CPU의 다른 명령포맷의 설명도.
제11도는 본 실시예에 관한 CPU의 그외의 명령포맷의 설명도.
제12도는 본 실시예에 관한 CPU의 다른 명령포맷의 설명도.
제13도는 본 실시예에 관한 CPU의 또 다른 명령포맷의 설명도.
제14도는 본 실시예에 관한 CPU의 또 다른 명령포맷의 설명도.
제15도는 본 실시예에 관한 CPU의 또 그외의 명령포맷의 설명도.
제16도는 본 실시예에 관한 CPU의 나머지의 일부의 명령포맷의 설명도.
제17도는 제4도에 도시되는 레지스터의 지정형태에 관한 설명도.
제18도는 본 실시예에 관한 CPU의 1예의 블럭도.
제19도는 본 실시예에 관한 CPU의 명령과 어드레싱모드의 조합을 도시한 설명도.
제20도는 접두코드를 이용한 명령포맷의 설명도.
제21도는 접두코드를 이용한 다른 명령포맷의 설명도.
제22도는 본 발명의 1실시예에 관한 마이크로컴퓨터의 어드레스 맵.
제23도는 최소모드와 최대모드에서의 CPU의 동작의 차이점을 도시한 설명도.
제24도는 최소모드와 최대모드에서의 메모리상의 데이타형식의 차이점을 도시한 설명도.
본 발명은 데이타처리장치에 관한 것으로써, 예를들면 싱글칩 마이크로컴퓨터의 중앙처리장치에 이용해서 유효한 기술에 관한 것이다.
싱글칩 마이크로컴퓨터에는 그들의 중앙처리장치(이하, CPU라고도 한다)가 주로 취급하는 데이타길이에 의해서 4비트, 8비트, 16비트 마이크로컴퓨터등이 있다. 현재, 이들중에서는 8비트 싱글칩 마이크로컴퓨터가 가장 많이 사용되고, 기기조립 제어용으로써 사용되고 있다. 이와 같은 8비트 싱글칩 마이크로컴퓨터로써는 (주)히다찌세이사꾸쇼 평성 원년(1989)년 8월 발행 「H8/330 HD6473308, HD6433308 하드웨어매뉴얼」(대응 영역판 히다찌 싱글칩 마이크로컴퓨터H8/330 HD6473308, HD6433308 하드웨어 매뉴얼, 제1판, 1989년 12월) 등이 있다. 8비트 싱글칩 마이크로컴퓨터의 중앙처리장치(이하, 8비트CPU라 한다)는 주로 취급하는 데이타길이가 8비트이고, 이 때문에 8비트CPU는 8비트길이의 레지스터 또는 어큐뮬레이터와 또한 8비트 레지스터의 2배길이인 16비트레지스터를 갖는다. 이들 8비트 CPU는 특히 제한되지 않지만 데이타처리에 주로 8비트레지스터 또는 16비트레지스터를 사용하고, 메모리를 참조하기 위한 어드레스레지스터로써는 16비트레지스터만을 사용한다. 이와 같은 레지스터로써의 16비트 레지스터는 인덱스레지스터, 스택포인터, 프로그램카운터 등이라 불리우는 경우가 있다.
상기 8비트CPU에서는 명령의 최소단위가 16비트(2바이트)로 되어 있다. 또, 명령 또는 16비트데이타를 메모리에 배치하는 경우에는 우수에서 시작하는 연속된 2바이트의 영역에 배치하도록 한정되어 있다. 또, 상기 8비트CPU의 연산명령은 CPU내부의 레지스터간에서만 가능하게 되고, 메모리에 배치한 데이타의 조작은 이러한 데이타를 일단 CPU내부의 레지스터로 전송한후에 연산 명령에 의한 조작을 실행해야만 한다. 이와 같은 제한을 갖는 대신에 CPU의 내부구성, 특히 CPU의 실행상태를 제어하는 제어부의 구성을 단순하게 하여 논리적 및 물리적인 규모의 축소를 실현하고 있다. 논리적 및 물리적인 규모의 축소의 효과로써 제조비용을 삭감할 수 있다. 또, 부차적인 효과로써 동작속도의 향상을 도모할 수 있다. 즉, 상대적으로 작은 제조비용으로 상대적으로 큰 처리성능을 실현할 수 있다.
그러나, 상기 CPU에서는 어드레스레지스터가 16비트길이이고, CPU가 참조할 수 있는 메모리는 65536바이트(=216, 이하 64k바이트라 한다)이다. 이것에 대해서 8비트 싱글칩 마이크로컴퓨터가 사용되는 기기조립제어의 응용에서는 기기의 고성능화에 의해서 대용량의 프로그램 또는 데이타를 취급하는 것이 요구되고 있다. 또한, 이때 상기 종래의 CPU에 대해서 기능이 상위 호환인 것이 바람직하다. 즉, 사용자는 이미 상기 종래의 CPU에서 개발한 소오스프로그램 또는 목적프로그램의 전부 또는 일부를 그대로 이용할 수 있다. 이것에 의해 마이크로컴퓨터의 주변기능 또는 응용시스템에 의존하는 부분만을 변경해서 바로 소프트웨어 또는 응용시스템을 개발하여 그 개발기간을 단축할 수 있다.
이와 같은 요구에 대해서 본 발명자는 상기 CPU의 상기 논리적 및 물리적인 규모의 축소 또는 상대적으로 작은 제조비용으로 상대적으로 큰 처리성능을 실현하면서 64k바이트 이상의 메모리를 참조할 수 있는 CPU에 대해서 검토하였다.
이것에 대해 8비트CPU에 8비트의 페이지레지스터를 부가하고, 16비트레지스터와 조합해서 어드레스를 생성하는 것에 의해 참조할 수 있는 메모리를 16777216바이트(=224, 이하 16M바이트라 한다)로 한 싱글칩 마이크로컴퓨터의 예로써 (주)히다찌세이사꾸쇼 소화63년(1988)년 12월 발행 「H8/532 HD6475328, HD6435328 하드웨어 매뉴얼」(대응 영역판 히다찌 싱글칩 마이크로컴퓨터 H8/532 HD6475328, HD6435328 하드웨어 매뉴얼, 1판, 18년 8월) 등이 있다.
이와 같은 메모리참조방법은 페이지레지스터와 어드레스레지스터가 완전히 독립하고 있으므로, 하드웨어의 실현방법이 간단하게 되는 반면 페이지레지스터와 어드레스레지스터간에 자리올림 또는 빌림수의 전파가 실행되지 않아 프로그램 또는 컴파일러를 작성하는 경우에는 1군의 프로그램 또는 데이타가 페이지경계를 넘지않도록 항상 주의해야만 한다. 즉, 상기의 예에서 명령을 0번지에서 실행하면 당초 프로그램카운터는 H'0000(H'는 16진수를 나타낸다), 이것에 대응하는 페이지레지스터(이하, 코드드페이지레지스터라 한다)는 H'00이다. 분기명령을 사용하지 않고 연산명령등을 계속 실행하여 65535(H'FFFF)번지에 도달한후 다음의 명령을 실행하고자 한 경우에 프로그램카운터는 H'FFFF→H'0000으로 되어 오버플로한다. 이때의 자리올림은 코드페이지레지스터로 전파되지 않으므로 다음의 명령은 0번지로 되돌아간다. 이 때문에 프로그램은 64k바이트를 넘지않도록 분할해서 작성하고, 분할한 프로그램을 각각 다른 페이지에 할당해서 어떤 페이지에 존재하는 프로그램에서 다른 페이지에 존재하는 프로그램으로 실행을 옮기는 경우에는 페이지간 분기명령을 사요할 필요가 있다. 즉 프로그램중에서 분기명령을 사용하는 경우는 분기지가 동일 페이지내에 존재하는가 다른 페이지에 존재하는가를 의식해서 페이지내 분기명령과 페이지간 분기명령을 구분해서 사용할 필요가 있다. 데이타도 마찬가지로 64k바이트를 넘지않도록 분할해서 관리할 필요가 있다. 즉, 소위 포스트인크리머트레지스터 간접모드 등과 같이 메모리를 액세스할때마다 어드레스레지스터의 내용을 갱신해가는 경우 상기와 마찬가지로 어드레스레지스터가 오버플로해도 대응하는 ㅍ이지레지스터(이하, 데이타페이지 레지스터라 한다)에 자리올림이 전파되지 않는다. 또, 디스플레이스먼트를 갖는 레지스터 간접으로 16비트의 디스플레이스먼트를 사용하는 경우에는 16비트의 어드레스레지스터에 16비트의 디스플레이스먼트를 가산하여 자리올림 또는 빌림수가 발생해도 페이지레지스터로는 전파되지 않고 16비트의 가산결과와 페이지레지스터가 조합되어 어드레스가 생성된다. 즉, 페이지레지스터가 H'00, 어드레스레지스터가 H'FFFF, 디스플레이스먼트가 H'40000인 경우 결과로써 얻어지는 어드레스는 H'003FFF로 된다. 따라서, 페이지레지스터를 이용한 어드레스확장기술에 있어서는 실질적으로 이용할 수 있는 어드레싱모드로 제한된다.
이와 같은 프로그램 또는 데이타가 페이지경계를 넘지않도록 항상 주의해서 페이지레지스터의 관리를 실행하는 것은 소위 고급언어를 사용해서 프로그램한 내용을 CPU의 소위 기계어에 의한 프로그램(목적프로그램)으로 자동적으로 변환하는 컴파일러의 작성상의 큰 제약으로 되어 컴파일러의 설계효율을 저하시키며, 또 작성되는 목적프로그램의 규모를 현저하게 크게 하고, 또 그 결과로써 프로그램의 실행시간도 저하한다.
또, 64k바이트이하의 메모리공간에서의 충분한 응용에 대해서 상기 페이지레지스터는 데이타레지스터로써 사용할 수 없으므로 논리적 및 물리적으로 낭비로 되어 상기 상대적으로 작은 제조비용으로 상대적으로 큰 처리성능을 실현하는 목적에 위배된다.
본 발명의 목적은 논리적 및 물리적인 규모의 증가를 최소한으로 하면서 하위CPU와 같은 다른 데이타처리장치를 위해 이미 개발된 프로그램의 일부 또는 전부를 이용할 수 있는 하위 CPU와의 상위 호환을 실현하면서 연속적으로 사용할 수 있는 어드레스공간을 상대적으로 확장시킬 수 있는 데이타처리장치를 제공하는 것이다. 연속적으로 이용할 수 있는 어드레스공간을 상대적으로 확장시키는것은 8비트CPU를 사용해서 64k바이트 이상의 어드레스공간을 연속적으로 사용할 수 있다는 것이다.
본 발명의 다른 목적은 상기 목적에 부가해서 또 고급언어에 의해 작성된 프로그램의 컴파일을 용이하게 할 수 있는 데이타처리장치를 제공하는 것이다.
본 발명의 상기 및 그외의 목적과 새로운 특징은 본 명세서의 기술 및 첨부도면에서 명확하게 될 것이다.
본원에서 개시되는 발명중 대표적인 것의 개요를 간단히 설명하면 다음과 같다.
즉, CPU의 범용레지스터에 대해서 데이타정보의 유지에는 전부 또는 2등분할하거나 또는 2등 분할한 한쪽을 또 2등 분할해서 사용하고, 어드레스정보의 유지에는 하위 CPU의 어드레스비트수 보다도 많은 비트수로써 이용할 수 있게 한다. 예를들면 CPU의 16비트 범용레지스터에 16비트의 확장레지스터를 추가하고, 전체 32비트의 레지스터를 일괄하거나 또는 일부분을 어드레스레지스터로써 사용함과 동시에 데이타레지스터로써는 32비트 전체를 1단위로 해서 2분할하여 2개의 16비트데이타레지스터로써 또 16비트 데이타레지스터의 한쪽을 2분할해서 2개의 8비트레지스터로써 사용할 수 있게 한다. 이러한 레지스터의 이용형태의 지정은 다음과 같이 실행한다. 8비트레지스터로써 이용하는가 16비트 레지스터로써 이용하는가는 연산코드에 포함되는 데이타정보의 사이즈비트에 의해서 결정된다. 데이타정보의 사이즈가 8비트(바이트)일때 8비트레지스터의 상위 및 하위는 명령에 포함되는 레지스터 지정필드의 소정의 1비트에 의해서 지정된다. 데이타정보의 사이즈가 16비트(워드)일때 상기 소정의 1비트는 16비트레지스터의 상위 및 하위를 지정하게 된다. 그리고, 32비트(긴워드)레지스터로써 이용은 연산코드를 포함하는 명령의 전치코드(접두코드)에 의해서 지정한다. 또는 하위CPU의 연산코드와 같은 비트수의 새로운 연산코드를 추가해서 지정한다. 이와 같은 레지스터구성에 따라서 16비트레지스터를 구비하는 하위CPU의 명령 실행기능을 포함한다. 이것에 의해 하위 CPU를 위해 개발된 프로그램은 적어도 소오스프로그램의 레벨(고급언어에서의 기술레벨)에서 본 발명에 관한 상위CPU에 이용할 수 있게 된다. 즉, 적어도 소오스프로그램레벨에서 상위 호환을 실현한다. 여기에서 상위CPU라는 것은 그 레지스터구성 및 그 명령세트가 본 발명에 관한 CPU와 같은 데이타처리장치의 레지스터 구성 및 명령세트에 포함되는 CPU를 말한다.
또, 목적프로그램레벨에서의 상위 호환을 실현하기 위해서는 유효한 어드레스의 비트수와 벡터 및 스택의 단위사이즈를 상기 레지스터의 이용형태에 따라서 전환하는 동작모드, 예를들면 최대모드와 최소모드를 준비해두면 좋다. 최소모드에서 CPU는 하위CPU와 완전히 동일하게 동작한다. 최대모드에서 CPU는 그것에 구비된 최대한의 기능으로 상위CPU로써 동작된다.
상기 전치코드는 하위CPU의 명령코드와 중복하지 않는 것이 필요하기 때문에 이것을 미정의의 명령코드에 해당하는 코드로 하는것이 가장 적합하다.
명령의 단위는 데이타정보의 단위의 2배 길이로 할 수 있다. 예를들면 CPU의 레지스터를 32비트로 확장했을때 장래에 있어서의 4G바이트의 어드레스공간의 사용을 고려할때에는 명령길이를 2바이트 단위로 해서 24비트 절대어드레스 디스플레이스먼트를 예약영역을 포함해서 4바이트로 한다. 또, 실행수단 및 제어수단의 구성을 단순하게 하여 논리적 및 물리적인 규모의 축소에 기여하기 위해서는 명령코드중의 실효어드레스지정부의 하위비트를 명령코드중의 워드의 최하위비트로 하는 것이 바람직하다.
상기한 수단에 의하면 데이타정보의 유지에는 2분할 이용가능하고, 하위CPU의 어드레스비트수 이상의 비트수로 어드레스레지스터로써도 이용할 수 있는 레지스터구성을 채용하는 것, 데이타정보의 바이트/워드사이즈는 연산코드의 사이즈비트로 지정되는 것, 긴워드사이즈의 데이타정보의 이용은 접두코드 또는 하위CPU와 같은 비트수의 새로이 추가한 연산코드로 지정하는 것, 바이트사이즈의 데이타정보에 대해서 이용하는 바이트사이즈레지스터의 상위/하위는 레지스터지정필드의 소정의 1비트로 지정되는 것, 워드사이즈의 데이타정보에 대해서는 그 소정의 1비트로 워드사이즈레지스터의 상위/하위가 지정되는 것의 각각으로써 적어도 소오스프로그램레벨에서의 상위 호환을 실현한다.
상기 최대모드와 최소모드를 준비해두는 것은 목적프로그램레벨에서의 상위 호환을 실현한다.
8비트 CPU의 16비트 범용레지스터에 16비트의 확장레지스터를 추가해서 전체 32비트로 구성되는 레지스터구성은 소프트웨어상 및 하드웨어상에서의 데이타유지수단의 사용상의 편리함을 양호하게하고, 더나아가서는 CPU와 같은 데이타처리장치의 논리적 및 물리적인 규모의 축소를 달성한다. 또, 데이타유지수단의 전체 또는 일부분을 사용한 어드레스데이타의 유지라는 점에 대해서는 선형으로 이용할 수 있는 어드레스공간의 확장을 용이하게 하고, 또 페이지레지스터에 의한 어드레스공간 확장기술에 비해서 프로그램의 작성 및 컴파일을 용이하게 한다.
제1도에는 본 발명에 관한 데이타처리장치의 제1실시예인 싱글칩 마이크로컴퓨터 도시된다. 동일 도면에 도시되는 싱글칩 마이크로컴퓨터(100)은 전체의 제어를 담당하는 CPU(중앙처리장치)(1), CPU(1)의 동작프로그램 등을 보유하는 ROM(Read Only Memory)(2), CPU(1)의 작업영역 및 데이타의 일시기억영역 등으로써 이용되는 RAM(Random Access Memory)(3), 타이머(4), 직렬통신인터페이스(SCI)(5), 클럭펄스발생기(CPG)(68) 및 입출력포트(IOP)(61)∼(67)등의 기능블럭으로 구성되고, 이들은 내부버스(69)로 서로 접속되어 있다. 내부버스(69)는 특히 제한되지 않지만 어드레스버스, 데이타버스, 컨트롤버스를 포함한다. 이러한 싱글칩 마이크로컴퓨트(100)은 공지의 반도체집적회로 제조기술에 의해서 실리콘기판과 같은 1개의 반도체기판상에 형성되어 있다.
싱글칩 마이크로컴퓨터(100)은 클럭펄스발생기CPG의 단자XTAL, EXTAL에 접속되는 수정발진자 또는 외부에서 입력되는 외부클럭에 따라서 생성되는 기준클럭에 동기해서 동작을 실행한다. 이 기준클럭의 최소단위를 스테이트라 한다. 또, 도면에 있어서, Vss, Vcc는 전원단자이다. MODE1∼MODE3은 CPU(1)에 대한 모드신호이다.
상기 CPU(1)에 리세트신호RES가 부가되면 싱글칩 마이크로컴퓨터(100)은 리세트상태로 된다. 이 리세트상태를 해제하면 CPU(1)은 스타트어드레스를 리드해서 이 스타트어드레스에서 명령의 리드를 개시하는 예외처리를 실행한다. 상기 스타트어드레스는 특히 제한되지 않지만 0번지에 저장되어 있는 것으로 한다. 그후, CPU(1)은 특히 제한되지 않지만 순차로 ROM(2)에서 명령을 리드해서 해독하고, 그 해독결과에 따라서 데이타의 처리 또는 RAM(3), 타이머(4), SCI(5), 입출력포트(61)∼(67)등과 데이타의 전송을 실행한다. 즉, CPU(1)은 입출력포트(61)∼(67)등에서 입력되는 데이타 또는 SCI(5)등에서 입력되는 지시를 참조하면서 ROM(2)에 기억되어 있는 명령에 따라서 처리를 실행하고, 그 결과에 따라서 입출력포트(61)∼(67), 타이머(4) 등을 사용해서 외부로 신호를 출력하여 각종 기기의 제어를 실행하는 것이다. 특히 제한되지 않지만 상기 ROM(2), RAM(3), 타이머(4) 등의 리드/라이트는 바이트(8비트)/워드(16비트) 모두 2스테이트에서 실행하는 것으로 한다.
이러한 CPU(1)의 명령의 최소단위는 2바이트로 되고, 또 명령 또는 16비트 데이타를 메모리에 배치하는 경우에는 우수에서 시작하는 연속된 2바이트의 영역에 배치하는 것으로 되어 있다.
제2도에는 상기 CPU(1)의 하위CPU에 해당하는 CPU의 레지스터구성예가 도시된다. 본 실시예에 있어서 하위CPU라는것은 본 실시예에 관한 CPU(1)의 개발 이전에 제공되고 있던 CPU이다. 즉, 본 실시예에 관한 CPU(1)은 하위CPU에 대한 버션업판으로써 위치를 정할 수도 있다.
동일 도면에 도시되는 하위CPU는 각각 16비트길이의 8개의 범용레지스터 ROL, R0H∼R7L, R7H, 16비트길이의 프로그램카운터PC 및 8비트길이의 컨디션코드레지스터CCR을 갖고 있다. 범용레지스터ROL R0H∼R7L, R7H는 특히 제한되지 않지만 상위 8비트와 하위 8비트를 독립시켜서 8비트길이의 데이타를 저정할 수도 상위 및 하위를 연결해서 16비트길이의 데이타를 저장할 수도 있다. 컨디션코드레지스터CCR은 인터럽트 마스크비트(I), 자리올림플래그(C), 제로플래그(Z), 네가티브플래그(N) 및 오버플로플래그(V)를 포함하고 있다. 인터럽트마스크비트 I는 1일때 CPU(1)을 인터럽트금지상태로 하고, 0일때 인터럽트 허가상태로 한다. 그외의 플래그는 연산의 결과등을 반영한다.
제3도에는 제2도의 레지스터구성에서 이용되는 데이타가 도시된다.
하위CPU가 취급하는 바이트데이타는 상기와 마찬가지로 범용레지스터의 상위RiH 또는 하위 RiL에 저장된다(i=0∼7). 워드데이타는 범용레지스터Ri에 저장된다. 비트15가 데이타의 최상위비트에, 비트0이 최하위비트에 각각 대응한다. 어드레스정보(어드레스데이타라고도 한다)는 워드데이타로써 범용레지스터Ri에 저장된다. 비트15가 데이타의 최상위비트에, 비트0이 최하위비트에 각각 대응한다. 16비트레지스터8개, 8비트레지스터 16개를 이용할 수 있다. 데이타의 사이즈가 바이트인가 워드인가는 명령의 연산코드에 포함되는 1비트의 사이즈비트에 의해서 결정된다.
제4도에는 본 발명의 1실시예에 관한 상위 CPU로써의 CPU(1)의 레지스터구성예가 도시된다.
CPU(1)은 각각 16비트길이의 8개의 범용레지스터ROL, R0H∼R7L, R7H, 각각 16비트길이의 8개의 확장레지스터EO∼E7, 24비트길이의 프로그램카운터PC 및 8비트길이의 컨디션코드 레지스터CCR을 갖고 있다. 범용레지스터R0L, R0H∼R7L, R7H는 특히 제한되지 않지만 상위 8비트와 하위8비트를 독립시켜서 8비트길이의 데이타를 저장할 수도 상위 및 하위를 연결해서 16비트 길이의 데이타를 저장할 수도 있다. 확장레지스터 Ei는 8비트로 분할해서 각각 독립적으로 사용할 수는 없다.
범용레지스터RiL, RiH를 어드레스레지스터로써 사용하는 경우는 범용레지스터RiH, RiL이 보유하는 16비트를 어드레스의 하위 16비트로 하고, 대응하는 확장레지스터Ei의 내용을 어드레스의 상위 16비트로 해서 합계 32비트 또는 확장레지스터Ei의 상위8비트를 무시하고 24비트의 어드레스를 생성하는 것이다. CPU(1)은 24비트 또는 32비트의 어드레스로 규정되는 연속적인 어드레스공간을 이용할 수 있다. 또 이 32비트 또는 24비트의 어드레스를 여러가지로 수식할 수 있다. 이 수식을 실행하는 경우 하위16비트의 계산으로 자리올림 또는 빌림수가 발생한 경우에는 상위측의 확장레지스터Ei에 대해서 자리올림 또는 빌림이 실행된다. 또, 다음의 설명에서 어드레스스테이트는 24비트로 한다. 이것에 따라서 제4도에 있어서의 프로그램카운터PC의 비트길이는 24비트로 되어 있다. 프로그램카운터PC의 비트길이를 32비트로 해두어도 좋다.
확장레지스터E0∼E7은 데이타레지스터로써는 16비트레지스터로써 범용레지스터와 마찬가지로 사용할 수 있다. 즉, 확장레지스터끼리 및 확장레지스터와 범용레지스터간에서 데이타의 연산을 실행할 수 있게 되어 있다. 또, 컨디션코드레지스터CCR은 상기와 동일하므로, 그 상세한 설명은 생략한다. 프로그램카운터PC는 비트길이 이외는 상기와 동일하다.
제5도에는 범용레지스터ROL, R0H∼R7L, R7H와 확장레지스터E0∼E7의 데이타구성예가 도시된다. CPU(1)이 취급하는 바이트데이타는 범용레지스터의 상위RiH(i=0, 1, ...7)또는 하위 RiL에 저장된다. 워드데이타는 범용레지스터Ri(RiH, RiL) 또는 확장레지스터Ei에 저장된다. 이때 비트 15가 데이타의 최상위비트에, 비트0이 최하위비트에 각각 대응한다. 32비트의 긴워드데이타는 범용레지스터Ri 및 확장레지스터Ei에 저장된다. 24비트의 어드레스데이타는 긴워드데이타로써 확장레지스터Ei와 범용레지스터Ri에 저장된다. 이때 확장레지스터Ei의 상위8비트는 예약영역으로 된다. 또, 예약된 8비트와 24비트의 어드레스데이타를 합쳐서 단지 긴워드어드레스 데이타라고도 한다.
이러한 레지스터구성에 의하면 8비트레지스터 16개, 16비트레지스터 16개, 24비트레지스터 8개 사용할 수 있다. 이것은 상기 하위CPU와 상위호환성이 있고, 하위CPU가 갖는 레지스터를 사용해서 작성된 소프트웨어를 적어도 소오스프로그램 레벨로써 상기 CPU(1)에서 이용할 수 있는 것을 의미한다. CPU(1)이 하위CPU에 대해서 상위 호환을 실현하기 위해서는 레지스터의 지정의 방법에 대해서도 공통성을 필요로 한다. 이것에 대해서는 다음에 상세하게 기술하지만 어드레스레지스터로써는 레지스터번호만을 고려하면 좋고, 8비트연산 및 16비트연산중 어느것에 대해서도 명령의 레지스터지정필드중에서의 레지스터의 지정은 4비트로 가능하게 되어 있어 하위CPU와 명령포맷을 공통화할 수 있다. 또, 16개의 레지스터의 지정에 4비트를 사용하므로 낭비가 생기지 않고, 이점에서 이러한 레지스터구성은 CPU(1)의 내부구성을 단순하게 하여 논리적 및 물리적인 규모가 축소하고, 제조비용의 삭감 및 동작속도의 향상의 실현을 도모하는 목적이 손상되는 일이 없다.
제6도∼제8도에는 CPU(1)의 어드레싱모드와 실효어드레스의 계산방법의 1예가 도시된다.
제6도의 (1)에 도시되는 레지스터간접에서는 명령코드중에 레지스터를 지정하는 부분을 포함하고, 이 명령코드로 지정한 레지스터와 이것에 대응하는 확장레지스터의 내용의 합계24비트를 어드레스로해서 메모리상의 어드레스를 지정한다. 어드레스는 24비트로 좋으므로 상위8비트는 무시한다.
제6도의 (2), (3)에 도시되는 디스플레이스먼트를 갖는 레지스터간접은 상기 레지스터간접과 마찬가지로 얻어진 24비트의 어드레스에 명령코드중에 포함되는 디스플레이스먼트를 가산한 결과를 어드레스로 해서 메모리상의 어드레스를 지정한다. 가산결과는 어드레스의 지정에만 사용되고, 확장레지스터Ei 및 범용레지스터Ri의 내용에는 반영되지 않는다. 특히 제한되지 않지만 디스플레이스먼트는 24비트 또는 16비트이고, 16비트디스플레이스먼트는 가산하는 경우에 상위 16비트는 부호확장된다. 즉, 디스플레이스머트의 상위 16비트는 16비트 부호확장된다. 즉, 디스플레이스먼트의 상위 16비트는 16비트 디스플레이스먼트의 비트15와 같은 값인 것으로써 가산이 실행된다. 이 경우, 24비트 디스플레이스먼트의 상위 8비트는 명령이 2바이트단위인 것 및 장래의 확장에 대비해서 예약영역을 합쳐서 32비트의 디스플레이스먼트 지정부를 명령코드에 포함시키고 있다. 예약영역은 부호확장된다.
제7도의 (4)에 도시되는 포스트인크리먼트레지스터간접은 상기 레지스터간접과 마찬가지로 얻어진 24비트의 어드레스로 메모리상의 어드레스를 지정한다. 그후, 이 어드레스에 1 또는 2 또는 4를 가산하고, 그 가산결과가 확장레지스터 및 범용레지스터에 저장된다. 메모리상의 바이트데이타를 지정하는 경우 1이, 워드데이터를 지정하는 경우 2가, 어드레스데이타를 지정하는 경우 4가 각각 가산된다. 가산결과의 상위8비트도 확장레지스터에 저장된다.
제7도의 (5)에 도시되는 프리디크리먼트레지스터간접은 상기 레지스터간접과 마찬가지로 얻어진 24비트의 어드레스에서 1 또는 2 또는 4를 감산한 결과의 24비트의 어드레스로 메모리상의 어드레스를 지정한다. 그후, 그 감산결과가 확장레지스터 및 범용레지스터에 저장된다. 메모리상의 바이트데이타를 지정하는 경우 1이, 워드데이타를 지정하는 경우 2가, 어드레스데이타를 지정하는 경우 4가 각각 감산된다. 상기와 마찬가지로 어드레스가 24비트로 좋은 경우에는 특히 제한되지 않지만 감산결과의 상위 8비트도 확장레지스터에 저장된다.
제7도의 (6)에 도시되는 프로그램카운터상대는 프로그램카운터의 내용의 24비트의 어드레스에 명령코드중에 포함되는 디스플레이스먼트를 가산한 결과를 어드레스로 해서 메모리상의 어드레스를 지정한다. 가산결과는 프로그램카운터에 저장된다. 특히 제한되지 않지만 디스플레이스먼트는 16비트 또는 8비트이고, 이들 디스플레이스먼트는 가산하는 경우에 상위 8비트 또는 16비트는 부호 확장된다. 즉, 디스플레이먼트의 상위 8비트는 16비트 디스플레이스먼트의 비트15와 또는 상위16비트는 8비트 디스플레이스먼트의 비트7과 같은 값인 것으로 간주해서 가산이 실행된다. 프로그램카운터상대는 분기명령만으로 사용된다.
제8도에 도시되는 절대어드레스는 명령코드중에 포함되는 8비트, 16비트 또는 24비트의 절대어드레스를 어드레스로 해서 메모리상의 어드레스를 지정한다. 8비트절대어드레스는 상위 16비트가 1확장된다. 즉, 어드레스의 비트23∼8은 전체 비트가 1로 된다. 따라서, 사용할 수 있는 어드레스는 H'FFFF00∼H'FFFFFF의 256바이트이다. 또, 16비트 절대어드레스는 상위8비트가 부호 확장된다. 즉, 16비트 절대어드레스의 비트 15가 0이면 어드레스의 비트23∼16은 전체 비트가 0으로 되고, 비트15가 1이면 어드레스의 비트23∼16은 전체비트가 1로 된다. 따라서 사용할 수 있는 어드레스는 H'000000∼H'007FFF 및 H'FF8000∼H'FFFFFF의 64k바이트이다.
CPU(1)은 상기 이외에 이미디어트, 레지스터직접 등의 어드레싱모드를 실행하지만 이들은 본 발명에 직접적으로는 관계가 없으므로 상세한 설명은 생략한다.
하위CPU는 어드레스공간이 64k바이트이므로, 24비트디스플레이스먼트를 갖는 레지스터간접, 24비트의 절대어드레스는 존재하지 않는다. 또, 프리디크리먼트레지스터간접 등의 긴워드사이즈도 존재하지 않는다. 제6도∼제8도에 도시되는 그 밖의 어드레싱모드는 어드레스정보의 상위 8비트를 무시하면 하위CPU가 서포트하는 어드레싱모드 및 실효어드레스계산과 동일시할 수 있다. 따라서, CPU(1)은 어드레싱모드 및 어드레스계산이라는 점에서도 하위CPU와 종래의 CPU와 기능상 호환성이 있다.
제9도∼제16도에는 주요한 어드레싱모드의 명령의 명령포맷을 도시한다.
각각의 명령의 포맷은 각 명령의 기능 및 어드레싱모드를 나타내기 위한 연산코드부 op를 갖고, 그 연산코드부 op의 연산코드에 따라서 사용하는 레지스터를 지정하기 위한 레지스터지정부(rs, rd, ers, erd), 절대어드레스(aa), 디스플레이스먼트(d) 또는 이미디어트(xx)를 포함하고 있다. 명령포맷은 2바이트단위로 되고, 레지스터지정부는 명령코드의 제1워드의 비트7∼비트4, 비트3∼비트0 또는 특수형으로써 비트11∼비트8에 포함된다. 상기 레지스터지정부 rs는 바이트 또는 워즈사이즈의 소오스레지스터를 지정하고, 상기 레지스터지정부 rd는 바이트 또는 워드사이즈의 데이스네이션레지스터를 지정한다. 지정해야할 레지스터가 바이트사이즈인가 워드사이즈인가는 연산코드부의 연산코드에 따라서 결정된다. 즉, 16비트의 연산을 따르는 연산코드에 부수되는 경우 레지스터지정부 rs, rd의 하위측 3비트는 8개의 레지스터R0∼R7중 어느것인가를 지정하고, 지정된 레지스터중 확장레지스터를 이용할 것인가 범용레지스터를 이용할 것인가는 상기 레지스터지정부의 나머지 상위측 1비트에 의해서 지정된다. 8비트의 연산을 따르는 연산코드에 부수되는 경우 레지스터지정부 rs, rd의 하위측 3비트는 8개의 레지스터R0∼R7중 어느것인가를 지정하고, 지정된 레지스터중 범용레지스터의 상위측을 이용할것인가 하위측을 이용할 것인가는 상기 레지스터지정부의 나머지의 상위측 1비트에 의해서 결정된다. 레지스터지정부 ers는 긴워드사이즈의 소오스레지스터를 지정하고, 상기 레지스터지정부erd는 긴워드사이즈의 데스터네이션레지스터를 지정한다. 4비트 확보하고 있는 레지스터지정부ers, erd의 최상위 1비트는 명령디코드시에 실질적으로 무시된다. 이 경우에 실질적으로 유의의 3비트로 지정하는 레지스터가 32비트인 것은 긴워드데이타를 이용하는 그것 전용의 연산코드를 새로이 추가할 수 있는 경우에는 그 연산코드에 의해서 명확하게 된다. 그와 같은 새로이 연산코드를 추가할 수 없는 경우 또는 추가하는 것이 득책이 아니라 판단한 경우에는 후술하는 접두코드를 이용한다. 여기에서, 상기 긴워드데이터를 이용하는 그것 전용의 연산코드의 비트수는 하위CPU의 연산코드의 비트수와 같다.
명령포맷중에 있어서의 절대어드레스aa, 디스플레이스먼트d, 이미디어트xx는 최하위비트가 우수번째의 비트0으로 되도록 명령코드에 포함된다. 즉, 16비트이상의 절대어드레스aa, 디스플레이스먼트d, 이미디어트xx는 2바이트를 단위로 해서 포함된다. 이 때문에 24비트의 절대어드레스aa, 디스플레이스먼트d는 그 선두(상위비트측) 1바이트의 영역중에 소정비트수의 예약부를 포함해서 4바이트로 된다. 8비트의 절대어드레스aa, 디스플레이스먼트d, 이미디어트xx는 제1워드의 비트7∼0에 포함된다.
상기 명령포맷에 의하면 명령포맷중에서 레지스터를 지정하는 부분이 명령의 제1워드의 일부분에 고정되어 있기 때문에 명령의 디코드논리구성이 간단하게 된다. 또, 레지스터지정영역의 하위측3비트에 의해서 8개의 레지스터중 어느것을 지정하는가를 결정하고, 결정된 1개의 레지스터중의 어느 영역을 사용하는가를 상위측 1비트로 결정함과 동시에 상기 1비트로 결정되는 영역의 사이즈는 영역중에서 지정되는 데이타사이즈에 의해서, 즉 연산코드부의 연산코드에 의해서 결정되기 때문에 레지스터에 저장되는 데이타 및 어드레스테이타가 바이트, 워드, 긴워드의 수종류에 이를때에도 레지스터지정부의 비트수를 최소한으로 억제할 수 있다.
하위CPU는 상기와 마찬가지로 24비트 디스플레이스먼트를 갖는 레지스터간접, 24비트의 절대어드레스의 2개의 어드레싱모드 및 긴워드사이즈의 명령이 존재하지 않는다. 그 밖의 명령은 하위CPU와 CPU(1)에서 공통이고, CPU(1)은 하위CPU와 명령 포맷을 공통화하고 있다.
제17도에는 명령포맷중에 있어서의 레지스터지정부의 데이타와 그것에 의해서 지정되는 레지스터의 대응예가 도시된다.
레지스터지정부는 비트0∼2로 레지스터의 번호(0∼7)을 지정하고, 비트3은 바이트사이즈일때에는 범용레지스Ri의 상위측인가 하위측인가(RiH/RiL)를, 워드사이즈일때는 범용레지스터Ri인가 확장레지스터Ei인가를 지정한다. 또, 긴워드사이즈 데이타와 어드레스레지스터로써의 이용에 있어서는 상술한 바와 같이 비트3은 무시되어 실질적으로 존재하지 않는다.
제18도에는 CPU(1)의 내부블럭도가 도시된다. CPU(1)은 주로 마이크로ROM 또는 PLA(Programmable Login Array)로 구성되는 제어부CONT, 상기 범용레지스터ROL, R0H∼R7L, R7H, 확장레지스터E0∼E7, 프로그램카운터PC(PCL, PCH, PCE), 컨디션코드레지스터CCR등을 포함하는 실행부EXE 및 레지스터선택부REGSEL로 구성된다. 제어부CONT는 명령을 페치하고, 이것을 해독해서 명령의 실행에 필요한 각종 제어신호를 생성하거나 명령의 실행순서를 제어한다. 레지스터선택부REGSEL은 상기 명령의 해독결과에 따라서 레지스터의 선택신호를 생성한다.
실행부EXE는 또 일시레지스터TRL, TRH, TRE, 산술논리연산기 ALUL, ALUH, ALUE 리드데이타버퍼RDBL, RDBH, RDBE, 라이트데이타버퍼WDBL, WDBH, WDBE 및 어드레스버퍼ABL, ABH, ABE를 포함하고, 이들이 3개의 내부버스A(L, H, E), B(L, H, E), C(L, H, E) 및 셀렉터회로부SEL을 거쳐서 접속되어 있다. 리드데이타버퍼RDBL, RDBH, RDBE는 외부의 데이타버스D7∼D0, D15∼D8에 접속된다. 라이트데이타버퍼WDBL, WDBH, WDBE는 라이트데이타출력버퍼WDBOL, WDBOH를 거쳐서 상기 데이타버스D7∼D0, D15∼D8에 접속된다. 산술논리연산기ALUL, ALUH, ALUE는 명령에 따라서 지정되는 각종 연산, 프로그램카운터PC의 가산, 실효어드레스의 계산 등에 사용된다. 리드데이타버퍼RDBL, RDBH, RDBE는 ROM(2), RAM(3) 또는 도시하지 않은 외부메모리등에서 리드한 명령이나 데이타를 일시적으로 저장하고, 또 라이트데이타버퍼WDBL, WDBH, WDBE는 상기 ROM(2), RAM(3) 또는 외부메모리등으로 라이트해야할 데이타를 일시적으로 저장한다. 이것에 의해서 CPU(1)의 내부동작과 CPU(1) 외부의 리드/라이트동작의 타이밍을 조정하고 있다. 어드레스버퍼ABL, ABH, ABE는 CPU(1)이 리드/라이트하는 어드레스를 일시적으로 저장한다.
특히 제한되지 않지만 기본적으로 상기 실행부EXE내의 각 회로블럭은 8비트의 2블럭 및 16비트의 1블럭으로 구성되어 있다. 범용레지스터는 8비트의 2블럭으로 구성되고, R0H∼R7H가 비트15∼비트8, R0L∼R7L이 비트7∼비트0에 대응한다. 범용레지스터의 더욱 상위측의 비트, 즉 비트31∼비트16은 16비트의 1블럭의 확장레지스터E0∼E7이 대응한다. 내부버스는 이들의 비트31∼비트16, 비트15∼비트8, 비트7∼비트0에 대응해서 각각 A, B, C가 병행해서 마련되어 있다. 그외의 상기 일시레지스터TR, ALU, 리드데이타버퍼, 라이트데이타버퍼 등도 동일하다. 이들 물리적인 배치는 특히 제한되지 않는다.
이와 같은 범용레지스터Ri, 확장레지스터Ei 를 마련하고, 하위CPU와의 호환성을 유지하면서 16M바이트의 어드레스공간을 사용할 수 있게한 경우 하위CPU라도 주요한 연산은 레지스터간에서 실행하고, 메모리와 레지스터의 연산은 직접 실행하지 않는(즉 1명령에서는 실행하지 않는)명령체계로 하는 것이 득책이다.
첫번째로 하위CPU가 메모리와 레지스터간에서의 직접적인 연산을 서포트해서 명령체계를 최적화하고 있는 경우에는 상위CPU를 위해 새로운 명령을 추가하는 것이 곤란하다. 즉, 메모리와 레지스터의 연산에 대해서는 메모리의 어드레싱모드와 연산의 종류의 조합으로 결정되는 연산코드의 종류가 비약적으로 많아져 신규의 연산코드를 추가하는 것은 곤란하다. 또는 신규의 연산코드는 필연적으로 최적화할 수 없고 명령길이가 길어져 프로그램사이즈를 크게 하며, 더나아가서는 프로그램의 실행효율도 악화시켜 버린다.
두번째로 16M바이트의 어드레스공간을 유효하게 이용하기 위해서는 상기와 같은 복잡한 어드레싱모드가 필요하다. 연산명령의 대부분에 이와 같은 복잡한 어드레싱모드를 실행 가능하게 하면 제어부CONT의 구성이 복잡하게 되어 논리적 및 물리적인 규모를 최소한으로 하는 목적에 위배되기 때문이다. 메모리의 액세스에는 상술한 여러가지의 어드레싱모드를 갖는 전송명령으로 레지스터와의 데이타의 전송을 실행하고, 레지스터상에서 연산등의 데이타처리를 실행하는 것으로 하면 좋다. 범용레지스터Ri는 8비트길이로 최대 16개분으로써 사용할 수 있으며, 또 범용레지스터Ri 및 확장레지스터Ei 는 16비트길이로 최대 16개분으로써 사용할 수 있고, 어떤 처리에 필요한 데이타는 레지스터상에 배치할 수 있다. 또는 적어도 사용빈도가 높은 데이타의 대부분은 레지스터상에 배치할 수 있다. 따라서, 처리프로그램의 증가나 실행속도의 저하라는 불합리가 발생하는 경우는 적다고 생각된다.
메모리에 대한 연산을 실행할 필요가 있는 명령으로써는 비트조작 명령이 있다. 이들은 바이트단위로 할당된 어드레스의 제n비트로써 지정되지만 바이트단위로 취급되는 데이타는 아니고 각각의 비트가 독립된 기능을 갖고 있다. 예를들면 타이머의 동작을 제어하는 레지스터와 같은 경우 제10비트 및 제1비트로 타이머의 클럭을 선택하고, 제2비트로는 타이머카운터와 비교레지스터의 내용이 일치했을때 타이머카운터를 클리어하는가 하지않는가를 지정하고, 제3비트로는 상기 일치했을때 인터럽트를 발생하는가 하지않는가를 지정하는 것이다. 이들은 1비트단위로 1로 세트하거나 0으로 클리어 할 필요가 있다. 또는 입력포트의 소정의 1비트가 0인가 1인가에 의해서 CPU(1)의 처리프로그램이 다른 경우 상기 1비트의 데이타를 판정할 필요가 있다. 이러한 1비트데이타는 메모리에 대해서 직접 연산하지 않으면 안된다. 바이트단위로 일단 레지스터로 전송한후에 비트조작을 실행하면 상기 전송과 비트조작간에 인터럽트가 들어와 예를들면 상기 입력포트의 값이 변화해버리는 불합리가 발생하기 때문이다. 그러나, 이와 같은 비트조작명령의 대상으로 되는 어드레스는 고정적으로 복잡한 어드레싱모드는 필요하지 않다. 절대어드레스와 최소한의 레지스터간접을 실행할 수 있으면 좋다. 또, 절대어드레스의 경우도 전체 어드레스공간을 사용할 필요는 없고, 상기 타이머 및 입출력포트 등이 존재하는 어드레스범위에만 사용할 수 있으면 충분하다고 생각된다. 이와 같은 어드레스범위의 지정에 사용할 수 있는 절대어드레스는 8비트로 충분하다. 16비트로 하면 사용할 수 있는 어드레스 범위가 확장되지만 명령길이가 길게되어 제어가 복잡하게 된다. 적어도 24비트로써 16M바이트의 전체공간을 사용해야만 하는 경우는 매우 드물다고 생각된다. 그래서, 본 실시예에 있어서의 CPU(1)은 범용레지스터와 같은 내부의 레지스터와 주변회로의 제어용 레지스터와 같은 외부레지스터간에서의 직접적인 연산을 위한 비트조작명령에 대해서는 서포트하지만 이것에 의해서 1비트 또는 수비트의 비트조작명령을 직접 외부주변회로간에서 실행해도 이것에 의해서 제어부의 규모나 명령의 종류가 극단적으로 증대할 염려는 없다.
제19도에 명령의 기능과 어드레싱모드의 조합의 관계의 1예가 도시된다.
동일 도면에 있어서, #는 이미디어트, R은 레지스터직접, @R은 레지스터간접, @(d16,R) 및 @(d24,R)은 디스플레이스먼트를 갖는 레지스터간접, @-R은 프리디크리먼트레지스터간접, @R+는 포스트인크리먼트레지스터간접, @a8, @a16, @a24는 절대어드레스, @(d8, PC), @(d16,PC)는 프로그램카운터상대의 각 어드레싱모드를 의미한다. 또, 동일도면에 있어서 B는 바이트, W는 워드, L은 긴워드를 의미한다. 프로그램카운터상대는 분기명령전용이다. 이것 이외의 어드레싱모드는 전송명령으로 사용할 수 있다. 연산명령은 이미디어트와 레지스터직접을 사용할 수 있다. 단 단항 연산은 레지스터직접뿐이다.
제19도에 있어서, 하위CPU로 서포트하는 것은 ○을 붙이고 있다. 인크리먼트 및 디크리먼트의 긴워드는 하위CPU에서는 어드레스레지스터가 워드사이즈이므로 워드사이즈의 연산으로 된다.
산술연산명령은 상기와 같이 바이트, 워드, 긴워드를 사용할 수 있지만, 자리올림을 갖는 가감산은 바이트사이즈만 사용할 수 있다. 인크리먼트, 디크리먼트는 레지스터를 카운터로 하는 경우를 위해 ±1은 바이트, 워드, 긴워드를 사용할 수 있게 하지만 ±2, ±4는 어드레스 계산용이므로 긴워드만을 사용할 수 있게 하고 있다. 논리연산명령, 시프트명령, 로테이트명령은 특히 제한되지 않지만 바이트, 워드, 긴워드를 사용할 수 있다. 이것은 16M바이트의 어드레스공간을 사용하는 응용의 하나로써 프린터의 문자데이타를 취급하는 경우에 문자데이타의 흑백반전이나 사체 등의 가공에 이들 명령이 많이 사용된다고 생각되기 때문이다. 역으로 64k바이트의 어드레스공간이 서포트하는 하위CPU에서는 논리연산명령, 시프트명령, 로테이트명령은 특히 제한되지 않지만 바이트만을 사용할 수 있다.
상기와 같이 주요한 연산은 레지스터간에서 실행하고, 메모리와 레지스터간에서의 직접적인 연산은 실행하지 않는 명령체계로 해도 신규의 연산코드의 추가가 곤란한 경우에는 예를들면 긴워드사이즈의 전송명령, 연산명령을 워드사이즈의 상당부분에 1워드의 접두코드를 추가한 것으로 하면 특히 제어부의 논리적 및 물리적인 규모를 최소한으로 할 수 있다.
제20도 및 제21도에는 접두코드를 이용한 1예의 명령포맷이 도시된다.
상기와 같이 디스플레이스먼트를 갖는 레지스터간접의 워드사이즈의 명령포맷의 앞에 1워드의 접두코드를 마련해서 긴워드사이즈를 표현하고 있다. 접두코드는 하위CPU의 명령코드와 중복하지 않는 것이 필요하기 때문에 이것을 미정의의 명령 코드에 해당하는 코드로 하는 것이 가장 적합하다. 그것 이외에 오퍼랜드지정필드의 정보를 실질적으로 필요로 하지 않는 논오퍼레이션(NOP)명령과 같은 명령의 오퍼랜드지정필드를 소정의 코드로 만족시킨 것을 가능하다면 접두코드로써 이용할 수 있다.
제22도에는 이러한 마이크로컴퓨터의 어드레스맵이 도시된다.
내장ROM은 어드레스H'000000부터 배치되고, 내장주변기능과 내장RAM은 H'FFF800이후에 배치되어 있고, 이들 사이는 외부공간으로 된다. 내장주변기능과 내장RAM을 어드레스공간의 중간, 예를들면 H'00F800∼H'00FFF등에 배치할 수 있지만, 이 경우에는 외부공간이 2곳으로 분리되고, 또 내장ROM으로 라이트한 프로그램과 외부공간에 존재하는 프로그램을 연속적으로 사용할 수 없어 본 발명의 목적에 위배된다. 따라서, 주로 프로그램영역으로 되어야할 내장ROM과 주로 데이타영역으로 되어야할 내장주변기능 및 내장RAM은 서로 어드레스공간의 반대에 배치하고, 이 사이는 연속된 공간으로 해야 한다. 특히, 내장ROM은 스타트어드레스 또는 스타트어드레스를 저장한 어드레스를 포함할 필요가 있다.
또, 16비트 절대어드레스는 상위8비트를 부호 확장해서 실효어드레스를 생성하기 때문에 지정범위는 H'000000∼H'007FFF 및 H'FF8000∼H'FFFFFF로써 내장ROM의 32k바이트 및 내장RAM과 내장주변기능을 지정할 수 있다. 32k바이트보다 큰 내장ROM의 부분을 제외하고 하위CPU와 마찬가지로 16비트 절대어드레스로 내장기능 블럭을 지정할 수 있다. 따라서, 하위CPU에서의 소프트웨어의 이식을 용이하게 실행할 수 있다. 또, 16비트 디스플레이스먼트레지스터간접의 경우 디스플레이스먼트를 기준어드레스, 레지스터의 내용을 상대값으로 해석했을때의 기준어드레스의 지정범위와 일치한다.
이상의 실시예에 있어서는 어드레스공간을 16M바이트로 했지만, 또 본 발명에서 확장된 기능을 필요하지만, 어드레스공간은 종래와 마찬가지로 64k바이트로 충분히 응용도 고려된다.
예를들면 외부공간을 사용하지 않고 싱글칩 마이크로컴퓨터의 모든 단자를 입출력포트로써 사용해서, 응용시스템의 내장면적을 축소하고자하는 경우등은 내장영역의 합계가 64k바이트 이하이면 어드레스공간은 종래와 마찬가지로 64k바이트로 문제없다.
이러한 응용에 있어서는 벡터의 리드 또는 프로그램카운터의 스택은 16비트, 즉 2바이트단위로 실행할 수 있으면 좋고, 4바이트분의 액세스를 실행하는 것은 낭비로써 실행시간의 저하 및 메모리의 이용효율 저하로 된다.
특히 제한되지 않지만 64k바이트의 어드레스공간에서 동작하는 모드를 최소모드, 상기와 같이 64k바이트이상의 어드레스공간에서 동작하는 모드를 최대모드로 한다. 또, 이들 최소모드 및 최대모드는 제1도에 MODE1∼MODE3단자에 의해서 적절하게 지정된다.
제23도에는 최소모드 및 최대모드에서의 CPU의 동작의 차이점이 도시된다.
상기와 같이 최대모드에서는 어드레스의 최대갯수는 24비트이고, 벡터·예외처리시의 스택·서브루틴콜시의 스택은 모두 어드레스24비트를 포함하여 4바이트단위이다.
최소모드에서 어드레스의 최대갯수는 16비트이고, 벡터·서브루틴콜시의 스택은 모두 어드레스16비트분의 2바이트로 축소된다. 또, 특히 제한되지 않지만 CPU(1)이 어드레스싱글모드로써 소위 포스트인크리먼트 레지스터간접, 프리디크리먼트 레지스터간접을 갖는것으로 하고 어드레스레지스터의 갱신은 하위16비트로 한다. 즉, 확장레지스터의 갱신은 실행하지 않는다. 최소모드는 최대모드에 대해서 고속화와 메모리 이용효율의 향상을 실현할 수 있다.
제24도에는 최소모드, 최대모드에서의 메모리상의 데이타형식이 도시된다.
최대모드에서 벡터는 4바이트단위로 4의 배수번지를 선두로 해서 배치된다. 선두1바이트는 예약영역이고, 나머지 3바이트가 스타트어드레스로써 사용된다. 스택은 예외처리시, 서브루틴콜시 모두 4바이트단위로 우수번지를 선두로 해서 배치된다.
최소모드에서 벡터는 2바이트단위로 우수번지를 선두로 해서 배치된다. 이들이 스타트어드레스(하위 16비트, 상위8비트는 0으로 간주된다)로써 사용된다. 스택은 예외처리시 4바이트단위로 우수번지를 선두로 해서 CCR·예약영역과 PC하위 16비트가 저장된다. 서브루틴콜시는 2바이트단위로 우수번지를 선두로 해서 PC하위16비트가 저장된다.
이러한 최소모드와 최대모드를 준비해두면 최소모드에서 동작하는 CPU(1)은 목적프로그램레벨에서 상위 호환을 실현할 수 있다.
이러한 싱글칩 마이크로컴퓨터를 테스트하는 것을 생각하면 최소모드 및 최대모드중 어느 것에서도 벡터영역을 외부메모리로 할 수 있는 것이 바람직하다. 최대모드는 넓은 어드레스를 유효하게 이용하기 위해 ROM무효확장모드를 설정하는 것으로 생각되고, 이러한 ROM무효확장모드에서는 벡터영역이 외부메모리로 되므로 문제는 없다. 그러나, 최소모드를 싱글칩모드만으로 한 경우에는 최소한 테스트용으로 벡터영역을 외부메모리로 할 필요가 있다. 테스트시에 내장ROM의 내용은 사용자의 프로그램이 저장되어 있어 제조자는 이용할 수 없다. 이 때문에 최소모드 및 최대모드의 벡터구조의 전환기능을 테스트할 수 없게 된다.
이것에 대해서는 예를들면 테스트모드시에만 리드/라이트가능한 레지스터를 마련하고, 이러한 비트의 설정에 의해서 최소모드이며, 또한 ROM무효확장모드를 설정할 수 있게 하면 좋다. 최소한 ROM상의 벡터영역을 리드했을때에 데이타를 외부에서 입력할 수 있게 하면 좋다.
상기 실시예에 의하면 다음의 효과를 얻을 수 있다.
(1) 8비트CPU의 16비트 범용레지스터에 16비트의 확장레지스터를 추가한 형태로써 전체 32비트이 레지스터( Ri+Ei )를 일괄해서 또는 그 일부분을 어드레스레지스터로 해서 사용함과 동시에 데이타레지스터로써는 32비트전체를 1단위로 해서 2분할하여 2개의 16비트 데이타레지스터( Ei, Ri )로써, 또 16비트데이타레지스터의 한쪽을 2분할해서 2개의 8비트레지스터(Ri H, Ri L)로써 사용할 수 있게 한다. 그리고, 8비트레지스터로써 이용하는가 16비트레지스터로써 이용하는가는 연산코드에 포함되는 데이타정보의 사이즈비트에 의해서 결정한다. 데이타정보의 사이즈가 8비트(바이트)일때 8비트레지스터의 상위(Ri H) 및 하위(Ri L)은 명령에 포함되는 레지스터지정필드의 소정의 1비트에 의해서 지정한다. 데이타정보의 사이즈가 16비트(워드)일때 상기 소정의 1비트는 16비트레지스터의 상위(Ei ) 및 하위(Ri )를 지정하게 된다. 그리고, 32비트레지스터(Ri +Ei )로써의 이용은 연산코드를 포함하는 명령의 전치코드(접두코드)에 의해서 지정한다. 또는 하위CPU의 연산코드와 같은 비트수의 새로운 연산코드를 추가해서 지정한다. 이와 같이 레지스터의 지정방식도 포함해서 CPU(1)의 레지스터구성은 하위CPU의 레지스터구성을 포함한다. 이것을 기본으로 16비트의 범용레지스터를 구비하는 하위CPU가 서포트하는 명령실행기능을 CPU(1)이 포함한다. 이것에 의해 하위CPU를 위해 개발된 프로그램은 적어도 소오스프로그램의 레벨에서 상위CPU(1)에 이용할 수 있게 된다. 즉, 적어도 소오스프로그램레벨에서 상위 호환을 실현할 수 있다.
(2) 유효한 어드레스의 비트수와 벡터 및 스택의 단위사이즈를 상기 레지스터Ei, Ri, Ri H, Ri L의 이용형태에 따라서 전환하는 동작모드로써 최대모드와 최소모드를 준비해두는 것에 의해 최소모드에서 동작하는 CPU(1)은 목적프로그램레벨에서의 상위 호환을 실현할 수 있다.
(3) 긴워드데이타를 이용하는 명령에 접도코드를 채용하는 것에 의해 주요한 연산은 레지스터간에서 실행하고, 메모리와 레지스터간에서의 직접적인 연산은 실행하지 않는 명령체계로 해도 신규의 연산코드의 추가가 곤란한 경우에 대처할 수 있음과 동시에 제어부의 논리적 및 물리적인 규모의 증대를 현저하게 억제할 수 있다.
(4) 접두코드로써 미정의의 명령 코드에 해당하는 코드를 채용하는 것에 의해 다른 연산코드와의 중복을 완전히 저지할 수 있다.
(5) 전체 32비트의 레지스터Ri, Ei 를 일괄하거나 또는 일부를 어드레스레지스터로 해서 사용함과 동시에 2분할해서 16비트 데이타레지스터로 하고, 또 16비트데이타레지스터의 한쪽을 8비트레지스터로 해서 사용할 수 있게 하는 것에 의해서 데이타처리를 효율 좋게 실행하면서 16M바이트의 넓은 어드레스공간을 사용할 수 있다.
(6) 명령길이를 2바이트 단위로 해서 24비트 절대어드레스 디스플레이스먼트를 예약영역을 포함해서 4바이트로 하는 것에 의해 장래 4G바이트의 어드레스공간을 사용할 수 있다.
(7) 8비트레지스터로써 이용할 수 있는 레지스터의 수와 16비트레지스터로써 이용할 수 있는 레지스터의 수를 같게 하는 것에 의해 명령길이를 단축해서 프로그램효율을 향상시킬 수 있다.
(8) 명령코드중의 레지스터지정부를 레지스터 전체를 지정하는 3비트 및 레지스터의 부분을 지정하는 1비트로 구성하는 것에 의해 레지스터선택회로의 논리적 및 물리적인 규모를 축소할 수 있다.
(9) 명령코드중의 실효오드레스지정부의 최하위비트를 명령코드중의 워드의 최하위비트로 하는 것에 의해 실행부 및 제어부의 구성을 단순하게 하여 논리적 및 물리적인 규모를 축소랄 수 있다.
(10) 싱글칩 마이크로컴퓨터(100)의 논리적 및 물리적인 규모를 최소한으로 해서 64k바이트이상의 어드레스공간을 사용할 수 있다.
이상 본 발명자에 의해서 이루어진 발명을 실시예에 따라서 구체적으로 설명했지만 본 발명은 그것에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러가지로 변경가능한 것은 물론이다.
예를들면 CPU(1)의 블럭구성, 레지스터구성, 구첵적인 논리회로예 등에 대해서는 전혀 제한받지 않는다. 레지스터의 비트수 또는 레지스터의 갯수 등은 임의로 선택할 수도 있다. 어드레싱모드와 실효어드레스의 계산방법에 대해서도 여러가지로 변경할 수 있다.
이상의 설명에서는 주로 본 발명자에 의해서 이루어진 발명을 그 배경으로 된 이용분야인 싱글칩 마이크로컴퓨터에 적용한 경우에 대해서 기술했지만 그것에 한정되는 것은 아니고, 그 밖의 데이타처리 장치에도 적용할 수 있고, 데이타의 처리성능보다도 데이타의 규모가 중요한 경우등에 적용할 수 있다.
본원에서 개시되는 발명중 대표적인 것에 의해서 얻을 수 있는 효과를 간단히 설명하면 다음과 같다.
(1) 레지스터지정방식도 포함해서 하위CPU와 같은 다른 데이타처리장치의 레지스터구성 및 하위CPU의 명령실행기능을 포함하는 것에 의해 하위CPU를 위해 개발된 프로그램은 적어도 소오스프로그램의 레벨에서 본 발명에 관한 데이타처리장치에 이용할 수 있게되고, 적어도 소오스프로그램레벨에서의 상위 호환을 실현할 수 있다.
(2) 유효한 어드레스의 비트수와 벡터 및 스택의 단위사이즈를 상기 레지스터의 이용형태에 따라서 전환하는 동작모드를 미리 준비해두는 것에 의해 목적프로그램레벨에서의 상위 호환도 간단히 실현할 수 있게 된다.
(3) 8비트CPU의 16비트 범용레지스터에 16비트의 확장레지스터를 추가해서 전체 32비트로 구성되는 데이타유지수단은 데이타의 유지에는 전부 또는 2분할하거나 또는 한쪽을 또 2분할해서 사용할 수 있고, 이것에 의해서 소프트웨어상 및 하드웨어상에서의 데이타유지수단의 사용상의 편리함이 양호하게 되고, 더나아가서는 데이타처리장치의 논리적 및 물리적인 규모의 축소를 달성할 수 있다. 또, 데이타유지수단의 전체 또는 일부분을 사용한 어드레스데이타의 유지라는 점에 대해서는 선형으로 이용할 수 있는 어드레스공간의 확장이 용이하게 되며, 또 페이지레지스터에 의한 어드레스공간확장기술에 비해서 프로그램의 작성 및 컴파일을 용이하게 할 수 있다. 따라서 고급언언에 의해 작성된 프로그램을 효율좋게 실행할 수 있다.
(4) n비트데이타의 연산명령과 2n비트데이타의 연산명령을 고려했을때 전체를 2등분할해서 사용되는 부분과 2등분할된 한쪽을 또 2등분할해서 사용되는 부분을 갖도록 각각의 데이타유지수단을 구성함과 동시에 2등분할에서 이용되는 부분의 전체의 수가 또 2등분할에서 이용되는 부분의 전체의 수와 같게 되도록 여러 단위의 상기 데이타유지수단을 마련하는 것에 의해 명령길이를 단축해서 프로그램효율을 향상시킬 수 있다.
(5) 명령의 단위를 데이타의 단위의 2배길이로 하는 것에 의해 장래에 있어서의 어드레스공간의 확장에 용이하게 대응할 수 있다. 또, 명령코드중의 실효어드레스지정부의 최하위비트를 명령코드중의 워드의 최하위비트로 하는 것에 의해 실행수단 및 제어수단의 구성을 단순하게 하여 논리적 및 물리적인 규모의 축소에 기여한다.
(6) 데이타유지수단을 지정하는 부분이 명령의 단위중의 일부분에 고정된 명령포맷을 채용하는 것에 의해 레지스터와 같은 상기 데이타유지수단을 위한 선택회로 또는 명령디코더회로의 논리적 및 물리적인 규모를 축소할 수 있다. 또, 그 경우에 상기 지정하는 부분을 여러 단위중에서 필요한 데이타유지수단을 지정하는 영역과 1개의 데이타유지수단내의 어느 부분인가를 지정하는 영역으로 구성하고, 또 명령중에서 지정되는 데이타사이즈에 따라서 상기 데이타유지수단내의 어느 부분인가를 지정하는 영역이 2등분할된 어느 부분을 지정하는 것인가 또 2등분할된 어느 부분을 지정하는 것인가를 결정하도록 하는 것에 의해 데이타유지수단에 저장되는 데이타 및 어드레스데이타가 바이트, 워드, 긴워드의 여러종류에 이를때에도 명령포맷중에 있어서의 레지스터지정부의 비트수를 최소한으로 억제할 수 있다.
(7) 따라서 논리적 및 물리적인 규모의 증가를 최소한으로 하면서 하위CPU와 같은 다른 데이타처리장치 때문에 이미 개발된 프로그램의 일부 또는 전부를 이용할 수 있는 하위CPU와의 상위 호환을 실현하면서 연속적으로 사용할 수 있는 어드레스공간을 상대적으로 확장할 수 있다.

Claims (7)

  1. 제1 모드와 제2 모드를 갖는 싱글칩 데이타프로세서로서,
    각각이 소정의 비트길이를 갖고 각각이 제1 부분과 제2 부분을 갖는 여러개의 범용레지스터,
    상기 여러개의 범용레지스터의 상기 제1 부분에 결합된 제1 산술논리연산유닛 및
    상기 여러개의 범용레지스터의 상기 제2 부분에 결합된 제2 산술논리연산유닛을 포함하고,
    상기 제1 모드는 상기 제1 산술논리연산유닛과 상기 제2 산술논리연산유닛이 어드레스연산과 데이타연산을 실행하는 것을 가능하게 하고,
    상기 제2 모드는 상기 제2 산술논리연산유닛이 어드레스연산과 데이타연산을 실행하는 것을 가능하게 함과 동시에 상기 제1 산술논리연산유닛이 데이타연산을 실행하는 것을 가능하게 하는 것을 특징으로 하는 싱글칩 데이타프로세서.
  2. 제1항에 있어서,
    상기 제1 모드에서 동작할지 또는 상기 제2 모드에서 동작할지를 결정하는 모드신호를 받는 외부단자를 더 포함하는 것을 특징으로 하는 싱글칩 데이타프로세서.
  3. 제1항에 있어서,
    상기 여러개의 범용레지스터와 상기 제1 및 제2 산술논리연산유닛을 갖는 중앙처리장치.
    상기 중앙처리장치에 결합되고 상기 여러개의 범용레지스터중의 하나에서 어드레스신호가 공급되는 내부버스
    상기 내부버스에 결합되고 상기 싱글칩 데이타프로세서의 프로그램데이타를 유지하는 제1 메모리 및
    상기 내부버스에 결합되고 상기 중앙처리장치에 대해 작업영역을 제공하는 제2 메모리를 갖고,
    상기 중앙처리장치의 어드레스공간은 상기 제1 메모리의 어드레스가 배치된 영역을 포함하는 제1 영역, 상기 제2 메모리의 어드레스가 배치된 영역을 포함하는 제2 영역 및 상기 제1 영역과 상기 제2 영역 사이이고 외부공간의 어드레스를 위한 제3 영역을 포함하고,
    상기 제1 모드시의 상기 제3 영역의 어드레스공간은 상기 제2 모드시의 상기 제3 영역의 어드레스공간보다 넓은 것을 특징으로 하는 싱글칩 데이타프로세서.
  4. 제3항에 있어서,
    상기 제1 부분은 상위측 레지스터이고 상기 제2 부분은 하위측 레지스터이고, 상기 상위측 레지스터와 상기 하위측 레지스터는 상기 제1 모드시에 조합레지스터를 규정하기 위해 협조해서 동작하고, 상기 조합레지스터에는 어드레스데이타가 유지되고, 상기 제2 모드시에는 상기 하위측레지스터에 어드레스데이타가 유지되는 것을 특징으로 하는 싱글칩 데이타프로세서.
  5. 각각이 제1 소정비트길이를 갖는 제1 부분과 제2 소정비트길이를 갖는 제2 부분을 구비한 여러개의 범용레지스터,
    상기 여러개의 범용레지스터의 제1 부분에 결합된 제1 산술논리연산유닛,
    상기 여러개의 범용레지스터의 제2 부분에 결합된 제2 산술논리연산유닛 및
    상기 제1 및 제2 산술논리연산유닛에 결합되고 상기 제1 및 제2 산술논리연산유닛을 제어하는 모드제어수단을 포함하고,
    상기 모드제어수단은
    상위모드인 경우, 상기 제1 및 제2 산술논리연산유닛의 양쪽이 협조해서 상기 제1 부분에서 제1 어드레스부를 추출하고 상기 제2 부분에서 제2 어드레스부를 추출하고 제1 어드레스공간을 액세스하기 위한 어드레스연산을 실행하도록, 상기 제1 및 제2 산술논리연산유닛을 제어하고,
    하위모드인 경우, 상기 제2 산술논리연산유닛이 상기 제2 어드레스부를 추출하고 상기 제1 어드레스공간보다 작은 제2 어드레스공간을 액세스하기 위한 어드레스연산을 실행하고 상기 제1 산술논리연산유닛이 데이타연산을 실행하도록, 상기 제1 및 제2 산술논리연산유닛을 제어하는 것을 특징으로 하는 싱글칩 데이타프로세서.
  6. 제5항에 있어서,
    상기 제1 부분은 상위측 레지스터이고 상기 제2 부분은 하위측 레지스터이고, 상기 상위측 레지스터와 상기 하위측 레지스터는 상기 상위모드시에 조합레지스터를 규정하기 위해 협조해서 동작하고, 상기 조합레지스터에는 어드레스데이타가 유지되고, 상기 하위모드시에는 상기 하위측레지스터에 어드레스데이타가 유지되는 것을 특징으로 하는 싱글칩 데이타프로세서.
  7. 각각이 제1 비트길이를 갖는 제1 부분과 제2 비트길이를 갖는 제2 부분을 구비한 여러개의 범용레지스터, 상기 여러개의 범용레지스터의 제1 부분에 결합된 제1 산술논리연산유닛 및 상기 여러개의 범용레지스터의 제2 부분에 결합된 제2 산술논리연산유닛을 포함하는 2모드의 싱글칩 데이타프로세서를 준비하는 스텝,
    제1 모드에 있어서[ⅰ] 상기 제2 비트길이보다 큰 어드레스를 처리하기 위해, 상기 제1 및 제2 산술논리연산유닛을 협조해서 사용하여 어드레스연산을 실행하거나 또는 [ⅱ] 상기 제1 비트길이보다 큰 데이타를 처리하기 위해, 상기 제1 및 제2 산술논리연산유닛을 협조해서 사용하여 데이타연산을 실행하는 스텝 및
    제2 모드에 있어서 [a] 상기 제2 비트길이의 어드레스를 처리하기 위해, 상기 제2 산술논리연산유닛을 사용하여 어드레스연산을 실행함과 동시에 [b] 상기 제1 비트길이의 데이타를 처리하기 위해, 상기 제1 산술논리연산유닛을 사용하여 데이타연산을 실행하는 스텝을 포함하는 것을 특징으로 하는 데이타처리방법.
KR1019930014080A 1992-08-03 1993-07-24 데이타처리장치 KR100277805B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP22644792A JP3432532B2 (ja) 1992-08-03 1992-08-03 データ処理装置
JP92-226447 1992-08-03

Publications (2)

Publication Number Publication Date
KR940004440A KR940004440A (ko) 1994-03-15
KR100277805B1 true KR100277805B1 (ko) 2001-01-15

Family

ID=16845245

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930014080A KR100277805B1 (ko) 1992-08-03 1993-07-24 데이타처리장치

Country Status (2)

Country Link
JP (1) JP3432532B2 (ko)
KR (1) KR100277805B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100788913B1 (ko) * 2005-11-18 2007-12-27 주식회사디아이 반도체 장치의 테스트 시스템을 위한 전치 분기 패턴 발생장치

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3839835B2 (ja) * 1999-04-30 2006-11-01 株式会社ルネサステクノロジ データ処理装置及びマイクロコンピュータ
JP2001202243A (ja) 1999-04-30 2001-07-27 Hitachi Ltd データ処理装置
JP4073721B2 (ja) 2002-06-28 2008-04-09 株式会社ルネサステクノロジ データ処理装置
JP4545777B2 (ja) * 2002-06-28 2010-09-15 ルネサスエレクトロニクス株式会社 データ処理装置
JP2005196729A (ja) * 2003-12-10 2005-07-21 Renesas Technology Corp コンパイラおよび命令コード出力装置
JP2008204249A (ja) * 2007-02-21 2008-09-04 Renesas Technology Corp データプロセッサ
JP5357475B2 (ja) * 2008-09-09 2013-12-04 ルネサスエレクトロニクス株式会社 データプロセッサ
US8914619B2 (en) 2010-06-22 2014-12-16 International Business Machines Corporation High-word facility for extending the number of general purpose registers available to instructions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100788913B1 (ko) * 2005-11-18 2007-12-27 주식회사디아이 반도체 장치의 테스트 시스템을 위한 전치 분기 패턴 발생장치

Also Published As

Publication number Publication date
JP3432532B2 (ja) 2003-08-04
KR940004440A (ko) 1994-03-15
JPH0651981A (ja) 1994-02-25

Similar Documents

Publication Publication Date Title
US10514922B1 (en) Transfer triggered microcontroller with orthogonal instruction set
EP0138419B1 (en) Central processing unit for a digital computer
US4449184A (en) Extended address, single and multiple bit microprocessor
KR100439367B1 (ko) 마이크로컴퓨터
US7203818B2 (en) Microcontroller instruction set
US3930236A (en) Small micro program data processing system employing multi-syllable micro instructions
US5249280A (en) Microcomputer having a memory bank switching apparatus for accessing a selected memory bank in an external memory
WO1997044739A1 (en) Apparatus for converting data between different endian formats and system and method employing same
US5666510A (en) Data processing device having an expandable address space
US4005391A (en) Peripheral interrupt priority resolution in a micro program data processor having plural levels of subinstruction sets
US6401197B1 (en) Microprocessor and multiprocessor system
KR100465388B1 (ko) Risc 구조의 8비트 마이크로 제어기
KR100272622B1 (ko) 데이타 처리장치
US6438683B1 (en) Technique using FIFO memory for booting a programmable microprocessor from a host computer
KR100277805B1 (ko) 데이타처리장치
JP4988082B2 (ja) マイクロプロセッサ及びデータ処理システム
US5680632A (en) Method for providing an extensible register in the first and second data processing systems
KR19990036893A (ko) 다중 어드레싱 모드를 실행하는 프로세서 구조 및 그 설계방법
US4893235A (en) Central processing unit for a digital computer
KR100960095B1 (ko) 마이크로컨트롤러 명령어 셋트
JP3539951B2 (ja) データ処理装置
JPH09505428A (ja) ページアドレスモードを有するマイクロコントローラ
JP3154542B2 (ja) データ処理装置
KR100897857B1 (ko) 마이크로컨트롤러 명령어 셋트
JP2696578B2 (ja) データ処理装置

Legal Events

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

Payment date: 20120924

Year of fee payment: 13

EXPY Expiration of term