KR100287600B1 - 확장가능한레지스터를제공하는데이타처리시스템및그방법 - Google Patents

확장가능한레지스터를제공하는데이타처리시스템및그방법 Download PDF

Info

Publication number
KR100287600B1
KR100287600B1 KR1019930028977A KR930028977A KR100287600B1 KR 100287600 B1 KR100287600 B1 KR 100287600B1 KR 1019930028977 A KR1019930028977 A KR 1019930028977A KR 930028977 A KR930028977 A KR 930028977A KR 100287600 B1 KR100287600 B1 KR 100287600B1
Authority
KR
South Korea
Prior art keywords
register
instruction
data processing
processing system
index register
Prior art date
Application number
KR1019930028977A
Other languages
English (en)
Other versions
KR940015806A (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 KR940015806A publication Critical patent/KR940015806A/ko
Application granted granted Critical
Publication of KR100287600B1 publication Critical patent/KR100287600B1/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
    • 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/342Extension of operand address space
    • 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
    • G06F9/30101Special purpose registers
    • 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
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length

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)
  • Memory System (AREA)

Abstract

확장 가능한 레지스터가 제공된 데이타 처리 시스템 및 방법에 관한 것이다. 새로운 CPU(12)는 확장 가능한 인덱스 레지스터(304)를 가진다. 새로운 CPU(12)는 8-비트 인덱스 레지스터(302)를 갖는 이전의 CPU와 목적 코드 호환 가능하고, 또한, 새로운 CPU(12)의 인덱스 레지스터(304)는 새로운 명령어들이 사용되었을 때 16-비트로 효과적으로 확장될 수 있다. 결과적으로, 사용자는 이전의 CPU를 위하여 기록된 어셈블리 코드 소프트웨어를 사용하는 것과 8-비트 인덱스 레지스터의 기능을 갖는 것을 선택할 수 있거나, 새로운 CPU(12)를 위하여 새로운 어셈블르 코드 소프트웨어를 기록하는 것과 16-비트 인덱스 레지스터의 기능을 갖는 것을 선택할 수 있다.

Description

[발명의 명칭]
확장 가능한 레지스터를 제공하는 데이타 처리 시스템 및 그 방법
[도면의 간단한 설명]
제 1 도는 본 발명의 한 실시예에 따른 데이타 처리 시스템(10)의 블록도.
제 2 도는 본 발명의 한 실시예에 따른 제 1 도의 중앙처리장치(CPU)(12)의 블록도.
제 3 도는 본 발명의 한 실시예에 따른 제 2 도의 실행 유니트(56)의 부분의 블록도.
제 4 도는 8-비트 종래 기술 인덱스 레지스터(302)의 블록도.
제 5 도는 인덱스 레지스터(하이) 회로(205)와 인덱스 레지스터(로우) 회로(212)의 연결에 의해 형성된 16-비트 인덱스 레지스터(304)의 블록도.
제 6 도는 어떤 이전의 명령어들(old instructions) 및 새로운 명령어들(new instructions)의 그룹이 인덱스 레지스터 부분들(205 및 212)에 작용하는 영향을 도시한 표.
제 7 도는 인덱스 레지스터(하이)(205)를 변경할 수 있는 새로운 명령어들의 설명을 위해 도시한 표.
* 도면의 주요 부분에 대한 부호의 설명 *
10 : 데이타 처리 시스템 12 : 중앙 처리 장치
26 : 외부 버스 인터페이스 56 : 실행 유니트
[발명의 상세한 설명]
<발명의 분야>
본 발명은 데이타 처리시스템에 관한 것으로, 특히 확장 가능한 레지스터를 제공하는 데이타 처리 시스템에 관한 것이다.
<발명의 배경>
중앙 처리 장치(CPU)는 일반적으로 마이크로-제어기 집적 회로(MCU)의 기본 ";두뇌(brain)";이다. CPU 이외에, MCU는 통상적으로 메모리, 타이머 및, 버스 인터페이스와 같은 하나 이상의 보드상의 주변 장치 또는 섹션을 포함한다. 그러나, CPU는 일반적으로 MCU를 제어하기 위해 사용되는 소프트웨어 명령어를 수신 및 번역하는 책임을 맡는다.
하나의 특징 CPU는 다양한 MCU 상에서 이용될 수 있는데, 만일, 동일한 CPU가 다양한 MCU 상에서 이용된다면, 그들 MCU는 일반적으로 ";패밀리(Family)";(예를 들어, 텍사스, 오스틴 소재의 모토로라로부터 입수 가능한 마이크로-제어기의 MC68HCO5 패밀리)를 형성한다. 다양한 MCU 상에 동일 CPU를 사용하는 것은 제조업자와 소비자의 관점에서 모두 유리한 장점이 있다. 그 중 하나의 장점은 동일한 CPU를 사용하는 패밀리에서 MCU들 사이의 스프트웨어 호환성이다.
그러나, CPU의 새롭고 강력한 버전이 요구될 때는 문제가 발생된다. CPU의 새롭고 강력한 버전을 설계할 때에 실행되어야 하는 중요한 결정 중 하나는 이전 CPU와의 ";목적 코드 호환성(object code compatibility)";을 유지하는지의 여부를 결정하는 것이다. 본 명세서에 기재된 ";목적 코드 호환 가능한(object code compatible)";의 용어는 새로운 CPU의 특성이거나, 특성이 아님을 의미한다. 즉, 새로운(신) CPU는 이전(구) CPU를 위해 기록된 어셈블리 언어 소프트웨어를 실행할 수 있거나, 실행할 수 없음을 의미한다. 따라서, 이전 CPU와 새로운 CPU 사이의 어떠한 차이도 이전 CPU를 위해 기록된 어셈블리 언어 소프트웨어 프로그램을 완전히 투명성(transparent)이 있어야 한다.
이전의 CPU와 목적 코드 호환 가능한 새로운 CPU를 설계하는 것은 매우 중요한 장점이 있다. 그 장점은 이전의 CPU를 위해 기록된 소프트웨어가 새로운 CPU을 위해 바로 사용될 수 있는 것이다. 따라서, 이전의 CPU를 구매하여 사용하는 소비자는 간단히 교환하여 새롭고 강력한 CPU를 사용할 수 있다. 그리고, 소비자들이 이전의 CPU에 사용하던 소프트웨어 또한 새로운 CPU에서 동작할 수 있도록 소비자들에 확실하게 보장한다. 따라서, 소비자는 더욱 강력한 CPU로 업그레이드하기 위하여 소프트웨어를 변경 또는 재기록하는데 비용이 들지 않는다. 새롭고 강력한 CPU를 설계하는 것은 소프트웨어를 변경시키는 것과 관련된 비용 및 위험성을 초래함이 없이 강력한 CPU로 소비자가 업그레이드할 수 있는 이전의 CPU와 호환 가능한 목적 코드이다.
새로운 강력한 CPU를 제조하기 위한 한 방법은 레지스터의 비트 수를 증가시켜 하나 이상의 레지스터들을 확장하는 것이다. 예를 들어, 8비트에서 16 비트로 인덱스 레지스터를 증가시킨다. 상기 인덱스 레지스터는 인덱스된 어드레싱 모드(indexed addressing mode)에 사용된다. 인덱스된 어드레싱 모드는 메모리내의 데이타의 테이블을 액세스하기 위해 일반적으로 사용된다. 인덱스 레지스터를 8 비트에서 16 비트로 증가시킴으로써, 인덱스된 어드레싱 모드에서 CPU에 의해 액세스 및 사용될 수 있는 메모리 공간은 크게 증가된다. 사실상, 어떤 소비자는 새로운 제품 특성을 수용하기 위하여 인덱스 레지스터 8 비트에서 16 비트로 확장되는데 절대적으로 요구되는 새로운 제품을 구입한다.
일반적으로, 인덱스된 어드레싱 모드에 있어서, 인덱스 레지스터에 저장된 값은 메모리내의 순차적 위치에 저장된 데이타 값의 테이블의 시작에 대한 포인터로서 이용된다. 일반적으로 명령어의 일부로서 포함되는 오프셋 값은 데이타 값들의 테이블내의 하나의 특정 위치를 액세스하기 위해서 인덱스 레지스터내의 값에 부가된다. 그러나, 인덱스 레지스터가 사용될 수 있는 다른 다양한 방법이 존재한다. 인덱스된 어드레싱 모드들은 본 기술 분야에 숙련에 의해 이미 공지되어 있다.
새로운 CPU의 인덱스 레지스터를 8 비트 보다 16 비트로 간단히 만들면, 이전의 CPU를 위해 기록된 몇몇 소프트웨어가 새로운 CPU에 의해 실행될 때 다른 결과를 초래할 수 있기 때문에 목적 코드 호환성을 파괴할 수 있다. 예를 들어, 인덱스 레지스터가 $FF 값을 포함할 때 인덱스 레지스터를 증가시키는 소프트웨어 프로그램은 이전의 CPU의 8-비트 인덱스 레지스터가 $00 값으로 감소시킬 수 있는 반면에 동일한 소프트웨어 프로그램이 새로운 CPU 내의 16-비트 인덱스 레지스터를 $0100 값으로 증가시킬 수 있다. 따라서, 새로운 CPU의 인덱스 레지스터를 8 비트 보다 16 비트로 단순히 만드는 것은 목적 코드 호환성을 파괴한다.
비록, 목적 코드 호환성을 유지하면서 레지스터의 크기를 증가 또는 확장시킬 수 있지만, 이는 과다한 수의 새로운 명령어와 이러한 새로운 명령어들을 구현하기 위해 필요한 관련 회로가 요구된다. 확장 가능한 레지스터를 사용하거나 그 레지스터에 작용하는 각각의 이전의 명령어를 위한 새로운 복사 명령어(new duplicate instruction)에 의해, 새로운 CPU는 레지스터의 크기를 확장하고 목적 코드 호환성을 유지할 수 있다. 제 1 명령어 세트는 이전의 CPU의 명령어와 동일하다(즉, 8 비트의 확장 가능한 레지스터만을 이용하거나 그 레지스터에만 작용한다). 따라서, 목적 코드 호환성을 유지한다. 제 2 명령어 세트는 제 1 명령어 세트와 동일한 기능을 수행하는 복사 세트(duplicate set)이지만, 상기 제 2 세트는 완전 16 비트 확장 가능한 레지스터를 사용한다.
인덱스 레지스터의 경우에는 인덱스 레지스터를 사용하거나 그 레지스터에 작용하는 상당수의 명령어들이 존재한다. 그래서, 인덱스 레지스터를 사용하거나 그 레지스터에 작용하는 각각의 명령어에 대한 명령어들의 복사 세트를 부가하는 것은 회로에 엄청나게 큰 부가를 초래한다.따라서, 가능한 적은 회로와 적은 비용을 부가하고, 이전의 CPU와 목적 코드 호환 가능하게 되어 있는 강력한 CPU를 설계하는 것이 목적이다.
<발명의 요약>
앞서 설명한 필요성은 본 발명에 의해 충족되면서 다른 장점들이 성취된다. 본 발명의 한 형태는 확장 가능한 레지스터를 제공하는 데이타 처리 시스템 및 그 방법이다.
한 실시예에 있어서, 본 발명은 데이타 처리 시스템에 확장 가능한 레지스터를 제공하기 위한 방법이다. 이 방법은 제 1 레지스터 부분과 제 2 레지스터 부분을 갖는 레지스터를 제공하는 단계를 포함한다. 또한, 상기 방법은 종래 기술의 데이타 처리 시스템과 목적 코드 호환 가능한 제 1 명령어를 수신하는 단계를 포함한다. 제 1 명령어의 수신에 응답하여, 제1 레지스터 부분이 변경되지만 제 2 레지스터 부분은 변경되지 않는다. 본 방법은 종래 기술을 데이타 처리 시스템에서 정의되지 않는 op 코드를 갖는 제 2 명령어를 수신하는 단계를 포함한다. 제 2 명령어의 수신에 응답하여, 제 2 레지스터 부분은 변경된다. 본방법은 종래 기술의 데이타 처리 시스템과 목적 코드 호환 가능한 제 3 명령어를 수신하는 단계를 포함한다. 제 3 명령어의 수신에 응답하여, 제 1 및 제 2 레지스터 부분 모두를 사용하여 동작이 실행된다.
본 발명은 첨부한 도면과 관련된 아래의 상세한 설명으로부터 본 기술 분야에 숙련자에 의해 이해될 수 있다.
<양호한 실시예의 설명>
레지스터의 길이를 확장하면서 목적코드 호환성을 유지하기 위해서는 보다 많은 비용이 소요된다. 인덱스 레지스터에 포함된 이전의 명령어들 각각에 대해 새로운 16-비트 명령어를 부가하는 것은 비용이 너무 많이 든다. 비용이 적게 드는 해결책이 필요하다.
본 명세서에 사용된 용어로서, ";확장 가능한 레지스터";의 용어는 길이가 확장될 수 있는 레지스터를 의미한다. 레지스터를 언급할 때 용어 ";사이즈(size)";는 ";길이(length)";의 용어와 동일하게 사용된다.
본 발명은 현존하는 인덱스 레지스터에 상위 바이트를 부과한다. 본 발명은 인덱스 레지스터의 새로운 상위 바이트를 변경할 수 있는 소수의 새로운 명령어만을 부가할 뿐만 아니라, 이전의 CPU로부터의 모든 명령어를 이용한다. 이전의 CPU로부터의 모든 명령어는 정확히 똑같은 16 진수 op 코드를 가지며, 소수의 새로운 명령어는 이전의 CPU에서 정의되지 않은 op 코드를 가짐을 주목한다.
본 발명에 있어서, 이전의 CPU로부터의 몇몇 명령어들은 인덱스 레지스터 중 8 비트만을 사용(이전의 CPU와 유사하게)하는 반면에; 이전의 CPU로부터의 다른 명령어들은 인덱스 레지스터의 16 비트 모두를 사용하도록 변경(이전의 CPU와 다르게)되는 것은 매우 중요하다. 그러나, 비록 이전의 명령어들 몇몇이 인덱스 레지스터의 16 비트 모두를 사용할지라도, 목적 코드 호환성은 여전히 유지된다.
인덱스 레지스터의 새로운 상위 바이트는 $00 값으로 리셋으로 초기화되고, 오직 소수의 새로운 명령어들만이 인덱스 레지스터의 새로운 상위 바이트를 변경할 수 있다. 인데스 레지스터를 변경하는 이전의 명령어들 중 어떠한 것도 새로운 상위 바이트에 작용하지 않는다. 그러나, 이전 또는 새로운 명령어의 여부와 관계없이, 모든 인덱스된 어드레싱 모드 명령어들이 인덱스 레지스터의 16 비트 전체를 사용하고, 새로운 상위 바이트를 포함한다는 것은 중요하다. 따라서, 이전의 CPU에서 인덱스 레지스터의 단지 8 비트만을 사용하는 이전의 인덱스된 어드레싱 모드는 새로운 CPU(12)에서 인덱스 레지스터의 16 비트 전체를 사용한다.
그러나, 인덱스 레지스터의 새로운 상위 바이트는 단지 이전의 명령어들이 이용될 때 항상 $00을 포함하기 때문에, 목적코드 호환성은 유지된다. 그리고, $xy 값을 포함하는 8-비트 인덱스 레지스터를 사용하는 모든 인덱스된 어드레싱 동작은 $00xy 값을 포함하는 완전 16-비트 인덱스 레지스터를 사용하는 대응 인덱스된 어드레싱 동작과 동일한 결과를 얻는다.
그러나, 만일, 소비자가 새로운 명령어들을 이용하는 새로운 어셈블리 코드 소프트웨어를 기록하고자 할 때, 소비자는 완전 16-비트 인덱스 레지스터를 유리하게 이용할 수 있고, 인덱스된 어드레싱 모드에서 CPU에 의해 액세스 될 수 있는 증가된 메모리 공간을 이용할 수 있다.
따라서, 본 발명에 의해 새로운 CPU(12)는 확장 가능한 인덱스 레지스터와 함께 설계될 수 있다. 새로운 CPU(12)는 8-비트 인덱스 레지스터를 갖는 이전의 CPU와 목적 코드 호환 가능하고, 또한, 새로운 CPU(12)의 인덱스 레지스터는 새로운 명령어들이 사용될 때 16 비트로 효과적으로 확장될 수 있다. 결과적으로, 사용자는 이전의 CPU를 위하여 기록된 어셈블리 코드 소프트웨어를 사용하는 것과 8-비트 인덱스 레지스터의 기능을 갖는 것을 선택할 수 있거나, 새로운 CPU(12)를 위하여 새로운 어셈블리 코드 소프트 웨어를 기록하는 것과 16-비트 인덱스 레지스터의 기능을 갖는 것을 선택할 수 있다.
용어 ";긍정하다(assert)";와 ";부정하다(negate)";는 신호, 상태 비트(status bit), 또는 유사 장차들이 각각 논리적 참 상태(true state) 또는 논리적 거짓 상태(false state)로 되는 것을 참조할 때 사용된다. 논리적으로 참 상태가 논리 레벨 1 일 때, 논리 거짓 상태는 논리 레벨 0 이 된다. 그리고, 논리 참 상태가 논리 레벨 0 이면, 논리 거짓 상태는 논리 레벨 1 이 된다.
용서 ";버스(bus)";는 데이타, 어드레스, 제어, 또는 상태와 같은 하나 이상의 다양한 형태의 정보를 전달하기 위해 사용될 수 있는 다수의 신호들을 언급하기 위해 사용된다. 임의 숫자에 앞에 있는 기호 ";$";는 숫자가 16 진수 또는 기수 16 형식(base sixteen form)으로 펴현됨을 나타낸다.
제 1 도는 데이타 처리 시스템의 한 실시예를 설명한다. 데이타 처리 시스템 회로(10)는 중앙 처리 장치(CPU) 회로(12), 회로의 시스템 집적화 섹션(14), 회로의 직렬 섹션(16), 랜덤 액세스 메모리(RAM) 회로(18), 판독 전용 메모리(ROM) 회로(20), 다른 메모리 회로(22)(예를 들어, 전기적으로 소거 가능한 프로그램 가능 판독 전용 메모리, EEPROM), 포트 논리 회로(24), 외부 버스 인터페이스 회로(26), 회로의 타이머 섹션(28) 및, 직접 메모리 액세스(DMA)회로(30)를 포함한다.
CPU(12), 시스템 집적화 회로(14), 직렬 회로(16), RAM(18), ROM(20), 다른 메모리 회로(22), 포트 논리 회로(24), 외부 버스 인터페이스 회로(26), 타이머 회로(28) 및 DMA(30) 각각은 정보 버스(32)에 양방향 결합된다. CPU(12)와 시스템 집적화 섹션(14)은 버스(34)를 통해 양방향 결합된다. 이와 유사하게 CPU(12)는 버스(36)를 통해 DMA(30)에 결합된다.
시스템 집적화 섹션(14)은 집적 회로 핀(38)에 의해 데이타 처리 시스템(10)외부의 신호들을 수신 및 전송할 수 있다. 직렬 섹션(16)도 집적회로 핀(40)을 통하여 데이타 처리 시스템(10) 외부 신호들을 수신 및 전송할 수 있다. 메모리 형태에 따라, 다른 메모리(22)가 집적 회로 핀(42)을 경유하여 데이타 처리 시스템(10) 외부 신호들을 선택적으로 수신 및 전송할 수 있다. 포트 논리(24)는 집적 회로 핀(44)을 통해 데이타 처리 시스템(10) 외부 신호들을 수신 및 전송할 수 있다. 외부 버스 인터페이스(26)는 집적회로 핀(46)을 통해 데이타 처리 시스템 외부 신호를 수신 및 전송할 수 있다. 그리고, 타이머 섹션(28)은 집적회로 핀(48)을 통해 데이타 처리 시스템(10) 외부 신호들을 수신 및 전송할 수 있다.
제 1 도에 도시된 데이타 처리 시스템(10)의 실시예는 마이크로-제어기들의 한 패밀리 내의 하나의 특정한 마이크로-제어기를 설명한다. 일반적으로, 동일한 패밀리내의 마이크로-제어기는 다수의 보드상의 다른 주변 장치들을 갖기 때문에, 제 1 도는 데이타 처리 시스템의 단지 하나의 실시예를 제공한다. 예를 들어, 데이타 처리 시스템(10)의 다른 실시예는 ROM(20), 외부 버스 인테페이스(26) 또는 DAM(30)를 갖지 않을 수 있다. 사실상, 데이타 처리 시스템(10)의 다른 실시예는 제 1 도에 도시된 것보다 적거나 많거나 또는 다른 주변 장치들을 가질 수 있다.
제 2 도는 본 발명의 한 실시예에 따른 제 1 도의 중앙 처리 장치(CPU)(12)의 블럭도이다. 제 2 도에 도시된 것 처럼, CPU(12)는 세 개의 주요 부분, 즉, 제어 유니트(54), 실행 유니트(56) 및, 시퀀서(58)로 개념적으로 분할 될 수 있다.
제어 유니트(54)는 제어 프로그램 가능한 놀리 배열(control programmable logic array : control PLA) 회로(60)와 랜덤 제어 논리 회로(62)를 포함한다. 제어 유니트(54)에 있어서, 제어 PLA(60)는 다수의 신호 즉, 집합적으로 라벨이 붙여진 제어 PLA 신호를 전송하기 위하여 랜던 제어 논리 회로(62)에 접속된다. 랜덤 제어 논리 (62)는 다수의 타이밍된 제어 신호를 전송하고 다수의 상태 신호를 수신하기 위하여 실행 유니트(56) 결합된다. 제어 PLA(60)는 시퀀서 입력 신호로 라벨이 붙여진 신호들을 전달하고 시퀀서 출력 신호로 라벨 붙여진 신호들을 수신하기 위하여 시퀀서(58)에 결합된다. 시퀀서(58)는 명령어들을 수신하기 위하여 정보 버스(32)에 결합된다. 실행 유니트(56)는 정보 버스(32)에 양방향 결합된다. 시퀀서(58)의 몇몇 실시예에서는 디코더(59)를 포함할 수 있다.
제 3 도는 제 2 도의 실행 유니트(56)의 부분의 한 실시예를 설명한다. 프로그램 카운터(하이)/증분 레지수터 회로(200)는 버스(202)로부터 정보를 수신하여 버스(204)에 정보를 제공한다. 인덱스 레지스터(하이) 회로(305)는 버스(202)로부터 정보를 수신하여 버스(204)에 정보를 공급한다. 프로그램 카운터(로우) 레지스터 회로(206)는 버스(202)로부터 정보를 수신하여 버스(204)에 정보를 공급한다. 스택 포인터 레지스터 회로(208)는 버스(202)로부터 정보를 수신하여 버스(204)에 정보를 공급한다. 누산기 레지스터 회로(210)는 버스(202)로부터 정보를 수신하여 버스(204)에 정보를 공급한다. 인덱스 레지스터(로우) 회로(212)는 버스(202)로부터 정보를 수신하여 버스(204)에 정보를 공급한다.
임시 어드레스 레지스터(하이) 회로(214)는 버스(202)로부터 정보를 수신하여 버스(216)에 정보를 공급한다. 임시 어드레스 레지스터(로우) 회로(218)는 버스(202)로부터 정보를 수신하여 버스(216)에 정보를 공급한다. 데이타 버스 인터페이스 회로(220)는 버스(202)로부터 정보를 수신하여 버스(216)에 정보를 공급한다. 상수 발생 논리 회로(222)는 버스(204)에 정보를 공급한다.
산술 논리 유니트(arithmetic logic unit : ALU)(224)는 버스(204 및 216)로부터 데이타를 수신한다. ALU(224)는 플래그 회로(226)에 양방향 결합된다. 플래그 회로(226)는 조건 코드 레지스터(228)에 양방향 결합된다. 조건 코드 레지스터(228)는 버스(202)로부터 정보를 수신하여 버스(216)에 정보를 공급한다. ALU(224)의 출력은 시프터 회로(230)에 결합되고, 시프터(230)는 버스(202)에 정보를 공급한다.
프로그램 카운터(하이)/증분 레지스터(200), 인덱스 레지스터(하이)(205) 및, 임시 어드레스 레지스터(하이)(214) 각각은 하이 버스(232)에 정보를 공급한다. 어드레스 버스(하이) 버퍼 회로(234)는 하이 버스(232)로부터 정보를 수신하여 프로그램 카운터(하이)/증분 레지스터(200)에 정보를 공급한다. 어드레스 버스(하이) 버퍼(234)는 어드레스 버스(하이)(236)에 결합된다. 어드레스 버스(하이)(235)는 정보 버스(32)에 결합된다.
프로그램 카운터(로우) 레지스터(206), 임시 어드레스 레지스터(로우)(218) 및, 스택 포인터 레지스터(208) 각각은 로우 버스(238)에 정보를 공급한다. 어드레스 버스(로우) 버퍼 회로(240)는 로우 버스(238)로부터 정보를 수신한다. 어드레스 버스(로우) 버퍼(240)는 어드레스 버스(로우)(242)에 결합된다. 어드레스 버스(로우)(242)는 정보 버스(32)에 결합된다.
로우 버스(238)는 데이터 버스(244)로부터 정보를 수신한다. 데이타 버스 인터페이스(220)는 데이타 버스(244)에서 정보 수신 및 버스(244)로 정보를 공급한다. 데이타 버스(244)는 정보 버스(32)에 결합된다. 본 발명의 한 실시예에 있어서, 어드레스 버스(하이)(236), 어드레스 버스(로우)(242) 및, 데이타 버스(244)는 사실상 정보 버스(32)의 일부이다.
제 4 도는 8-비트 종래 기술 인덱스 레지스터(302)의 블럭도이다.
제 5도는 인덱스 레이스터(하이) 회로(205) 및 인덱스 레지스터(로우) 회로(212)의 연결에 의해 형성된 16-비트 인덱스 레지스터(304)의 블럭도이다. 인덱스 레지스터(하이) 회로(205) 및 인덱스 레지스터(로우) 회로(212)는 각각 16-비트 인덱스 레지스터(304)의 8-비트 레지스터 부분이다. 인덱스 레지스터(하이) 회로(205) 및 인덱스 레지스터(로우) 회로(212) 모두는 제 3 도의 실행 유니트(56)에 포함된다.
제 6 도는 임의 그룹의 이전 및 새로운 명령어가 새로운 CPU(12)의 인덱스 레지스터 부분(205 및 212)에 대한 작용을 표 형태로 설명하기 위한 도면이다.
제 7 도는 새로운 CPU(12)의 인덱스 레지스터(하이)(205)를 변경할 수 있는 새로운 명령어의 설명을 표 형식으로 설명하기 위한 도면이다.
<양호한 실시예의 동작>
본 발명은 이전의 CPU와 목적 코드 호환 가능한 새로운 강력한 CPU의 설계를 제공하고, 또한, 가능한 적은 회로와 적은 비용으로 제공될 수 있다. 새로운 CPU(12)는 확장 가능한 레지스터를 제공하는데, 한 실시예에 있어서, 상기 레지스터는 8 비트에서 16 비트로 확장 가능한 인덱스 레지스터이다. 새로운 CPU(12)의 확장 가능한 인데스 레지스터는 목적 코드 호환성을 유지하기 위하여 8-비트 레지스터와 같은 기능을 할 수 있지만, 또한, 새로운 CPU(12)에서 인덱스된 어드레싱 모드의 기능을 향상시키기 위하여 16-비트 레지스터로서 확장 및 사용될 수도 있다.
제 6 도는 임의 그룹의 이전 및 새로운 명령어들이 새로운 CPU(12)의 인덱스 레지스터 부분(205 및 212)에 대한 작용을 표 형태로 설명하기 위한 도면이다. ";이전의"; 명령어들은 이전의 CPU에 대해 정의 되어 이전의 CPU가 실행할 수 있는 명령어들이다. 따라서, 이전의 CPU를 위한 명령어 세트내의 모든 명령어는 ";이전의"; 명령어 이다. ";새로운"; 명령어는 새로운 CPU(12)를 위해 정의되어 새로운 CPU(12)가 실행할 수 있으나, 이전의 CPU에 대해 정의되어 있지 않은 명령어들이다. 새로운 CPU(12)를 위한 명령어 세트는 새로운 CPU(12)의 능력을 증가시키기 위하여 부가된 임의 ";새로운"; 명령어들 및 ";이전의"; 명령어들 모두를 포함한다.
";이전의 명령어들";의 표제 아래에는, 새로운 CPU(12)의 인덱스 레지스터 부분(205 및 212)에 대한 이전의 명령어의 작용에 관한 두 개의 서술문이 있다. 인덱스 레지스터(하이)(205)는 이전의 명령어들에 의해 변경될 수 없지만; 인덱스 레지스터(로우)(212)는 이전의 명령어들에 의해 변경될 수 있다. 그리고, 인덱스 레지스터(하이)(205) 및 인덱스 레지스터(로우)(212) 모두는 인덱스된 어드레싱 모드에서 연결된 인덱스 레지스터(304)로서 사용된다.
";새로운 명령어들";의 표제 아래에는, 새로운 명령어들이 새로운 CPU(12)에서 인덱스 레지스터 부분(205 및 212)에 대한 작용에 관한 두 개의 서술문이 있다. 인덱스 레지스터(하이)(205) 및 인덱스 레지스터(로우)(212) 모두는 새로운 명령어들에 의해 변경될 수 있다. 그리고, 인덱스 레지스터(하이)(205)와 인덱스 레지스터(로우)(212)는 인덱스된 어드레싱 모드에서 연결된 인덱스 레지스터(304)로서 사용된다.
새로운 CPU(12)는 목적 코드 호환성을 유지하면서 현존의 인덱스 레지스터, 즉 인덱스 레지스터(하이)(205)에 상위 바이트를 부가한다. 이전의 CPU는 새로운 CPU(12)의 인덱스 레지스터(로우) 회로(212)(제 3 도 참조)에 직접 대응된 인덱스 레지스터(302)를 갖는다. 그러나, 이전의 CPU와 다르게, 새로운 CPU(12)는 16-비트 인덱스 레지스터(304)(제 5 도 참조)를 효과적으로 형성하기 위하여 인덱스 레지스터(로우) 회로(212)와 연결될 수 있는 부가의 인덱스 레지스터(하이) 회로(205)(제 3 도 참조)를 갖는다.
새로운 CPU(12)는 인덱스 레지스터(304)(제 7 도 참조)의 새로운 상위 바이트를 변경할 수 있는 약간의 새로운 명령어들만을 부가할 뿐만 아니라, 이전의 CPU로부터 모든 명령어들을 이용한다. 이전의 명령어들 모두는 이전의 CPU에서와 정확히 동일한 16 진수 op 코드를 갖고; 새로운 명령어들은 이전의 CPU에서 정의되지 않은 op 코드를 갖는다.
본 발명의 한 실시예에 있어서, 이전의 CPU는 텍사스, 오스틴 소재의 모토로라에서 입수 가능한 MC68HC05 마이크로-제어기 패밀리의 한 구성원(member)이다. 이전의 명령어들을 완비한 목록은 모토로라에서 발행된 다양한 MC68HC05 패밀리 사용자 매뉴얼에서 구할 수 있다.
예를 들어, 인덱스 레지스터(302)(제 4 도 참조)를 변경할 수 있는 몇 개의 이전의 명령어들은 다음과 같다 : 인덱스 레지스터(302)의 내용에서 1을 감하는 ";DECX"; 명령어; 인덱스 레지스터(302)의 내용에 1을 더하는 ";INCX"; 명령어; 즉시값(immediate value) 또는 특정 메모리 위치의 내용을 인덱스 레지스터(302)로 로드시키는 ";LDX"; 명령어; 인덱스 레지스터(302)의 모든 비트를 좌측으로 한번 시프트시키고, 제로를 비트 제로로 시프트시키는 ";LSLX"; 명령어; 인덱스 레지스터(302)의 내용을 두 개의 보수값으로 교체하는 ";NEGX"; 명령어와; 누산기의 내용을 인덱스 레지스터로 로드시키는 ";TAX"; 명령어가 있다.
이전 및 새로운 명령어들이 제 6 도에 도시된 방식으로 인덱스 레지스터 부분(205 및 212)에 작용하도록 제조된 결과를 이해하는 것은 중요하다. 새로운 CPU(12)에 있어서, 이전의 명령어들의 약간은 인덱스 레지스터의 단지 8 비트만을 사용(이전의 CPU 처럼)하지만; 다른 이전의 명령어들은 인덱스 레지스터의 16 비트 모두를 사용하도록 변경(이전의 CPU와 다르게)된다. 그러나, 비록 이전의 명령어들이 인덱스 레지스터의 16 비트 모두를 사용하더라도, 지금 설명하게 될 목적 코드 호환성은 여전히 유지된다.
인덱스 레지스터 즉, 인덱스 레지스터(하이)(205)의 새로운 상위 바이트는 $00 값으로 리셋에서 초기화되고; 제 7 도에 도시된 소수의 새로운 명령어들만이 인덱스 레지스터의 새로운 상위 바이트를 변경할 수 있다(제 5 도 참조). 인덱스 레지스터를 변경시키는 이전의 명령어들의 어떠한 명령어들도 새로운 상위 바이트에 작용하지 않는다. 따라서, 이전의 CPU 상에 실행을 위해 기록되었던 어떠한 소프트웨어도 인덱스 레지스터의 새로운 상위 바이트상에 작용하지 않게 된다. 그래서, 이전의 CPU를 위해 기록된 소프트웨어( 및, 그로 인해 이전의 명령어들만을 사용)가 새로운 CPU(12)에 의해 실행될 때, 인덱스 레지스터의 새로운 상위 바이트는 결코 변경되거나 변경되지 않으며, 리셋값 $00을 항상 유지하게 된다.
그러나, 인덱스 레지스터를 변경하지 않는 모든 인덱스된 어드레싱 모드 명령어들은, 이전 또는 새로운 명령어의 여부에 관계없이, 새로운 상위 바이트를 포함하여, 인덱스 레지스터(304)의 완전 16 비트를 사용한다. 따라서, 이전의 CPU에서 8-비트 인덱스 레지스터만을 사용한 이전의 인덱스된 어드레싱 모드 명령어들은 새로운 CPU의 인덱스 레지스터(304)의 완전 16 비트를 바로 사용한다.
그러나, 단지 이전의 명령어들만이 사용될 때 인덱스 레지스터의 새로운 상위 바이트가 $00을 항상 포함하기 때문에 목적 코드 호환성은 유지된다. 8-비트값 $xy와 16-비트 값 $00xy는 인덱스 레지스터를 변경하지 않는 인덱스된 어드레싱 모드 명령어의 유효 어드레스를 계산하기 위해 사용될 때 동일한 결과를 얻는다. 인덱스 레지스터를 변경하지 않고, $xy 값을 포함하는 8-비트 인덱스 레지스터만을 사용한 이전의 CPU의 모든 인덱스된 어드레싱 동작은 $00xy 값을 포함하는 완전 16-비트 인덱스 레지스터를 사용하는 새로운 CPU(12)의 대응하는 인덱스된 어드레싱 동작과 동일한 결과를 얻는다. 따라서, 비록, 약간의 이전의 명령어들이 8-비트/ 레지스터보다 16-비트 레지스터를 사용하더라도, 목적 코드 호환성은 유지된다.
그러나, 만일, 소비자가 새로운 명령어들을 사용하는 새로운 소프트웨어를 기록하기를 원한다면, 소비자는 인덱스된 어드레싱 모드에서 CPU에 의해 액세스될 수 있는 메모리의 테이블의 크기의 대응되는 증가와 완전 16-비트 인덱스 레지스터의 이점을 얻을 수 있다. 소비자는 인덱스 레지스터(304)의 상위 바이트에 원래 저장된 $00 값을 변경하기 위해서 제 7 도에 도시된 새로운 명령어들을 사용할 수 있다.
본 발명의 선택적인 실시예에 있어서, $00 리셋값을 갖는 상위 바이트를 필요로 하지 않지만, 소프트웨어가 그 상위 바이트를 필요로 한다면 사용자가 상위 바이트에 $00 값을 기록하도록 대신 요구할 수 있다. 예를 들어, 인덱스 레지스터(304)를 결코 사용하지 않는 소프트웨어는 $00 값을 인덱스 레지스터(304)에 기록할 필요가 없다.
제 7 도는 새로운 CPU(12)의 인덱스 레지스터(하이)(250)를 변경할 수 있는 새로운 명령어의 설명을 표 형식으로 설명하기 위한 도면이다. 다수의, 소수의, 또는 상이한 새로운 명령어들이 본 발명의 선택적 실시예에서 사용될 수 있다. 본 발명은 어떤 새로운 명령어들의 형태 또는 기능에 어떠한 제한이나 한정하지 않는다. 그러나, 사용자가 인덱스 레지스터의 새로운 상위 바이트에 저장된 값을 변경하기 위해 사용할 수 있는 적어도 하나의 명령어를 갖는 것이 바람직하다.
새로운 CPU(12)의 인덱스 레지스터의 상위 바이트를 변경하는 두 가지 형태의 새로운 명령어들이 있다. 새로운 명령어의 제 1 형태는 상위 바이트만을 변경할 수 있고, 하위 바이트에 작용하지 않는다(예를 들어, PULH 명령어). 새로운 명령어의 제 2 형태는 상위 바이트 및 하위 바이트 모두를 변경할 수 있다.(예를 들어, AIX, CBEQ, LDHX, MOV 및 TSX 명령어).
본 발명은 새로운 CPU(12)가 이전의 명령어들을 어떻게 실행하는가에 대하여 두 가지 제한을 둔다. (1) 이전의 CPU에서 인덱스 레지스터(302)를 변경한 이전의 명령어들에 대해, 인덱스 레지스터(로우)(205)는 동일 방식으로 동작하고, 목적 코드 호환성을 유지하기 위해서 인덱스 레지스터(302)와 동일한 값을 저장하는 것을 종료하고, (2) 새로운 및 이전의 명령어들과 관계없이, 모든 인덱스된 어드레싱 모드 명령어들은 모든 인덱스된 어드레싱 모드 명령어들을 복사해야 할 필요성을 제거하기 위하여 인덱스 레지스터(304)의 모든 16 비트를 사용한다.
지금은, 본 발명의 회로 구현의 동작을 설명한다.
제 1 도를 참조하면, 데이터 처리 시스템(10)은 MCU 패밀리 내의 하나의 있을 수 있는 MCU를 예시한다. 동일한 패밀리내의 MCU는 상이한 보드상의 주변 장치들을 일반적으로 갖기 때문에, 데이타 처리 시스템(10)의 다른 실시예들은 ROM(20)을 갖지 않을 수 있고, 외부 버스 인터페이스(26)를 갖지 않을 수 있으며, DMA(30)를 갖지 않을 수 있다. 사실상, 데이타 처리 시스템(10)의 다른 실시예들은 제 1 도에 예시된 것 이외의 소수의 다수의 또는 다른 주변기기를 가질 수 있다.
제 1 도에 도시된 본 발명의 실시예의 동작 동안에, 시스템 집적화 섹션(14)은 데이타 처리 시스템(10)에 대한 다양한 기능을 실행하기 위해 사용된다. 일반적으로, 시스템 집적화 섹션(14)은 동작을 인에이블 및 디스에이블시키고, 타이밍 제어를 제공하며, 데이타 처리 시스템(10)에 대한 예외 조정 필요 조건(exception handing requirements)를 실행하기 위하여 다수의 제어 정보를 제공한다. 시스템 집적화 섹션(14)은 버스(34)를 통해 CPU(12)와 다수의 집적 회로 핀(38)을 통해 외부 사용자와, 정보 버스(32)를 통해 데이타 처리 시스템(10)의 나머지 다수의 구성 성분들(components) 각각과 직접 인터페이스할 수 있다.
데이타 처리 시스템(10)에 있어서, DAM(30)는 데이타 처리 시스템(10)의 내부 메모리와 다수의 주변 장치들(도시하지 않음) 사이의 직접적인 데이타 통신을 가능하게 한다. DMA(30)는 사용자가 고속 메모리 액세스 방법을 필요로 할 때 데이타 처리 시스템(10)상에서 선택적으로 구현될 수 있다. 직접 메모리 액세스 회로의 사용 및 구현은 데이타 처리 기술 분야에 이미 공지되어 있어 상세한 설명은 생략한다.
타이머 섹션(28)은 프리-런닝 16-비트 카운터(free- running 16-bit counter)에 기초한 다수의 타이밍 기능을 실행한다. 다수의 집적 회로 핀(48)을 통해 인에이블될 때, 타이머 섹션(28)은 입력-포착 기능, 출력-비교 기능, 실시간 인터럽트, 또는 감시 기능을 적당히 행하는 컴류터를 실행하기 위한 기능을 한다. 그 기능들 각각은 데이타 처리 기술 분야에 이미 공지되어 있어 상세한 설명은 생략한다. 타이머 섹션(28)의 변경된 형태는 텍사스, 오스틴 소재의 모토로라로부터 입수 할 수 있는 모토로라 MC68HC11 마이크로-제어기에 의해 구현된다.
외부 버스 인터페이스(26)는 외부 사용자 또는 외부 주변 장치와 데이타 처리 시스템(10) 사이의 어드레스 및 데이타 값들의 수신 및 전송을 제어한다. 외부 버스 인터페이스(26)는 정보 버스(32)를 통해 데이타 처리 시스템(10)의 나머지 부분에 다수의 어드레스 및 데이타 값들을 전달한다.
포트 논리 회로(24)는 다수의 집적 회로 핀(44)들 중 각각의 핀의 동작 및 기능을 제어한다. 포트 논리 회로(24)는 제 1 동작 모드에서 일반적인 목적 입/출력 핀으로서 기능을 하는 다수의 집적 회로 핀(44)으로 구성할 수 있다. 제 2 동작 모드에 있어서, 포트 논리 회로(24)는 멀티 플렉스된 어드레스 및 데이타 정보를 통신하기 위해 다수의 집적 회로 핀들 각각을 사용할 수 있다.
RAM(18), ROM(20) 및, 다른 메모리(22)는 어셈블리 코드 소프트웨어 명령어들, 데이타 값 및 어드레스 값과 같은 정보를 저장하기 위해 사용될 수 있다. 그로인해, 그들은 데이타 처리 시스템에 의해 사용될 수 있다.
직렬 섹션(16)은 데이타 처리 시스템(10)과 외부 사용자 또는 외부 주변 장치 사이의 직렬 디지탈 데이타를 전달한다. 직렬 디지탈 데이타 및 적당한 제어 신호들은 다수의 집적 회로 핀(40)을 통해 전달된다.
제 2도를 참조하여, 새로운 CPU(12)를 보다 상세히 예시한다. CPU(12)를 기본적으로 세 가지 주요 부분으로 분할한다. 세 개의 주요 부분은 제어 유니트(54), 실행 유니트(56) 및, 시퀸서(58)를 포함한다. 시퀸서(58)는, 제어 PLA(60)와 결합하여, 정보 버스(32)를 통해 수신된 현재 명령어 및 새로운 CPU(12)의 현재 상태 모두를 기초하여 새로운 CPU(12)의 다음 상태를 결정함으로써 상태 기계(a state machine)로서 기능을 한다.
본 발명의 몇몇 실시예들은 디코더(59)를 포함할 수 있다. 디코더(59)는 시퀸서(58)의 부분(도시하지 않음)이 될 수 있고, 시퀸서(58) 및 제어 PLA(60) 사이에 선택적으로 결합되거나, 정보 버스(32) 및 시퀀서(58) 사이에 선택적으로 결함 될 수 있다. 디코더(59)는 정보 버스(32)를 통하여 전달된 명령어 op 코드를 디코드하기 위해 사용된다. 만일, 디코더(59)가 시퀸서(58)에 포함된다면, 디코더(59)의 출력은 시퀸서 출력 신호들을 사용하는 제어 PLA(60)로 전달된다.
새로운 CPU(12)의 동작 동안에, 시퀸서(58)는 정보 버스(32)로부터 명령어를 수신한다. 시퀸서(58)는 명령어가 제어 유니트(54)에 공급되는 순서를 결정한다. 그 명령어는 시킨서 출력 신호들을 통해 제어 유니트(54)의 제어 PLA(60)에 공급된다.
명령어의 수신에 따라, 제어 PLA(60)는 랜덤 제어 논리(62)에 다수의 제어 PLA 신호들을 공급한다. 제어 PLA 신호들의 논리 상태들은 제어 PLA(60)에 의해 수신된 시퀀서 출력 신호들의 논리 상태에 의해 결정된다.
또한, 제어 PLA(60)는 새로운 CPU(12)의 현재 내부 상태와 현재의 명령어를 실행할 때 이루어진 과정에 관한 피드백 정보를 제공하기 위해서 시킨서 입력 신호들을 시킨서(58)에 제공한다. 랜덤 제어 논리(62)는 다수의 제어 PLA 신호들 각각에 타이밍 제어 정보를 제공한다. 랜덤 제어 논리(62)는 다수의 타이밍된 제어 신호들을 실행 유니트(56)에 출력한다.
제어 PLA(60)는 어떠한 형태의 메모리 또는 어떠한 형태의 프로그램 가능한 논리 배열을 포함하는 어떠한 형태의 프로그램 가능한 배열로서 실행될 수 있다. 제어 PLA(60)는 심지어 랜덤 논리로서 실행될 수 있고, 랜덤 제어 논리(62)와 조합될 수 있다.
프로그램 가능한 논리 배열(PLA)은 일반적으로 판독 전용 메모리(ROM)보다 적은 반도체 영역을 필요로 하지만, PLA의 주문 생산보다 ROM의 주문 생산이 간단하면서 고속으로 이루어진다. 동일한 제어 PLA(60)가 새로운 CPU(12)의 상이한 버전들에 대해 이용되기 때문에, 반도체 영역을 보존하기 위하여 제어 PLA(60)를 PLA로서 구현하는 것이 유리하다.
타이밍된 제어 신호들은 실행 유니트(56)를 제어하기 위해 사용된다. 실행유니트(56)는, 타이밍 제어 신호들의 제어 하에, 명령어를 실행하기 위해 필요한 각각의 기능들을 수행한다. 정보 버스(32)는 실행 유니트(56)에 위치한 레지스터들을 판독 및 기록하기 위한 어드레스 및 데이타 경로로서 사용된다. 실행 유니트(56)는 새로운 CPU(12)의 현재 상태를 나타내기 위해서 다수의 상태 신호들을 랜덤 제어 논리(62)에 제공한다. 랜덤 제어 논리(62)는 타이밍된 제어 신호들의 논리 상태들을 결정하는 것을 돕기 위해 상태 신호들의 논리 상태들을 사용한다.
일반적으로, 새로운 CPU(12)는 명령어들을 수신 및 디코드하고, 다수의 제어신호를 제공하며, 다수의 제어 신호들에 응답하여 명령어를 실행하고, 새로운 명령어가 수신 및 실행될 수 있도록 명령어의 실행에 관한 피드백 정보를 제공한다.
제 3 도를 참조하여, 실행 유니트(56)의 부분을 보다 상세히 예시한다. 타이밍된 제어 신호들이 어떻게 실행 유니트(56)를 제어하는지에 대한 상세한 설명은 하지 않는다. 그러나, 타이밍된 제어 신호들은 종래 기술과 같은 방식으로 실행 유니트(56)를 제어하기 위해 사용된다. 즉, 타이밍된 제어 신호들은 여러 버스를 통해, 다양한 레지스터들, 버퍼들 및, 제 3 도의 다른 회로들로부터 및 그들로 정보의 정보를 흐름을 제어하기 위해 사용된다.
다음은, 인덱스된 어드레싱 모드를 설명한다. 많은 CPU는 인덱스된 어드레싱 모드에서 명령어들을 실행하는 능력을 갖고 있다. 비록, 인덱스된 어드레싱 모드가 CPU에 따라 다소 다르더라도, 약간의 일반적인 원리는 표준으로 남는다. 인덱스된 어드레싱 모드는 종종 메모리에 저장된 정보 테이블을 편리하게 액세스하는 방법으로서 사용된다.
일반적으로, 인덱스된 어드레싱 모드에 있어서, 인덱스 레지스터에 저장된 값은 메모리에서 순차적 위치들에 저장된 데이타 값들의 테이블의 시작에 대한 포인터로서 사용된다. 일반적으로 명령어의 부분으로서 포함되는 오프셋 값은 데이타 값들의 테이블내의 하나의 특정 위치를 엑세스하기 위해서 인덱스 레지스터내의 값에 부가된다. 선택적으로, 오프셋 값은 데이타 값들의 테이블의 시작에 대한 포인터로서 사용될 수 있고, 인덱스 레지스터는 테이블로의 변위(displacement)를 포함할 수 있다. 인덱스 레지스타가 사용될 수 있는 다양한 다른 방법이 있다. 인덱스된 어드레싱 모드들은 본 기술 분야에 숙련자에게 이미 공지되어 있다.
종종 인덱스된 어드레싱 모드내에 다양한 형태의 인덱스된 어드레싱이 존재한다. 편리함을 위해, 이러한 다양한 형태들의 인덱스된 어드레싱은 인덱스된 어드레싱 모드내의 ";서브-모드(sub-modes)";라고 칭한다. 예를 들어, MC68HCO5 마이크로-제어기의 인덱스된 어드레싱 모드내의 다양한 ";서브-모드";를 설명한다. MC86HCO5 마이크로-제어기는 인덱스된 어드레싱 모드내의 세 개의";서브-모드";, 즉(1) 오프셋 없음; (2) 8-비트 오프셋; (3) 16-비트 오프셋을 갖는다. 다음은, 세 개의 MC68HCO5 마이크로-제어기의 인덱스된 어드레싱 모드내의 서브-모드를 설명한다.
제 1 ";오프셋 없음"; 서브-모드에 있어서, 인덱스 레지스터내의 값은 명령어에 대한 유효 어드레스로서 직접 사용된다. 따라서, 제 1 서브-모드에 있어서, 각각의 명령어는 1 바이트가 명령어 op 코드인 1-바이트 명령어가 된다.
제 2 ";8-비트 오프셋"; 서브-모드에 있어서, 8-비트 오프셋 값은 명령어의 부분으로서 포함된다. 8-비트 오프셋 값은 명령어에 대한 유효 어드레스를 발생하기 위하여 인덱스 레지스터내의 값에 부가된다.따라서, 제 2 서브-모드에 있어서, 각각의 명령어는 제 1 바이트가 명령어 op 코더이고 제 2 바이트가 8-비트 오프셋 값인 2-바이트 명령어이다.
제 3 ";16-비트 오프셋"; 서브-모드에 있어서, 16-비트 오프셋 값은 명령어의 부분으로서 포함한다. 16-비트 오프셋 값은 명령어에 대한 유효 어드레스를 발생하기 위하여 인덱스 레지스터내의 값에 부가된다. 따라서, 제 3 서브-모드에 있어서, 각각의 명령어는 제 1 바이트가 명령어 op 코드, 제 2 및 제 3 바이트가 함께 16-비트 오프셋 값인 3-바이트 명령어이다.
한 실시예에 있어서, 새로운 CPU(12)는 MC68HCO5 마이크로-제어기와 동일한 세 개의 인덱스된 어드레싱 모드내의 서브-모드를 가진다. 그리고, 새로운 CPU(12)에 의해 실행된 이전의 명령어들은 모두 MC68HCO5 마이크로-제어기로부터의 명령어이다. 본 발명의 선택적 실시예들은 다수의, 소수의, 또는 상이한 인덱스된 어드레싱 모드내의 서브-모드를 사용할 수 있다. 또한, 본 발명의 선택적 실시예들은 다른 방식으로 인덱스된 어드레싱 모드를 정의할 수 있다. 사실상, 본 발명은 명령어들에 대한 유효 어드레스의 계산의 부분으로서 레지스터 값을 사용하는 모든 어드레싱 모드에 사용될 수 있다.
다음은, 인덱스된 어드레싱 모드를 사용하는 명령어들 동안 실행유니트(56)의 동작을 설명한다(제 3 도 참조). 유효 어드레스를 발생하기 위하여 사용되는 단계들을 상세한 설명한다. 프로그램 카운터(하이)/증분 레지스터(200) 및 프로그램 카운터(로우) 레지스터(206)를 증가시키는 것과 같은 다른 단계들은 또한 인덱스된 어드레싱 모드를 사용하는 명령들 동안 실행된다. 그러나, 그들 다른 단계들은 상세히 설명하지 않는다.
제 1 ";오프셋 없음"; 서브-모드에 있어서, 인덱스 레지스터의 값은 명령어에 대한 유효 어드레스로서 직접 사용된다. 이전의 명령어 또는 새로운 명령어의 여부에 관계없이, 인덱스 레지스터(304)의 양쪽의 바이트를 또는 부분들이 사용되는데, 즉 인덱스 레지스터(하이)(205)와 인덱스 레지스터(로우)(212)가 사용된다.
인덱스 레지스터(로우)(212)는 정보 버스(32)에 대하여 직접 엑세스를 하지 못하기 때문에, 제 1 단계는 인덱스 레지스터(로우)(212)에 저장된 값을 임시 어드레스 레지스터(로우)(218)로 전성하는 것이다. 버스(202)는 임시 어드레스 레지스터(로우)(218)에 대한 유일한 입력 경로이기 때문에, 인덱스 레지스터(로우)(212)에 저장된 값은 ALU(224)를 통해 전송할 필요가 있다. 인덱스 레지스터(로우)(212)에 저장된 값은 버스(204)를 통해 ALU(224)의 입력에 전달된다. 버스(216)에 포함된 각각의 신호는 논리 레벨 1로 미리 설정된다. ALU(224)는 버스(216)로부터 모든 이진수 1을 입력하여 논리 레벨을 모두 이진수 0으로 변환시킨다. 따라서, ALU(224)에 대한 1 입력은 인덱스 레지스터(로우)(212)의 값이고, ALU(224)에 대한 나머지 입력은 0이 된다. 따라서, ALU(224)는 버스(202)를 통해 임시 어드레스 레지스터(로우)(218)에 가산 결과를 전송한다.
다음에, 임시 어드레스 레지스터(로우)(218)에 저장된 값은 로우 버스(238)를 통해 어드레스 버스(로우) 버퍼(240)에 전달된다. 동시에, 인덱스 레지스터(하이)(205)에 저장된 값은 하이 버스(232)를 통해 어드레스 버스(하이) 버퍼(234)에 전달된다. 따라서, 유효 어드레스는 인덱스 레지스터(하이)(205)의 값과 인덱스 레지스터(로우)(212)의 값을 연결하여 형성된 16-비트 어드레스가 된다. 16-비트 유효 어드레스는 정보 버스(32)를 통해 새로운 CPU(12)의 출력에 전달된다.
제 2 ";8-비트 오프셋"; 서브-모드에 있어서, 8-비트 오프셋 값은 명령어의 부분으로서 포함된다. 8-비트 오프셋 값은 명령어를 위한 유효 어드레스를 발생하기 위하여 인덱스 레지스터(304)의 값에 부가된다. 이전의 명령어 또는 새로운 명령어의 여부에 관계없이, 인덱스 레지스터(304)의 양쪽 바이트들 또는 부분들, 즉 인덱스 레지스터(하이)(205)와 인덱스 레지스터(로우)(212)가 사용된다.
명령어의 부분으로서 포함되었던 8-비트 오프셋은 정보 버스(32)로부터 데이타 버스(244)에 전송되고, 그 이후에, 데이타 버스 인터페이스(220), 버스(216), ALU(224)입력에 차례로 전달된다. 그 동안, 인덱스 레지스터(로우)(212)에 저장된 값은 버스(204)를 통해 ALU(224)의 다른 입력에 전달된다. ALU(224)는 8-비트 오프셋과 인덱스 레지스터(로우)(212)의 값을 함께 부가하고, 그 이후에, 버스(202)를 통해 임시 어드레스 레지스터(로우)(218)에 그 결과를 전달한다. 내부 캐리 신호(도시하지 않음)는 ALU(224)에 의해 발생된다. 내부 캐리 신호의 논리 상태는 실행된 가산 결과의 여부에 의해 결정된다. 내부 캐리 신호의 논리 상태는 새로 CPU(12)에 의해 내부적으로 저장된다.
다음은, 내부 캐리(이진수 0 또는 이진수 1)는 인덱스 레지스터(하이)(205)에 저장된 값에 부가된다. 인덱스 레지스터(하이)(205)에 저장된 값이 버스(204)를 통해 ALU(224)의 입력에 전달된다. 버스(216)에 포함된 각각의 신호는 논리 레벨 1로 미리 설정된다. ALU(224)는 버스(216)로부터 모든 이진수 1들을 입력하여 논리 레벨을 모든 이진수 0으로 변환한다. 따라서 ALU(224)에 대한 1 입력은 인덱스 레지스터(하이)(205)의 값이 되고, ALU(224)에 대한 나머지 입력은 0이 된다. 그 이후에 ALU(224)는 0과 인덱스 레지스터(하이)(205)의 값에 내부 캐리를 부가한다. 그러면, ALU(224)는 버스(202)를 통해 임시 어드레스 레지스터(하이)(214)에 그 결과를 전달한다.
그 이후에, 임시 어드레스 레지스터(하이)(214)의 내용은 하이 버스(232)를 통해 어드레스 버스(하이) 버퍼(234)에 전달된다. 동시에, 임시 어드레스 레지스터(로우)(218)의 내용은 로우 버스(238)를 통해 어드레스 버스(로우) 버퍼(240)에 전달된다. 따라서, 유효 어드레스는 인덱스 레지스터(하이)(205)에 저장된 값과 인덱스 레지스터(로우)(212)에 저장된 값의 연결에 8-비트 오프셋을 부가하여 형성되는 16-비트 어드레스이다. 16-비트 유효 어드레스는 정보 버스(32)를 통해 새로운 CPU(12)의 출력에 전달된다.
제 3 ";16-비트 오프셋"; 서브-모드에 있어서, 16-비트 오프셋 값은 명령어의 부분으로서 포함된다. 16-비트 오프셋 값은 명령어에 대한 유효 어드레스를 발생하기 위해 인덱스 레지스터내의 값에 부가된다. 이전의 명령어 또는 새로운 명령어의 여부에 관계없이, 인덱스 레지스터(304)의 양쪽의 바이트들 또는 부분들, 즉 인덱스 레지스터(하이)(205)와 인덱스 레지스터(로우)(212)가 사용된다.
명령어의 부분으로서 포함된 16-비트 오프셋의 상위 바이트는 정보 버스(32)에서 데이타 버스(244)에 전송되고, 그 이후에, 데이타 버스 인터페이스(220), 버스(216), ALU(224)의 입력에 차례로 전달된다. 버스(204)에 포함된 각각의 신호는 논리 레벨 1로 미리 설정된다. ALU(224)는 버스(204)로부터 모두 이진수 1을 입력하여 논리 레벨을 모두 이진수 0으로 변환시킨다. 따라서 ALU(224)에 대한 1 입력은 16-비트 오프셋의 상위 바이트이고, ALU(224)에 대한 나머지 입력은 0이 된다. 그 이후에, ALU(224)는 16-비트 오프셋의 상위 바이트를 0에 부가하고, 그 결과를 버스(202)를 통해 임시 어드레스 레지스터(하이)(214)에 전달한다.
다음에, 명령어의 부분으로서 포함된 16-비트 오프셋의 하위 바이트는 정보버스(32)로부터 데이타 버스(244)에 전송되고, 그 이후에, 데이타 버스 인터페이스(220), 버스(216), ALU(224)의 입력에 차례로 전달된다. 그 동안, 인덱스 레지스터(로우)(212)에 저장된 값은 버스(204)를 통해 ALU(224)의 다른 입력에 전달된다. ALU(224)는 16-비트 오프셋의 하위 바이트와 인덱스 레지스터(로우)(212)로부터의 값을 함께 부가한다. 그 이후에, 버스(202)를 통해 임시 어드레스 레지스터(로우)(218)에 그 결과를 전달한다. 내부 캐리 신호(도시하지 않음)가 ALU(224)에 의해 발생된다. 내부 캐리 신호의 논리 상태는 실행된 부가 결의 여부에 의해 결정된다. 내부 캐리 신호의 논리 상태는 새로운 CPU(12)에 의해 내부적으로 저장된다.
다음에, 내부 캐리(이진수 0 또는 이진수 1) 및 16-비트 오프셋의 상위 바이트는 인덱스 레지스터(하이)(205)에 저장된 값에 부가된다. 인덱스 레지스터(하이)(205)에 저장된 값은 버스(204)를 통해 ALU(224)의 입력에 전달된다. 유사하게, 임시 어드레스 레지스터(하이)(214)에 저장된 16-비트의 상위 바이트는 버스(216)를 통해 ALU(224)의 다른 입력에 전달된다. 따라서 ALU(224)에 대한 1 입력은 인덱스 레지스터(하이)(205)의 값이고, ALU(224)에 대한 나머지 입력은 16-비트 오프셋의 상위 바이트이다. 그 이후에, ALU(224)는 내부 캐리, 인덱스 레지스터(하이)(205)의 값과, 16-비트 오프셋의 상위 바이트를 함께 부가한다. 그 이후에 ALU(224)는 그 결과를 버스(202)를 통해 임시 어드레스 레지스터(하이)(214)에 전달한다.
그러면, 임시 어드레스 레지스터(하이)(214)의 내용은 하이 버스(232)를 통해 어드레스 버스(하이) 버퍼(234)에 전달된다. 동시에 임시 어드레스 레지스터(로우)(218)의 내용은 로우 버스(238)를 통해 어드레스 버스(로우) 버퍼(240)에 전달된다. 따라서, 유효 어드레스는 인덱스 레지스터(하이)(205)에 저장된 값과 인덱스 레지스터(로우)(212)에 저장된 값의 연결에 16-비트 오프셋을 부가하여 형성되는 16-비트 어드레스가 된다. 16-비트 유효 어드레스는 정보 버스(32)를 통해 새로운 CPU(12)의 출력에 전달된다.
요약하면, 본 발명은 새로운 CPU(12)가 확장 가능한 인덱스 레지스터(304)와 함께 설계되도록 할 수 있다. 새로운 CPU(12)는 8-비트 인덱스 레지스터를 갖는 이전의 CPU와 목적 코드 호환 가능하고, 또한, 새로운 CPU(12)의 인덱스 레지스터는 새로운 명령어들이 사용될 때 16-비트로 효과적으로 확장될 수 있다. 결과적으로, 사용자는 이전의 CPU를 위하여 기록된 어셈블리 코드 소프트웨어를 사용하는 것과 8-비트 인덱스 레지스터의 기능을 갖는 것을 선택할 수 있거나, 새로운 CPU(12)를 위하여 새로운 어셈블리 코드 소프트웨어를 기록하는 것과 16-비트 인덱스 레지스터의 기능을 갖는 것을 선택할 수 있다.
비록, 본 발명이 특정 실시예를 참고로 하여 예시 및 설명되었지만, 본 기술 분야의 숙련자에 의해 추가의 변경안 및 개선안이 있을 수 있다. 예를 들어, 본 발명의 선택적 실시예에 있어서, 데이타 처리시스템(10), 새로운 CPU(12) 및, 실행유니트(56)에 대한 대안적 구조들이 사용될 수 있다. 제 1 도, 제 2 도 및, 제 3 도에 예시된 구조들은 단지 사용될 수 있는 구조들이다. 예를 들어, 실행유니트(56)는 임의 개수 또는 임의 형태의 레지스터들을 포함할 수 있다. 이와 유사하게, 본 발명은 어떠한 사이즈의 레지스터를 확장하기 위해 사용될 수 있다. 예를 들어, 16-비트 레지스터는 대안의 새로운 CPU(12)의 32 비트로 확장될 수 있다. 또한, 실행 유니트(56)는 다른 버스 사이즈 또는 상이한 버스 루틴을 가질 수 있다.
본 발명은 인덱스 레지스터를 이외의 다른 형태의 레지스터들을 사용할 수 있다. 또한, 본 발명은 단지 중앙 처리 장치(CPU)에서 뿐만 아니라, 어떠한 형태의 디지탈 데이타 처리기에서도 레지스터를 확장하는데 사용될 수 있다.
본 발명과는 관계없이, 데이타 처리 시스템(10)의 성능 또한 목적 코드 호환성에 무관한 여러 기술들에 의해 증가될 수 있다. 예를 들어, 본 발명의 이용과 함께, 몇몇 데이타 처리시스템(10)은 새로운 CPU(12)내의 하나 이상의 명령어들을 실행하는데 필요한 사이클의 수를 감소시켜 성능을 더 증가시킨다. 만일, 새로운 CPU(12)가 하나 이상의 명령어들을 실행하는데 필요한 사이클의 수를 변경한다면, 이전의 CPU에 대한 타이밍 감지 어셈블리 언어 소프트웨어는 변경될필요가 있다. 따라서, 비록, 본 발명이 이전의 CPU와 새로운 CPU(12) 사이의 목적 코드 호환성을 유지하지만, 본 발명에 관련되지 않은, 새로운 CPU(12)에 대한 다른 성능 개선점들은 몇몇 실시예에서 목적 코드 호환성에 영향을 줄 수 있다.
따라서, 본 발명은 예시된 특정 형태에 제한되지 않으며, 첨부된 특허 청구 범위는 본 발명의취지 및 영역에서 벗어나지 않는 범위내에서 모든 변경안들을 포함하도록 의도되었다.

Claims (4)

  1. 제 1 데이타 처리 시스템에 확장 가능한 레지스터를 제공하기 위한 방법에 있어서,
    상기 제 1 데이타 처리 시스템에 대한 명령어 세트를 식별하는 단게로서, 상기 제 1 데이타 처리 시스템은 제 2 데이타 처리 시스템에 관련된 현존하는 명령어 세트의 적어도 부분을 실행하는, 상기 식별 단계;
    제 1 레지스터부분 및 제 2 레지스터 부분을 갖는 레지스터를 제 1 데이타 처리 시스템에 제공하는 단계로서, 상기 제 2 레지스터 부분은 상기 제 2 데이타 처리 시스템에 제공되지 않은, 레지스터 제공 단계;
    상기 제 1 데이타 처리 시스템에서, 상기 제 2 데이타 처리 시스템과 호환 가능한 목적코드인 제 1 명령어를 수신하는 단계;
    상기 제 1 명령어의 수신에 응답하여, 제 2 레지스터 부분을 변경하지 않고 제 1 레지스터 부분을 변경하는 단게;
    상기 제 1 데이타 처리 시스템에서, 상기 제 2 데이타 처리 시스템에서 정의되지 않은 op 코드를 갖는 제 2 명령어를 수신하는 단계;
    상기 제 2 명령어의 수신에 응답하여, 제 2 레지스터부분을 변경하는 단계;
    상기 제 1 데이타 처리 시스템에서, 상기 제 2 데이타 처리 시스템과 호환 가능한 목적 코드인 제 3 명령어를 수신하는 단계와;
    상기 제 3 명령어의 수신에 응답하여, 제 1 및 제 2 레지스터 부분들 모두를 이용하여 동작을 실행하는 단계를 포함하는, 확장 가능한 레지스터를 제공하는 방법.
  2. 데이타 처리 시스템에 있어서,
    제 1 인덱스 레지스터 명령어에 의해 변경되는 제 1 레지스터 부분 및,
    제 2 인덱스 레지스터 명령어에 의해 변경되지만, 제 1 인덱스 레지스터 명령어에 의해 변경되지 않은 제 2 레지스터 부분을 구비한 확장 가능한 인덱스 레지스터;
    상기 확장 가능한 인덱스 레지스터에 결합된 제 1 버스;
    상기 확장 가능한 인덱스 레지스터에 결합된 제 2 버스와;
    상기 확장 가능한 인덱스 레지스터에 결합된 어드레스 발생 회로로서, 상기 어드레스 발생 회로의 제 1 입력은 상기 제 1 버스에 결합되고, 상기 어드레스 발생 회로의 출력은 상기 제 2 버스에 결합되고, 상기 데이타 처리 시스템이 인덱스된 어드레싱 동작을 실행할 때 유효 인덱스된 어드레스를 발생하기 위해 상기 제 1 레지스터 부분과 상기 제 2 레지스터 부분의 조합을 이용하는 어드레스 발생 회로를 포함하는 데이타 처리 시스템.
  3. 제 2 데이타 처리 시스템과 실질적으로 목적 코드 호환 가능한 제 1 데이타 처리 시스템에 확장 가능한 레지스터를 제공하기 위한 방법에 있어서,
    제 1 레지스터 부분과 제 2 레지스터부분을 갖는 인덱스 레지스터로서, 인덱싱 동작 동안에 이용되는 인덱스 레지스터를 제공하는 단계;
    상기 인덱스 레지스터를 변경시키는 제 1 명령어를 수신하는 단계;
    상기 제 1 명령어가 제 2 데이타 처리 시스템과 목적 코드 호환 가능한 경우에, 제 2 레지스터 부분을 변경하지 않고 제1 레지스터 부분에 저장된 제 1 인덱스 값을 갱신하는 단계;
    상기 제 1 명령어가 제 2 데이타 처리 시스템과 호환 가능한 목적 코드가 아닌 경우에, 제 1 및 제 2 레지스터 부분들 모두에 저장된 제 2 인덱스 값을 갱신하는 단계;
    상기 제 2 데이타 처리 시스템과 호환 가능한 목적 코드인 제 2 명령어를 수신하는 단계와;
    상기 제 2 명령어를 실행할 때 상기 제 1 및 제 2 레지스터 부분들 모드를 이용하는 단계를 포함하는 확장 가능한 레지스터를 제공하는 방법
  4. 데이타 처리기를 동작시키는 방법에 있어서,
    산술 논리 유니트를 제공하는 단계;
    제 1 레지스터 부분과 제 2 레지스터 부분을 갖는 인덱스 레지스터를 제공하는 단계;
    상기 인덱스 레지스터를 상기 산술 논리 유니트에 결합하기 위한 적어도 하나의 버스를 제공하는 단계;
    제 1 인덱싱 명령어, 제 2 인덱싱 명령어 및, 제 3 인덱싱 명령어를 수신 및 실행하기위한 제어 회로를 제공하는 단계;
    상기 제 1 인덱싱 명령어를 수신하는 제어 회로에 응답하여, 단지 제 1 레지스터 부분만을 갱신하여 상기 인덱스 레지스터를 변경하는 단계;
    상기 제 2 인덱싱 명령어를 수신하는 제어 회로에 응답하여, 제 1 및 제 2 레지스터 부분들 모두를 갱신하여 상기 인덱스 레지스터를 갱신하는 단계와;
    상기 제 3 인덱싱 명령어를 수신하는 제어 회로에 응답하여, 유효 어드레스를 제공하기 위해 제 1 레지스터 부분과 제 2 레지스터 부분을 조합하고 유효 어드레스를 이용하는 인덱스된 어드레싱 동작을 실행하는 단계를 포함하여;
    상기 제 1 인덱싱 명령어의 수신에 응답하여 상기 제 1 레지스터 부분에 제 1 인덱스 값을 저장하고, 상기 제 2 인덱싱 명령어의 수신에 응답하여 상기 제 1 및 제 2 레지스터 부분들에 제 2 인덱스 값을 저장하며;
    상기 제 2 인덱스 값은 비트 길이가 상기 제 1 인덱스 값보다 크게 되어 있는 데이타 처리기 동작 방법.
KR1019930028977A 1992-12-24 1993-12-22 확장가능한레지스터를제공하는데이타처리시스템및그방법 KR100287600B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/996,744 US5680632A (en) 1992-12-24 1992-12-24 Method for providing an extensible register in the first and second data processing systems
US996,744 1992-12-24

Publications (2)

Publication Number Publication Date
KR940015806A KR940015806A (ko) 1994-07-21
KR100287600B1 true KR100287600B1 (ko) 2001-04-16

Family

ID=25543253

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930028977A KR100287600B1 (ko) 1992-12-24 1993-12-22 확장가능한레지스터를제공하는데이타처리시스템및그방법

Country Status (6)

Country Link
US (1) US5680632A (ko)
EP (1) EP0614137B1 (ko)
JP (1) JP3616402B2 (ko)
KR (1) KR100287600B1 (ko)
DE (1) DE69315192T2 (ko)
HK (1) HK1004611A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW267222B (en) * 1994-10-05 1996-01-01 Ibm Improved method and system of addressing
JP2885197B2 (ja) * 1996-08-16 1999-04-19 日本電気株式会社 演算処理装置及び演算処理方法
US5948076A (en) * 1997-12-31 1999-09-07 Adaptec, Inc. Method and system for changing peripheral component interconnect configuration registers
US6366998B1 (en) 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
WO2001025900A1 (en) 1999-10-06 2001-04-12 Cradle Technologies Risc processor using register codes for expanded instruction set
US6647450B1 (en) 1999-10-06 2003-11-11 Cradle Technologies, Inc. Multiprocessor computer systems with command FIFO buffer at each target device
WO2001069411A2 (en) 2000-03-10 2001-09-20 Arc International Plc Memory interface and method of interfacing between functional entities
JP2003162411A (ja) * 2001-11-28 2003-06-06 Hitachi Ltd データプロセッサ
US7203820B2 (en) * 2002-06-28 2007-04-10 Sun Microsystems, Inc. Extending a register file utilizing stack and queue techniques
US20040049657A1 (en) 2002-09-10 2004-03-11 Kling Ralph M. Extended register space apparatus and methods for processors
US8464030B2 (en) * 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US9507599B2 (en) 2013-07-22 2016-11-29 Globalfoundries Inc. Instruction set architecture with extensible register addressing
JP6314717B2 (ja) * 2014-07-18 2018-04-25 株式会社安川電機 ラダープログラム作成装置、モニタリング装置、コンピュータプログラム及び機器制御装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4040035A (en) * 1974-10-30 1977-08-02 Motorola, Inc. Microprocessor having index register coupled to serial-coupled address bus sections and to data bus
US4363091A (en) * 1978-01-31 1982-12-07 Intel Corporation Extended address, single and multiple bit microprocessor
NL7807314A (nl) * 1978-07-06 1980-01-08 Philips Nv Inrichting voor het vergroten van de lengte van een logisch computeradres.
US4240142A (en) * 1978-12-29 1980-12-16 Bell Telephone Laboratories, Incorporated Data processing apparatus providing autoincrementing of memory pointer registers
US4277827A (en) * 1979-01-02 1981-07-07 Texas Instruments Incorporated Microprocessor based system for the development and emulation of programmable calculator control read only memory software
US4300195A (en) * 1979-08-09 1981-11-10 Motorola, Inc. CMOS Microprocessor architecture
US4287566A (en) * 1979-09-28 1981-09-01 Culler-Harrison Inc. Array processor with parallel operations per instruction
US4430705A (en) * 1980-05-23 1984-02-07 International Business Machines Corp. Authorization mechanism for establishing addressability to information in another address space
US4679166A (en) * 1983-01-17 1987-07-07 Tandy Corporation Co-processor combination
US4876639A (en) * 1983-09-20 1989-10-24 Mensch Jr William D Method and circuitry for causing sixteen bit microprocessor to execute eight bit op codes to produce either internal sixteen bit operation or internal eight bit operation in accordance with an emulation bit
US4722047A (en) * 1985-08-29 1988-01-26 Ncr Corporation Prefetch circuit and associated method for operation with a virtual command emulator
US4878197A (en) * 1987-08-17 1989-10-31 Control Data Corporation Data communication apparatus
US5125087A (en) * 1988-11-07 1992-06-23 Microsoft Corporation Method of resetting sequence of access to extended memory disrupted by interrupt processing in 80286 compatible system using code segment register
US5297272A (en) * 1989-08-02 1994-03-22 Advanced Logic Research, Inc. Apparatus for automatically disabling and isolating a computer's original processor upon installation of a processor upgrade card
US5261077A (en) * 1990-06-29 1993-11-09 Digital Equipment Corporation Configurable data path arrangement for resolving data type incompatibility
EP0503514B1 (en) * 1991-03-11 1998-11-18 Silicon Graphics, Inc. Backward-compatible computer architecture with extended word size and address space

Also Published As

Publication number Publication date
EP0614137B1 (en) 1997-11-12
HK1004611A1 (en) 1998-11-27
DE69315192D1 (de) 1997-12-18
DE69315192T2 (de) 1998-04-02
US5680632A (en) 1997-10-21
EP0614137A2 (en) 1994-09-07
EP0614137A3 (en) 1995-04-26
KR940015806A (ko) 1994-07-21
JP3616402B2 (ja) 2005-02-02
JPH06230962A (ja) 1994-08-19

Similar Documents

Publication Publication Date Title
EP0169565B1 (en) Microprocessor compatible with any software represented by different types of instruction formats
US5499380A (en) Data processor and read control circuit, write control circuit therefor
EP0220684B1 (en) Data processing system
KR100287600B1 (ko) 확장가능한레지스터를제공하는데이타처리시스템및그방법
EP0199173B1 (en) Data processing system
US4005391A (en) Peripheral interrupt priority resolution in a micro program data processor having plural levels of subinstruction sets
US6438683B1 (en) Technique using FIFO memory for booting a programmable microprocessor from a host computer
US5696957A (en) Integrated circuit comprising a central processing unit for executing a plurality of programs
EP0338317B1 (en) Information processor operative both in direct mapping and in bank mapping and the method of switching the mapping schemes
US4358826A (en) Apparatus for enabling byte or word addressing of storage organized on a word basis
US4661925A (en) Computer control memory apparatus providing variable microinstruction length
US5535349A (en) Data processing system and method for providing chip selects to peripheral devices
EP0729604B1 (en) Register status protection during read-modify-write operation
JP3705811B2 (ja) 再構成可能なプログラム状態語を有するマイクロコントローラ
US5539900A (en) Information processing system
US6230238B1 (en) Method and apparatus for accessing misaligned data from memory in an efficient manner
KR100277805B1 (ko) 데이타처리장치
US20040177230A1 (en) Method for controlling a central processing unit for addressing in relation to a memory and controller
US5604876A (en) Apparatus for handling differing data length instructions using either directly specified or indirectly specified data lengths
US5396601A (en) Microprocessor system having a single, common internal bus transferring data and instructions in different states of a machine cycle
US20020004877A1 (en) Method and system for updating user memory in emulator systems
US5649229A (en) Pipeline data processor with arithmetic/logic unit capable of performing different kinds of calculations in a pipeline stage
US5410725A (en) Data processor with microcode memory compression
US20020133687A1 (en) Facilitating automatic incrementing and/or decrementing of data pointers in a microcontroller
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
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120110

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20130110

Year of fee payment: 13

EXPY Expiration of term