KR19990037573A - 사용가능한 연산코드를 최대화하고 다양한 어드레싱 모드를 실행하는 프로세서 구조 및 명령 세트 - Google Patents

사용가능한 연산코드를 최대화하고 다양한 어드레싱 모드를 실행하는 프로세서 구조 및 명령 세트 Download PDF

Info

Publication number
KR19990037573A
KR19990037573A KR1019980046746A KR19980046746A KR19990037573A KR 19990037573 A KR19990037573 A KR 19990037573A KR 1019980046746 A KR1019980046746 A KR 1019980046746A KR 19980046746 A KR19980046746 A KR 19980046746A KR 19990037573 A KR19990037573 A KR 19990037573A
Authority
KR
South Korea
Prior art keywords
bits
dedicated
addressing
instructions
register address
Prior art date
Application number
KR1019980046746A
Other languages
English (en)
Inventor
수미트 미트라
Original Assignee
씨. 필립 채프맨
마이크로칩 테크놀로지 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 씨. 필립 채프맨, 마이크로칩 테크놀로지 인코포레이티드 filed Critical 씨. 필립 채프맨
Publication of KR19990037573A publication Critical patent/KR19990037573A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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

Landscapes

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

Abstract

사용가능한 연산코드 및 어드레스 가능한 레지스터의 수를 최대화하면서 다양한 어드레싱 모드를 실행할 수 있는 시스템이 개시된다. 시스템은 가상 레지스터 어드레스를 사용하여 다양한 어드레싱 모드를 엔코딩할 수 있는 프로세서 구조를 구비한다. 시스템은 다수의 명령으로 구성되는 명령 세트를 구비한다. 각각의 명령은 다수의 비트로 구성되며, 각각의 다수의 명령 내의 다수의 비트 중 어느 것도 다른 어드레싱 모드를 실행시키기 위한 전용 비트가 아니다. 각각의 다수의 명령은 프로세서 구조 내에서 가상 레지스터 어드레스를 어드레싱함으로써 다른 어드레싱 모드를 실행시킬 수 있다.

Description

사용가능한 연산코드를 최대화하고 다양한 어드레싱 모드를 실행하는 프로세서 구조 및 명령 세트
본 특허 출원은 본 출원과 동일 발명자에 의해 1997년 19월 8일 출원된 “다중 어드레싱 모드를 실행하는 프로세서 구조 및 그 설계방법 ”이란 명칭의 계류 중인 미합중국 특허 출원의 일부 계속 특허 출원으로, 이는 본 원의 참조로 인용된다.
본 발명은 일반적으로 프로세서에 관한 것으로, 좀 더 상세하게는 사용가능한 연산코드의 수를 최대화할 수 있으며, 프로세서 구조 내에서 직접 어드레스 가능한 레지스터의 수를 최대화하기 위하여 가상 레지스터 어드레스를 이용하여 다양한 어드레싱 모드를 엔코딩할 수 있는 프로세서 구조 및 명령 세트에 관한 것이다.
일반적으로, 프로세서는 저장된 명령 또는 마이크로코드를 페치시키고 실행하는 데에 사용되는 중앙 처리 장치(CPU)가 있는 구조체이다. 프로세서의 몇몇 예로는 마이크로제어기, 마이크로프로세서, 및 디지털 신호 처리기 등이 있다. 각 타입의 프로세서는 또한 피연산자(operand)로서 명명되는 데이터 위에서 작용한다. 이러한 데이터는 일반적으로 레지스터 또는 메모리 공간에 저장된다.
명령은 프로세서의 CPU에게 특정 연산을 수행할 것 뿐 아니라 하나 또는 그 이상의 연산 오퍼랜드를 확인할 것을 지시한다. 프로세서는 연산 데이터에 대한 다양한 어드레싱 방법을 제공한다. 이러한 방법을 대개 어드레싱 모드라 한다. 어드레싱 모드는 전형적으로 산술 및 논리 연산과 데이터 이동 연산에 이용되며, 소스 오퍼랜드, 목적 오퍼랜드, 또는 둘 다에 적용된다.
현재의 프로세서 구조가 가지고 있는 문제는 어드레싱 모드의 부가 또는 변경이 매우 어렵다는 것이다. 명령 세트 구조를 크게 변경하지 않고서는, 이러한 어드레싱 모드의 변경 및 부가는 불가능하다. 그러나, 이러한 명령 세트 구조의 변경은 또한 어셈블러 및 컴파일러와 같은 많은 툴의 큰 변경을 요구하기 때문에 바람직하지 않다.
다른 어드레싱 모드를 실행하기 위한 한 방법은 연산 필드 또는 레지스터 어드레스 필드내에 비트를 전용시키는 것이다. 전용 비트를 세트시킴으로써, 다른 어드레싱 모드가 수행될 수 있다. 이러한 구조가 가지고 있는 문제는 사용가능한 연산코드의 수 또는 직접 어드레스 가능한 “레지스터”의 수가 상당히 감소한다는 것이다. 예를 들어, 만일 명령 중 8 비트가 “연산코드”를 엔코드하는 데에 사용되고, “연산 코드”중 2 비트가 어드레싱 모드를 결정하는 데에 사용된다면, 사용가능 명령의 총 수는 256개에서 64개로 감소하게 된다. 반면에, 명령 워드 중 8 비트가 레지스터 오퍼랜드를 규정하는 데에 사용된다면, 256개의 레지스터를 직접 어드레스할 수 있게 된다. 그러나, 8 비트 중 한 비트가 다른 어드레싱 모드를 통합하기 위한 목적으로 사용된다면, 단지 128개의 레지스터 만을 직접 어드레스할 수 있게 된다.
교번적인 어드레싱 모드가 사용가능한 현존하는 프로세서 구조에 있어서, 엔코딩은 직접 어드레스 가능한 레지스터의 수를 최대화하기 위하여 “제어 레지스터”를 이용하여 수행된다. 그러나, 간접 어드레싱 모드의 “선택”은 (재구성될 때 까지) 정적이며 명령에서 명령까지 동적이지 않기 때문에, 이는 여전히 다른 문제를 발생시킨다.
따라서, 개선된 마이크로제어기 구조의 필요성이 대두되었다. 개선된 마이크로제어기 구조는 사용자가 어드레싱 모드를 추가 및 변경할 수 있어야 한다. 개선된 마이크로제어기 구조는 또한 사용자가 명령 원칙에 의한 명령에 입각하여 어드레싱 모드를 동적으로 변경할 수 있어야 한다. 개선된 마이크로제어기 구조는 사용자가 주어진 명령 비트 수에 대하여 사용가능한 연산코드의 수를 최대화하면서 어드레싱 모드를 추가 및 변경할 수 있어야 한다. 개선된 마이크로제어기는 사용자가 직접 어드레스 가능한 레지스터의 수를 최대화하면서 어드레싱 모드를 추가 및 변경할 수 있어야 한다.
본 발명의 제 1 실시예에 따라, 본 발명의 목적은 개선된 마이크로제어기 구조를 제공하는 것이다.
본 발명의 다른 목적은 사용자가 어드레싱 모드를 추가 및 변경할 수 있는 개선된 마이크로제어기 구조를 제공하는 것이다.
본 발명의 또 다른 목적은 사용자가 직접 어드레스 가능한 레지스터의 수를 최대화하면서 어드레싱 모드를 추가 및 변경할 수 있는 개선된 마이크로제어기 구조를 제공하는 것이다.
본 발명의 또 다른 목적은 명령 원칙에 의한 명령에 입각하여 어드레싱 모드를 동적으로 변경시킬 수 있는 능력을 유지하면서 마이크로제어기 구조에 상기언급한 개선책을 제공하는 것이다.
본 발명의 또 다른 목적은 사용자가 주어진 명령 비트 수에 대하여 사용가능한 연산코드의 수를 최대화하면서 어드레싱 모드를 추가 및 변경할 수 있는 개선된 마이크로제어기 구조를 제공하는 것이다.
도 1은 종래 기술에 의한 일반적인 명령의 엔코딩을 도시하는 단순화된 블록 다이어그램.
도 2은 종래 기술에 의한 일반적인 명령의 엔코딩의 제 2 실시예를 도시하는 단순화된 블록 다이어그램.
도 3은 본 발명에 의한 명령의 엔코딩을 도시하는 단순화된 블록 다이어그램.
도 4는 본 발명에 의한 데이터 메모리 맵의 단순화된 블록 다이어그램.
<도면의 주요 부분에 대한 부호의 설명>
10, 20, 30 : 명령 12, 14 : 바이트
12A, 24, 34 : 연산 필드
14A, 26, 38 : 레지스터 또는 데이터 어드레스 필드
16, 22, 32 : 비트 22 : 비트
28 : 어드레싱 모드 필드 36 : 목적 비트
40 : 프로세서 구조 42 : 데이터 메모리
44 : 어드레스 위치 46 : 페이지 또는 뱅크
48 : 데이터 포인터 레지스터 50 : 가상 레지스터 어드레스 위치
52 : 중앙 처리 장치
본 발명의 제 1 실시예에 따라, 사용가능한 연산코드 및 어드레스 가능한 레지스터의 수를 최대화하면서 다양한 어드레싱 모드를 실행할 수 있는 시스템이 개시된다. 시스템은 가상 레지스터 어드레스를 사용하여 다양한 어드레싱 모드를 엔코딩할 수 있는 프로세서 구조를 구비한다. 시스템은 다수의 명령으로 구성되는 명령 세트를 구비한다. 각각의 명령은 다수의 비트로 구성되며, 각각의 다수의 명령 내의 다수의 비트 중 어느 것도 다른 어드레싱 모드를 실행시키기 위한 전용 비트가 아니다. 각각의 다수의 명령은 프로세서 구조 내에서 가상 레지스터 어드레스를 어드레싱함으로써 다른 어드레싱 모드를 실행시킬 수 있다.
본 발명의 상술한 목적들 및 다른 목적들, 특징들, 및 장점들은 하기로부터, 특히 첨부 도면과 함께 설명되는 본 발명의 바람직한 실시예의 설명으로부터 명확해질 것이다.
도 1은 프로세서에 의해 실행되는 일반적인 종래 기술의 명령(10)을 도시한다. 명령(10)은 첫 번째 바이트(12)와 두 번째 바이트(14)로 구성된다. 각 바이트(12, 14)는 다수의 비트(16)로 구성된다. 첫 번째 바이트(12)는 연산 필드(12A)를 설정하는 데에 사용된다. 연산 필드(12A)는 명령에 의해 수행될 특정한 연산(즉, “덧셈”, “시프트”, “분기”등)을 규정한다. 두 번째 바이트(14)는 레지스터 또는 데이터 어드레스 필드(14A)이다. 레지스터 또는 데이터 어드레스 필드(14A)는 연산이 수행될 오퍼랜드(즉, 데이터)를 지시한다. 하나 이상의 레지스터 또는 데이터 어드레스 필드(14A)를 구비할 수 있다. 예를 들어, 소스 어드레스 필드 및 목적 어드레스 필드를 구비할 수 있다.
도 1에 도시한 종래의 기술에서, 각 바이트(12, 14)는 8 비트이다. 연산 필드(12A)에는, 어드레싱 모드를 결정하기 위한 두 개의 비트(비트 4 및 5)가 지정된다. 예를 들어, 만일 비트 <5:4>=01이면, 이는 직접 어드레싱 모드를 의미한다. 이는 두 번째 바이트(14) 내의 비트 <7:0>가 8비트 레지스터 어드레스(14A)가 됨을 의미한다. 만일 비트 <5:4>=10이면, 이는 간접 어드레싱 모드를 의미한다. 이 예에서, 두 번째 바이트(14) 내의 비트 <7:0>은 데이터 포인터 레지스터에 오프셋을 엔코딩할 것이다.
명령의 엔코딩 기술은 여러 문제를 갖는다. 명령 중 8비트가 연산 필드(12A)를 엔코딩하는 데에 사용됨에도 불구하고, 어드레싱 모드를 결정하는 데에 두 비트(비트 4, 5)가 사용된다. 이는 사용가능한 연산코드 명령의 총 수를 256개에서 64개로 감소시킨다. 게다가, 어드레싱 모드를 결정하기 위하여 첫 번째 명령 바이트(12) 내에서 단지 두 비트 만이 엔코드되기 때문에, 단지 네 개의 어드레싱 모드만이 가능하다.
도 2는 프로세서에 의해 실행되는 다른 종래 기술의 명령(20)을 도시한다. 명령(10)(도 1)과 마찬가지로, 명령(20)은 다수의 비트(22)로 구성된다. 비트(22)는 일반적으로 세 개의 주요 필드: 즉 (1) 연산 필드(24), (2) 레지스터 또는 데이터 어드레스 필드(26), 및 (3) 어드레싱 모드 필드(28)로 분할된다. 도 1의 명령(10)과 같이, 연산 필드(24)는 프로세서에 의해 수행될 특정한 연산을 규정하는 비트(22)의 모임이다. 일반적으로, 세 가지 타입의 주요 연산: 즉, (1) 산술 및 논리 연산(즉, 덧셈, 뺄셈 등); (2) 데이터 이동 연산; 및 (3) 프로그램 제어(즉, 분기 연산)가 있다. 레지스터 또는 데이터 어드레스 필드(26)은 연산이 수행되는 오퍼랜드(즉, 데이터)를 지시한다. 하나 이상의 레지스터 또는 데이터 어드레스 필드(26)를 구비할 수 있다. 예를 들어, 소스 어드레스 필드 및 목적 어드레스 필드를 구비할 수 있다.
도 2에 도시한 명령(20)은 16비트 크기의 명령이다. 명령(20) 내의 일곱 번째 비트는 어드레싱 모드를 선택하는 데에 사용된다. 만일 일곱 번째 비트가 제로이면, 직접 어드레싱을 의미한다. 따라서, 비트 <6:0>은 128개의 레지스터를 어드레스할 수 있는 7 비트 레지스터 어드레스를 형성한다. 만일 일곱 번째 비트가 1이면, 간접 어드레싱을 의미한다. 이 경우, 비트 <6:0>은 데이터 포인터 어드레스 뿐 아니라 포인터 증가/감소 선택을 엔코딩한다.
종래 기술에서는, 명령 중 8비트가 “연산코드”를 엔코드하는 데에 사용된다. 따라서, 8 비트가 어드레스 레지스터 위치로 남겨진다. 이들 8 비트를 이용하여, 구조 내에 256개의 레지스터까지 수용할 수 있다. 그러나, 7번째 비트가 간접 어드레싱 또는 직접 어드레싱인지를 판별하는 어드레싱 비트로서 이용되기 때문에, 단지 128개의 레지스터만이 수용된다. 따라서, 어드레싱 모드 비트를 실행시킴으로써 어스레스 가능한 레지스터의 수는 반으로 줄게 된다. 또한, 어드레싱 모드를 추가 또는 변경하는 것은 매우 어렵다. 명령 세트 구조를 크게 변경하지 않고서는, 이러한 어드레싱 모드의 변경 및 부가는 불가능하다. 명령 세트에 구조에 대한 어떠한 변경도 어셈블러 및 컴파일러와 같은 많은 툴의 큰 변경을 요구하기 때문에 바람직하지 않다.
상기 설명으로부터 알 수 있는 바와 같이, 종래 기술은 실행할 특정한 어드레싱 모드를 나타내기 위하여 명령 내에 하나 또는 그 이상의 비트를 필요로 하였다. 따라서, 이는 사용가능한 연산코드 명령의 수 및 어드레스 가능한 레지스터의 수를 상당히 감소시킨다.
도 3은 본 발명의 프로세서 구조에 의해 실행되는 명령(30)을 도시한다. 명령(30)은 다수의 비트(32)로 구성된다. 비트(32)는 일반적으로 세 개의 주요 필드: 즉, (1) 어떠한 타입의 연산이 수행될 지를 나타내는 연산 필드(34), (2) 프로세서의 연산 결과가 어디(즉, “w” 또는 작업(working) 레지스터, 또는 파일 레지스터)에 저장될 지를 나타내는 목적 비트(36), 및 (3) 명령이 수행하게 될 다양한 레지스터 또는 데이터의 어드레스를 나타내는 레지스터 어드레스 필드(38)가 있다. 본 발명의 바람직한 실시예에서, 명령은 16 비트 명령이다.
명령(30)에 있어 특이한 점은, 목적 비트(36)를 제외하고, 연산 필드(34) 및 레지스터 어드레스 필드(38)의 길이가 사용자가 실행하기를 원하는 연산코드의 수 또는 어드레스 가능한 레지스터의 수에 의해 결정된다는 것이다. 예를 들어, 만일 사용자가 연산 필드(34) 내에 7 비트를 사용하고자 한다면, 사용자는 최대 128개의 연산코드를 실행시킬 수 있다. 만일 사용자가 단지 64개의 연산코드 만을 실행시키고자 한다면, 연산 필드(34)에 6 비트가 사용된다. 한 비트가 목적 비트(36)로 사용되기 때문에, 9 비트가 레지스터 어드레스 필드(38)로서 사용된다. 이는 사용자가 어드레스 가능한 레지스터를 512개 까지 실행시킬 수 있게 한다. 마찬가지로, 만일 128개의 어드레스 가능한 레지스터만이 필요하다면(즉, 7 비트 레지스터 어드레스 필드(38)를 사용하여 실행된다면), 그리고 단지 한 비트(32) 만이 목적 비트(36)로서 사용된다면, 8 비트가 연산 필드(34)로 사용된다. 이는 사용자가 최대 512개의 연산코드를 구비할 수 있게 한다. 따라서, 상기 설명한 바와 같이, 본 발명의 명령(30)은 사용자가 주어진 명령 비트의 수에 대하여 사용가능한 연산코드의 수 및 어드레스 가능한 레지스터의 수를 최대화할 수 있게 한다.
도 4는 명령(30)이 사용되는 프로세서 구조(40)를 도시한다. 프로세서 구조(40)는 데이터 메모리(42) 내에서 실행되는 데이터 포인터 레지스터(48)를 구비한다. 데이터 메모리(42)는 다수의 어드레스 위치(44)로 구성된다. 도 4에 도시된 실시예에서, 메모리는 다수의 페이지(46)로 분할되는 선형화된 4K 메모리이며, 각각의 페이지(46)는 256개의 어드레스 위치(44)를 구비한다. 데이터 포인터 레지스터(48)는 레지스터 어드레스 맵에 지정된 하나 또는 그 이상의 가상 레지스터 어드레스 위치(50)를 구비한다. 각각의 가상 레지스터 어드레스 위치(50)는 액세스될 때 간접 어드레싱 모드를 개시한다.
현재, 다섯 가지 타입의 어드레싱 모드, 즉 단순 간접 어드레싱, 자동 사후 증가되는 간접 어드레싱, 자동 사후 감소되는 간접 어드레싱, 자동 이전 감소되는 간접 어드레싱 및 오프셋을 갖는 간접 어드레싱이 있다. 단순 간접 어드레싱 모드에서, 오퍼랜드의 어드레스는 데이터 포인터 레지스터(48)에 유지된다. CPU(52)는 데이터 포인터 레지스터(48)를 먼저 액세스하여 어드레스를 얻을 것이며, 얻어진 어드레스를 이용하여 오퍼랜드를 액세스할 것이다. 자동 증가 또는 자동 감소되는 간접 어드레싱은 데이터 포인터 레지스터(48)가 데이터 액세스 전(즉, 이전-증가 또는 이전-감소) 또는 데이터 액세스 후(즉, 사후-증가 또는 사후-감소)에 증가 또는 감소되는 간접 어드레싱 형태이다. 오프셋을 갖는 간접 어드레싱 모드에서, 오퍼랜드의 어드레스는 데이터 포인터 레지스터(48)의 내용에 오프셋 값을 더함으로써 계산된다. 오프셋 값은 명령 내에 끼워지거나 어떠한 다른 레지스터로부터 비롯될 수 있다. 본 실시예에서의 오프셋 값은, 누산기 또는 “작업” 레지스터가 될 수 있는 “w” 레지스터(20)(도 1)로부터 비롯된다. 상기와 같이, 데이터 포인터 레지스터(48)는 오퍼랜드 액세스 전 또는 후에 증가 또는 감소될 수 있다.
데이터 포인터 레지스터(48)는 데이터 포인터 레지스터(48)가 실행하기를 원하는 각각의 간접 어드레싱 모드에 대하여 데이터 메모리(42) 내의 개별적인 가상 레지스터 어드레스 위치(50)를 필요로 한다. 본 발명의 바람직한 실시예에서는, 상기 설명한 다섯 개의 간접 어드레싱 모드를 수행하기 위하여 다섯 개의 가상 레지스터 어드레스 위치(50)를 필요로 한다. 그러나, 데이터 포인터 레지스터(48)의 사용에 다라, 부가적인 또는 더 적은 간접 어드레싱 모드가 실행될 수 있다. 또한, 부가적인 데이터 포인터 레지스터(48)가 데이터 메모리(42) 내에서 실행될 수 있다. 각각의 데이터 포인터 레지스터(48)는 레지스터 어드레스 맵에 지정된 하나 또는 그 이상의 가상 레지스터 어드레스 위치(50)를 구비한다. 각각의 지정된 가상 레지스터 어드레스 위치(50)는 액세스될 때 관련된 데이터 포인터 레지스터(48)에 대한 간접 어드레싱 모드를 개시할 것이다. 각각의 데이터 포인터 레지스터(48)는 리드 가능하고 라이트 가능한 어드레스 위치이다. 본 발명의 바람직한 실시예에서, 각각의 데이터 포인터 레지스터(48)는 4K 바이트 길이의 메모리 영역을 액세스할 수 있는 12 비트 크기의 포인터이다. 따라서, 각각의 데이터 포인터 레지스터(48)는, 리드 가능한 또는 라이트 가능한 레지스터로서 액세스가능한 두 개의 8 비트 크기의 레지스터(하이 바이트 및 로우 바이트)로 구성된다. 따라서, 본 발명의 바람직한 실시예에서는, 다섯 개의 간접 어드레싱 모드로 12 비트 크기의 데이터 포인터를 실행시키는 데에 7개의 어드레스 위치가 사용된다.
본 발명은 범용 레지스터로서 사용될 수 있는 레지스터 어드레스의 수를 최대화시킨다. 본 발명의 바람직한 실시예를 이용하는 명령의 엔코딩 기술에서, 데이터 메모리 또는 레지스터를 어드레스하는 데에 8 비트가 사용가능하다. 이는 256개의 레지스터를 어드레스할 수 있게 한다. 레지스터 중 7개는 다양한 간접 어드레싱을 수행하는 데에 사용되기 때문에, 249개의 직접 어드레스 가능한 레지스터가 가능하다. 또한, 직접 어드레스 가능한 레지스터의 양을 상당히 감소시키지 않는 다면, 부가적인 데이터 포인터 레지스터(48)가 추가될 수 있다. 본 발명은 도 1에 도시한 종래 기술과 비교하여 어드레스 가능한 레지스터의 양을 상당히 증가시킨다.
본 발명은 간접 레지스터를 추가 또는 삭제할 수 있는 유연성을 갖는다. 간접 레지스터는 그 자체가 명령 내에 엔코드되는 것이 아니라 특정한 레지스터 어드레스를 키 오프(keyed off)시키기 때문에, 새로운 데이터 포인터 레지스터(48)의 추가가 가능하다. 따라서, 동일한 프로세서에 근거하는 두 개의 다른 장치(product)가 다른 수의 데이터 포인터 레지스터를 종래의 방법 보다 더 용이하게 실행시킬 수 있다.
본 발명은 또한 어드레싱 모드를 추가, 삭제, 또는 변경할 수 있는 유연성을 갖는다. 데이터 포인터 레지스터(48)가 용이하게 추가 또는 삭제될 수 있는 것 처럼, 다양한 어드레싱 모드가 용이하게 추가 또는 삭제될 수 있다. 새로운 어드레싱 모드를 추가하는 데에 필요한 모든 것은 새로운 데이터 어드레스 위치를 특정 어드레스로 지정하는 것이다.
본 발명에 의하면, 어드레싱 모드 및 레지스터를 혼합 및 매치시킬 수 있게 된다. 종래 기술의 어드레싱 모드는 명령 포맷의 일부로서 앤코드될 때 상당히 고정된다. 본 발명에 의하면, 그 각각이 어떠한 수 및 타입의 간접 어드레싱 모드를 지지하는 어떠한 수의 포인터 레지스터를 구비할 수 있게 된다. 데이터 포인터 레지스터(48) 및 어드레싱 모드의 총 수는 이들을 실행하는 데에 필요한 로직 및 회로 양의 실질적인 고려에 의해서만 제한된다.
본 발명은 또한 명령 원칙에 의한 명령에 입각하여 어떠한 간접 어드레싱 모드를 사용할 수 있는 유연성을 갖는다. 종래 기술에서, 간접 어드레싱의 변화를 제어하기 위하여 특정한 제어 레지스터가 사용된다. 이것의 한계는, 특정 모드에 대하여 제어 비트가 일단 세트되면, 모든 명령은 제어 비트가 바뀔 때 까지 선택된 모드만을 사용한다는 것이다. 이는, 제어 비트를 자주 바꾸는 것은 불가능하기 때문에, 주어진 코드 부분 내에서의 어드레싱 모드 선택을 하나로 효과적으로 줄이게 된다. 본 발명에서는, 각 간접 어드레싱의 변환에는 특정한 레지스터 어드레스가 주어진다. 따라서, 어떠한 명령으로 어떠한 간접 어드레싱 모드를 사용하는 것이 가능해진다.
본 발명이 특히 바람직한 실시예에 대해 도시되고 설명되기는 하였지만, 이 분야의 당업자에게 있어 형태 및 세부사항에 있어서 상술한 그리고 다른 변형이 본 발명의 원리 및 범위를 벗어나지 않으면서 이루어질 수 있음은 자명하다.

Claims (16)

  1. 사용가능한 연산코드 및 어드레스 가능한 레지스터의 수를 최대화하면서 다양한 어드레싱 모드를 엔코딩할 수 있는 시스템으로서,
    가상 레지스터 어드레스를 사용하여 다양한 어드레싱 모드를 엔코딩할 수 있는 프로세서 구조; 및
    각각 다수의 비트로 구성되는 다수의 명령을 구비하는 명령 세트를 구비하며, 상기 각 다수의 명령 내의 상기 다수의 비트 중 어느 것도 다른 어드레싱 모드를 실행하는 전용 비트가 아니며, 상기 각 다수의 명령은 상기 프로세서 구조 내에서 상기 가상 레지스터 어드레스를 어드레싱함으로써 다른 어드레싱 모드를 실행시킬 수 있는 것을 특징으로 하는 시스템.
  2. 제 1 항에 있어서, 상기 다수의 명령 중 각 명령은:
    수행될 연산을 나타내기 위하여 연산 필드를 규정하는 데에 사용되며, 그 크기는 실행될 연산코드의 바람직한 수에 의해 규정되는 상기 다수의 비트 중 첫 번째 비트 세트와;
    수행될 상기 연산의 결과가 어디에 저장될 지를 나타내는 목적 비트; 및
    상기 연산이 수행되는 데이터의 어드레스를 나타내기 위하여 레지스터 어드레스를 규정하는 데에 사용되는 상기 각 명령의 상기 다수의 비트 중 나머지 부분으로 구성되는 것을 특징으로 하는 시스템.
  3. 제 1 항에 있어서, 상기 다수의 명령 중 각 명령은:
    상기 연산이 수행되는 데이터의 레지스터 어드레스를 나타내기 위하여 레지스터 어드레스를 규정하는 데에 사용되며, 그 크기는 실행될 레지스터 어드레스의 수에 의해 규정되는 상기 다수의 비트 중 첫 번째 비트 세트와;
    수행될 상기 연산의 결과가 어디에 저장될 지를 나타내는 목적 비트; 및
    수행되는 연산을 나타내기 위하여 연산 필드를 규정하는 데에 사용되는 상기 각 다수의 명령 중 상기 다수의 비트 중 나머지 부분으로 구성되는 것을 특징으로 하는 시스템.
  4. 제 1 항에 있어서, 상기 다수의 명령 중 각 명령은 16 비트 길이인 것을 특징으로 하는 시스템.
  5. 제 4 항에 있어서, 상기 다수의 명령 중 각 명령은:
    상기 연산이 수행되는 데이터의 레지스터 어드레스를 나타내기 위하여 레지스터 어드레스를 규정하는 데에 전용되는 상기 16 비트 중 첫 번째 8비트와;
    수행될 상기 연산의 결과가 어디에 저장될 지를 나타내는 목적 비트로 전용되는 상기 16 비트 중 아홉번째 비트; 및
    수행되는 연산을 나타내기 위하여 연산 필드를 규정하는 데에 전용되는 상기 16 비트 중 마지막 7 비트로 구성되는 것을 특징으로 하는 시스템.
  6. 제 4 항에 있어서, 상기 다수의 명령 중 각 명령은:
    상기 연산이 수행되는 데이터의 레지스터 어드레스를 나타내기 위하여 레지스터 어드레스를 규정하는 데에 전용되는 상기 16 비트 중 첫 번째 7비트와;
    수행될 상기 연산의 결과가 어디에 저장될 지를 나타내는 목적 비트로 전용되는 상기 16비트 중 여덟번째 비트; 및
    수행되는 연산을 나타내기 위하여 연산 필드를 규정하는 데에 전용되는 상기 16비트 중 나머지 8비트로 구성되는 것을 특징으로 하는 시스템.
  7. 제 1 항에 있어서, 상기 프로세서 구조는:
    상기 명령을 실행하는 중앙 처리 장치(CPU)와;
    데이터를 저장하기 위하여 상기 CPU에 결합되는 메모리와;
    관련된 어드레스가 액세스될 때 상기 명령이 액세스하는 어드레스를 저장하는 상기 메모리 내의 포인터 레지스터; 및
    상기 포인터 레지스터에 관련된 상기 메모리 내의 전용 가상 레지스터 어드레스 위치로, 상기 전용 어드레스 위치 중 하나가 액세스될 때, 상기 포인터 레지스터와 함께 사용될 간접 어드레싱 모드를 지시하며, 이로써 명령 원칙에 의한 명령에 입각하여 어드레싱 모드를 동적으로 선택할 수 있는 유연성을 갖게 하는 전용 가상 레지스터어드레스 위치로 구성되는 것을 특징으로 하는 시스템.
  8. 제 7 항에 있어서, 액세스될 때 단순 간접 어드레싱을 개시하는 데에 전용되는 한 개의 가상 레지스터 어드레스 위치를 더 포함하는 것을 특징으로 하는 시스템.
  9. 제 7 항에 있어서, 액세스될 때 자동 사후 증가되는 간접 어드레싱을 개시하는 데에 전용되는 한 개의 가상 레지스터 어드레스 위치를 더 포함하는 것을 특징으로 하는 시스템.
  10. 제 7 항에 있어서, 액세스될 때 자동 사후 감소되는 간접 어드레싱을 개시하는 데에 전용되는 한 개의 가상 레지스터 어드레스 위치를 더 포함하는 것을 특징으로 하는 시스템.
  11. 제 7 항에 있어서, 액세스될 때 자동 이전 증가되는 간접 어드레싱을 개시하는 데에 전용되는 한 개의 가상 레지스터 어드레스 위치를 더 포함하는 것을 특징으로 하는 시스템.
  12. 제 7 항에 있어서, 액세스될 때 오프셋을 갖는 간접 어드레싱을 개시하는 데에 전용되는 한 개의 가상 레지스터 어드레스 위치를 더 포함하는 것을 특징으로 하는 시스템.
  13. 제 7 항에 있어서, 상기 포인터 레지스터는 12 비트 크기의 포인터 레지스터인 것을 특징으로 하는 시스템.
  14. 제 7 항에 있어서,
    상기 메모리 내의 다수의 포인터 레지스터; 및
    상기 다수의 포인터 레지스터와 관련된 간접 어드레싱 모드의 총 수와 동일하며, 그 각각은 액세스 될 때 상기 다수의 포인터 레지스터 중 관련된 포인터 레지스터와 함께 사용될 간접 어드레싱 모드를 지시하며, 이로써 명령 원칙에 의한 명령에 입각하여 어드레싱 모드를 동적으로 선택하는 유연성을 갖게 하는 상기 메모리 내의 전용 가상 레지스터 어드레스 위치를 더 포함하는 것을 특징으로 하는 시스템.
  15. 제 14 항에 있어서, 상기 각 다수의 포인터 레지스터는 12 비트 크기의 포인터 레지스터인 것을 특징으로 하는 시스템.
  16. 제 15 항에 있어서, 상기 다수의 포인터 레지스터와 관련된 간접 어드레싱 모드의 총 수와 동일한 상기 메모리 내의 상기 각 전용 가상 레지스터 어드레스 위치는 단순 간접 어드레싱, 자동 사후 증가되는 간접 어드레싱, 자동 사후 감소되는 간접 어드레싱, 자동 이전 증가되는 간접 어드레싱, 및 오프셋을 갖는 간접 어드레싱으로 구성되는 그룹 중 하나의 간접 어드레싱 모드를 개시하는 것을 특징으로 하는 시스템.
KR1019980046746A 1997-10-29 1998-10-29 사용가능한 연산코드를 최대화하고 다양한 어드레싱 모드를 실행하는 프로세서 구조 및 명령 세트 KR19990037573A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/959,942 US5987583A (en) 1997-10-07 1997-10-29 Processor architecture scheme and instruction set for maximizing available opcodes and address selection modes
US8/959,942 1997-10-29

Publications (1)

Publication Number Publication Date
KR19990037573A true KR19990037573A (ko) 1999-05-25

Family

ID=25502611

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980046746A KR19990037573A (ko) 1997-10-29 1998-10-29 사용가능한 연산코드를 최대화하고 다양한 어드레싱 모드를 실행하는 프로세서 구조 및 명령 세트

Country Status (7)

Country Link
US (1) US5987583A (ko)
EP (1) EP0913766B1 (ko)
JP (1) JPH11212787A (ko)
KR (1) KR19990037573A (ko)
AT (1) ATE223082T1 (ko)
DE (1) DE69807412T2 (ko)
TW (1) TW408282B (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098160A (en) * 1997-10-28 2000-08-01 Microchip Technology Incorporated Data pointer for outputting indirect addressing mode addresses within a single cycle and method therefor
IL126043A (en) * 1998-09-02 2003-01-12 D S P Group Ltd Method and system for setting a new memory address pointer in a dsp
US6708268B1 (en) * 1999-03-26 2004-03-16 Microchip Technology Incorporated Microcontroller instruction set
EP1218818A2 (en) 2000-03-21 2002-07-03 Koninklijke Philips Electronics N.V. Data carrier having address mode extension means and command extension means
US7437532B1 (en) * 2003-05-07 2008-10-14 Marvell International Ltd. Memory mapped register file
GB2402763B (en) * 2003-06-13 2006-03-01 Advanced Risc Mach Ltd Data access program instruction encoding
EP1706817B1 (en) 2003-10-23 2015-04-15 Microchip Technology Inc. Microcontroller with a virtual memory bank
US20050138330A1 (en) * 2003-12-23 2005-06-23 Maxim Integrated Products, Inc. MAXQ microcontroller
US8539210B2 (en) 2007-11-30 2013-09-17 Microchip Technology Incorporated Context switching with automatic saving of special function registers memory-mapped to all banks
US7996651B2 (en) * 2007-11-30 2011-08-09 Microchip Technology Incorporated Enhanced microprocessor or microcontroller
JP5757320B2 (ja) * 2013-12-12 2015-07-29 日本電気株式会社 データ処理装置、データ処理方法およびデータ処理プログラム
CN106293627B (zh) * 2016-07-27 2019-01-11 珠海市杰理科技股份有限公司 寄存器调用及调用指令编码的方法、装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3946366A (en) * 1973-01-26 1976-03-23 Sanders Associates, Inc. Addressing technique employing both direct and indirect register addressing
US4047245A (en) * 1976-07-12 1977-09-06 Western Electric Company, Incorporated Indirect memory addressing
US4240142A (en) * 1978-12-29 1980-12-16 Bell Telephone Laboratories, Incorporated Data processing apparatus providing autoincrementing of memory pointer registers
US5367648A (en) * 1991-02-20 1994-11-22 International Business Machines Corporation General purpose memory access scheme using register-indirect mode
US5717908A (en) * 1993-02-25 1998-02-10 Intel Corporation Pattern recognition system using a four address arithmetic logic unit
US5832533A (en) * 1995-01-04 1998-11-03 International Business Machines Corporation Method and system for addressing registers in a data processing unit in an indexed addressing mode
US5860155A (en) * 1995-11-16 1999-01-12 Utek Semiconductor Corporation Instruction decoding mechanism for reducing execution time by earlier detection and replacement of indirect addresses with direct addresses

Also Published As

Publication number Publication date
EP0913766B1 (en) 2002-08-28
US5987583A (en) 1999-11-16
EP0913766A2 (en) 1999-05-06
DE69807412T2 (de) 2003-04-17
DE69807412D1 (de) 2002-10-02
JPH11212787A (ja) 1999-08-06
EP0913766A3 (en) 1999-12-29
TW408282B (en) 2000-10-11
ATE223082T1 (de) 2002-09-15

Similar Documents

Publication Publication Date Title
US8332621B2 (en) Implementation of variable length instruction encoding using alias addressing
US4240139A (en) Address generating system
JP2004506263A (ja) 拡張レジスタモードで拡張レジスタセットにアクセスするcpu
US6192463B1 (en) Processor architecture scheme which uses virtual address registers to implement different addressing modes and method therefor
US5987583A (en) Processor architecture scheme and instruction set for maximizing available opcodes and address selection modes
KR100465388B1 (ko) Risc 구조의 8비트 마이크로 제어기
US6687808B2 (en) Data processor using indirect register addressing
US5357620A (en) Bit addressing system
US6029241A (en) Processor architecture scheme having multiple bank address override sources for supplying address values and method therefor
GB2352066A (en) Instruction set for a computer
GB2402763A (en) Data access program instruction encoding
EP0240606B1 (en) Pipe-line processing system and microprocessor using the system
JP2551167B2 (ja) マイクロコンピュータ
KR19990037571A (ko) 단일 주기 내에 간접 어드레싱 모드 어드레스를 출력하는 데이터 포인터 및 그 제공방법
US6408380B1 (en) Execution of an instruction to load two independently selected registers in a single cycle
KR100960095B1 (ko) 마이크로컨트롤러 명령어 셋트
US6321319B2 (en) Computer system for allowing a two word jump instruction to be executed in the same number of cycles as a single word jump instruction
US7370159B2 (en) Microprocessor having an extended addressable space
JPH09505428A (ja) ページアドレスモードを有するマイクロコントローラ
KR100897857B1 (ko) 마이크로컨트롤러 명령어 셋트
JPH0666052B2 (ja) メモリ内容を機械レジスタに自動的に写像する計算機
KR20010085562A (ko) 데이터 랜덤 액세스 메모리를 사용하는 다양한 사이즈의마이크로컨트롤러를 위한 강제 페이지 페이징 방법
KR19990046283A (ko) 확장명령어를갖는중앙처리장치
JPH07104780B2 (ja) マイクロプロセッサ
KR19990046282A (ko) 확장명령어를갖는중앙처리장치

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid