KR100407452B1 - Data processing apparatus for executing multiple instruction sets - Google Patents

Data processing apparatus for executing multiple instruction sets Download PDF

Info

Publication number
KR100407452B1
KR100407452B1 KR10-2001-0003818A KR20010003818A KR100407452B1 KR 100407452 B1 KR100407452 B1 KR 100407452B1 KR 20010003818 A KR20010003818 A KR 20010003818A KR 100407452 B1 KR100407452 B1 KR 100407452B1
Authority
KR
South Korea
Prior art keywords
instruction
instruction set
instructions
data
bit
Prior art date
Application number
KR10-2001-0003818A
Other languages
Korean (ko)
Other versions
KR20020063076A (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 패러데이 테크놀로지 코퍼레이션
Priority to KR10-2001-0003818A priority Critical patent/KR100407452B1/en
Publication of KR20020063076A publication Critical patent/KR20020063076A/en
Application granted granted Critical
Publication of KR100407452B1 publication Critical patent/KR100407452B1/en

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • 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
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/264Microinstruction selection based on results of processing
    • 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

Abstract

다중 명령 집합을 실행하기 위한 데이터 처리 장치는 다중 명령 집합의 다수개의 명령어를 저장하기 위한 메모리와, 명령어의 1차 명령어를 실행하기 위한 프로세서 코어와, 메모리에 저장된 다음 명령어를 어드레스하기 위한 프로그램 카운터 레지스터 (PC)와, 명령어의 데이터를 저장하기 위한 다수개의 데이터 레지스터와, 프로세서 코어의 상태를 저장하며, 명령 집합의 현재 명령 집합을 나타내기 위한 명령 집합 선택기 (instruction set selector(ISS))를 포함하는 프로세서 상태 레지스터와, 명령 집합 중 적어도 하나를 1차 명령어에 이동시키고 출력하기 위한 프리디코더(predecoder)와, 1차 명령어를 저장하기 위한 아이캐시(Icache)와, 1차 명령어를 디코딩하여, 프로세서 코어가 디코더에 의해 디코딩된 1차 명령어를 실행하는데 사용되는 디코더와, 1차 명령어와 다른 명령어의 길이를 맞추기 위해 프로그램 카운터의 값을 변형하도록 명령 집합 선택기에 반응하는 프로그램 카운터 제어기와, 프리디코더와 메모리 사이에서 인터페이스되는 버스 인터페이스를 구비한다.A data processing device for executing multiple instruction sets includes a memory for storing a plurality of instructions of the multiple instruction set, a processor core for executing the primary instructions of the instructions, and a program counter register for addressing the next instruction stored in the memory. (PC), a plurality of data registers for storing the data of the instructions, and an instruction set selector (ISS) for storing the state of the processor core and indicating the current instruction set of the instruction set. The processor core register, a predecoder for moving and outputting at least one of the instruction set to the primary instruction, an icache for storing the primary instruction, and decoding the primary instruction, Is used to execute a primary instruction decoded by the decoder, and the primary instruction. And a program counter controller responsive to the instruction set selector to modify the value of the program counter to match the length of the other instructions, and a bus interface interfaced between the predecoder and the memory.

Description

다중명령집합을 실행하기 위한 데이터처리장치{DATA PROCESSING APPARATUS FOR EXECUTING MULTIPLE INSTRUCTION SETS}DATA PROCESSING APPARATUS FOR EXECUTING MULTIPLE INSTRUCTION SETS}

본 발명은 데이터 처리 장치에 관한 것이다. 특히, 본 발명은 다중 명령 집합을 실행하기 위한 데이터 처리 장치에 관한 것이다.The present invention relates to a data processing apparatus. In particular, the present invention relates to a data processing apparatus for executing multiple instruction sets.

데이터 처리 장치는 일반적으로 소정 명령 집합의 프로그램 명령어를 실행하는 처리 코어를 구비한다. 이러한 처리 코어와 함께, 상기 데이터 처리 장치는 또한 실행가능한 프로그램 명령어를 저장하는 데이터 메모리와 다음 명령어의 메모리에 어드레스를 나타내는 프로그램 카운터 레지스터를 포함할 수 있다. 그러나, 이러한 유형의 장치는 하나의 명령 집합의 실행만을 허용한다. 하나 이상의 명령 집합에서 실행가능하고 작동가능한 장치가 훨씬 더 융통성있고 강력하다.The data processing apparatus generally includes a processing core for executing program instructions of a predetermined instruction set. With this processing core, the data processing apparatus may also include a data memory storing executable program instructions and a program counter register indicating an address in the memory of the next instruction. However, this type of device allows execution of only one instruction set. Devices that are executable and operable in one or more instruction sets are much more flexible and powerful.

도 1은 "다중 명령 집합을 갖는 상호운용가능성 (Interoperability with multiple instruction sets)"이라는 명칭의 미국 특허번호 6,021,265에 개시된 바와 같은, 두 개의 명령 집합을 실행하도록 설계된 종래의 데이터 처리 장치의 구조를 보여주는 블록도이다.1 is a block showing the structure of a conventional data processing apparatus designed to execute two instruction sets, as disclosed in US Pat. No. 6,021,265, entitled "Interoperability with multiple instruction sets." It is also.

도 1에 도시된 바와 같이, 종래 데이터 처리 장치의 프로세서 코어(10)는 레지스터 저장소(30)와, 부쓰 곱셈기 (Booths multiplier)(40)와, 배럴 시프터 (barrel shifter)(50)와, 32비트 연산 논리 회로 (arithmetic logic unit)(ALU)(60)와, 기록 데이터 레지스터(70)를 구비한다.As shown in FIG. 1, the processor core 10 of a conventional data processing apparatus includes a register store 30, a booth multiplier 40, a barrel shifter 50, and 32 bits. An arithmetic logic unit (ALU) 60 and a write data register 70 are provided.

상기 장치에서 기타 부품으로는 제 1 명령 디코더 및 논리 제어기 (100)와, 제 2 명령 디코더 및 논리 제어기 (110)와, 프로그램 카운터 제어기(140)와, 프로그램 카운터 (PC)(130)와, 멀티플렉서(90)와, 기록-데이터 레지스터(120)와, 명령 루트(instruction pipeline)(80)와, 메모리 시스템(20)이 있다.Other components in the apparatus include a first command decoder and logic controller 100, a second command decoder and logic controller 110, a program counter controller 140, a program counter (PC) 130, and a multiplexer. 90, a write-data register 120, an instruction pipeline 80, and a memory system 20.

상기와 같은 종래 장치에서, 별도의 명령 디코더 및 논리 제어기가 양 명령 집합에 요구된다. 따라서, 제 1 명령 디코더 및 논리 제어기(100)는 제 1 명령 집합의 프로그램 명령어를 디코딩하고, 제 2 명령 디코더 및 논리 제어기(110)는 제2 명령 집합의 프로그램 명령어를 디코딩한다. 제 1 명령 집합의 프로그램 명령어는 일반적으로 32비트이고, 제 2 명령 집합의 프로그램 명령어는 일반적으로 16비트이다. 이러한 방식으로, 프로그래머는 32비트 명령 집합의 보다 강력한 명령 집합을 사용하거나 16비트 명령 집합의 명령 집합을 메모리에 저장하고 사용할 선택권을 갖는다.In such a conventional apparatus, separate instruction decoders and logic controllers are required for both instruction sets. Thus, the first command decoder and logic controller 100 decodes the program instructions of the first instruction set, and the second command decoder and logic controller 110 decodes the program instructions of the second instruction set. Program instructions in the first instruction set are generally 32 bits, and program instructions in the second instruction set are generally 16 bits. In this way, programmers have the option of using a more powerful instruction set of 32-bit instruction sets or storing and using the instruction set of 16-bit instruction sets in memory.

제어 수단은 현재 프로그램 명령어를 디코딩하기 위한 명령 디코더를 제어하기 위해 포함되어야 하며, 상기 명령어는 프로그램 카운터(130)에서 최상위 비트 또는 최하위비트를 세팅하거나 리셋하는 프로그램 카운터 제어기(140)에 의해 수행된다. 또한 제어수단은 제 1 명령 디코더 및 논리 제어기(100)와 제2 명령 디코더 및 논리제어기(110) 사이에서 선택하기 위해 멀티플렉서(90)를 교대로 제어한다.Control means must be included to control the instruction decoder for decoding the current program instruction, which instruction is performed by the program counter controller 140 which sets or resets the most significant or least significant bit in the program counter 130. The control means also alternately control the multiplexer 90 to select between the first command decoder and logic controller 100 and the second command decoder and logic controller 110.

상기와 같은 구조의 종래 기술에서, 명령 집합 유형은 실시간으로 결정될 수 있다. 즉, 두 개의 명령 집합은 함께 혼합될 수 있고, 이러한 두 개의 집합은 별도로 처리할 필요가 없다. 그러나, 두 개의 디코더 및 논리 제어회로가 설계에 필요하다. 보다 많은 전력 소비 및 큰 칩 크기가 프로세서 코어 (10)에 필요하고, 이는 보다 적은 전력 소비 및 적은 크기의 프로세서를 개발시키는 추세에 적합하지 않다.In the prior art of such a structure, the instruction set type can be determined in real time. That is, the two sets of instructions can be mixed together, and these two sets need not be processed separately. However, two decoders and logic control circuits are needed in the design. More power consumption and larger chip size are needed for processor core 10, which is not suitable for the trend of developing less power consumption and smaller size processors.

두 개의 명령 집합을 실행시키기 위해 설계된 또 다른 종래의 데이터 처리 장치가 "다중 명령 집합 매핑(Multiple instructions set mapping)"이라는 명칭의 미국 특허 번호 5,568,646에 개시되어 있다. 그 구성은 현재 프로그램 명령어를 디코딩하는 명령 디코더를 제어하기 위한 제어 수단을 필요로 하지 않는다. 즉, 프로그램 카운터에서 최상위 비트 또는 최하위 비트를 세팅하거나 리셋할 필요가 없다.Another conventional data processing apparatus designed to execute two instruction sets is disclosed in US Pat. No. 5,568,646, entitled " Multiple instructions set mapping. &Quot; The configuration does not require control means for controlling the command decoder to decode the current program instruction. That is, there is no need to set or reset the most significant or least significant bit in the program counter.

루트 타입 프로세서 (pipeline-type processor)를 위한 세가지 단계, 즉, 이송단계(fetching stage (pipeline stage)), 디코딩 단계, 및 실행 단계가 있다. 상기 특허는 데이터 처리시 디코딩 단계를 사용하도록 설계되어 있다. 디코딩 주기시, 제어 신호를 매핑하고 발생하는 단계를 포함하는 두가지 단계가 수행된다. 서로 다른 명령 집합이 1차 명령 집합으로 가장 먼저 이동되도록 매핑된다. 1차 명령 집합은 다음 실행 단계에서 실행될 수 있다.There are three stages for a pipeline-type processor: a fetching stage (pipeline stage), a decoding stage, and an execution stage. The patent is designed to use a decoding step in data processing. During the decoding cycle, two steps are performed, including mapping and generating the control signal. Different instruction sets are mapped so that they move first to the primary instruction set. The primary instruction set can be executed in the next execution step.

그러나, 디코딩 단계시 명령 집합들을 매핑하여야 하고, 이 경우 디코딩 단계 로딩을 증가시킨다. 이는 고주파 설계가 어렵다는 것을 의미한다. 또한, 95% 히트율(hit rate)의 경우에서, 전력 소비가 상당히 증가한다. 이는 현 추세의 요구조건을 만족하지 않는다.However, the instruction sets must be mapped during the decoding phase, in which case the decoding stage loading is increased. This means that high frequency design is difficult. Also, in the case of a 95% hit rate, power consumption increases significantly. This does not meet the requirements of the current trend.

도 1은 두 개의 명령 집합을 실행하도록 설계된 종래의 데이터 처리 장치의 구조를 보여주는 블록도이다.1 is a block diagram showing the structure of a conventional data processing apparatus designed to execute two instruction sets.

도 2는 본 발명에 따른 다중 명령 집합을 실행하기 위한 데이터 처리 장치의 바람직한 실시예의 블록도이다.2 is a block diagram of a preferred embodiment of a data processing apparatus for executing multiple instruction sets in accordance with the present invention.

도 3은 본 발명에 따른 명령어 실행 플로우를 보여주는 바람직한 실시예의 플로우 차트이다.3 is a flow chart of a preferred embodiment showing the instruction execution flow in accordance with the present invention.

도 4는 본 발명에 따른 명령 집합 스위칭 플로우를 보여주는 바람직한 실시예의 플로우 차트이다.4 is a flow chart of a preferred embodiment showing an instruction set switching flow in accordance with the present invention.

도 5는 종래 기술과 본 발명 사이에서 아이캐시의 TAG 부분의 비교도이다.5 is a comparison of the TAG portion of the iCache between the prior art and the present invention.

도 6은 종래 기술과 본 발명 사이에서 아이캐시의 DATA 부분의 비교도이다.6 is a comparison of the DATA portion of the iCache between the prior art and the present invention.

도 7은 명령어 A 및 B가 동일한 메모리 라인을 점유할 경우 TAG 부분과 DATA 부분에서 아이캐시의 작용을 설명하는 경우이다.FIG. 7 illustrates the operation of the icache in the TAG part and the DATA part when the commands A and B occupy the same memory line.

따라서, 본 발명의 목적은 여분의 전력 소비 없이 또는 클럭 주파수의 속도 저하 없이 다중 명령 집합을 실행하기 위한 데이터 처리 장치를 제공하기 위한 것이다.It is therefore an object of the present invention to provide a data processing apparatus for executing multiple instruction sets without extra power consumption or without slowing down the clock frequency.

상기 데이터 처리 장치는 다중 명령 집합의 다수개의 명령어를 저장하기 위한 메모리와, 명령어의 1차 명령어를 실행하기 위한 프로세서 코어와, 메모리에 저장된 다음 명령어를 어드레스하기 위한 프로그램 카운터 레지스터 (PC)와, 명령어의 IS 비트 및 유형을 포함하는 데이터를 저장하기 위한 다수개의 데이터 레지스터와, 프로세서 코어의 상태를 저장하며, 명령 집합의 현재 명령 집합을 나타내기 위한 명령 집합 선택기 (ISS)를 포함하는 프로세서 상태 레지스터와, 명령 집합 중 적어도 하나를 1차 명령어에 이동시키고 출력하기 위한 프리디코더와, 1차 명령어를 저장하고 캐시 명령의 TAG, 유효(Valid) 및 ISS 정보를 관리하기 위한 아이캐시와, 1차 명령어를 디코딩하며, 프로세서 코어가 디코더에 의해 디코딩된 1차 명령어를 실행하는데 사용되는 디코더와, 1차 명령어와 다른 명령어의 길이를 맞추기 위해 프로그램 카운터의 값을 변형하도록 명령 집합 선택기에 반응하는 프로그램 카운터 제어기와, 프리디코더와 메모리 사이에서 인터페이스되는 버스를 구비한다.The data processing apparatus includes a memory for storing a plurality of instructions of a multiple instruction set, a processor core for executing the primary instructions of the instructions, a program counter register (PC) for addressing the next instruction stored in the memory, instructions A processor status register comprising a plurality of data registers for storing data including an IS bit and a type of the processor, an instruction set selector (ISS) for storing a state of the processor core and indicating a current instruction set of the instruction set; A predecoder for moving and outputting at least one of the instruction set to the primary instruction, an icache for storing the primary instruction and managing the TAG, Valid and ISS information of the cache instruction, and the primary instruction. Decode used by the processor core to execute the primary instructions decoded by the decoder. And it provided with a bus interface between the first instruction and the other instructions to adjust the length of the program counter controller responsive to the instruction set selector to modify the value of the program counter, and a pre-decoder and a memory.

프로세서 코어는 1차 명령 집합 A로부터 명령어를 실행하고, 그 결과 및 명령 집합 유형 (IS)을 데이터 레지스터(R0~R14) 또는 프로그램 카운터에 저장한다. 프로세서 상태 레지스터 (PSR)는 각 명령의 실행 후 조건, 상태 및 모드 비트를 유지한다. 프리디코더는 명령 집합 선택기(ISS)에 따라 명령어를 프리디코딩한다. 디코더는 아이캐시로부터 발생된 명령 집합 A의 명령어를 디코딩한다. 이러한 데이터 처리 장치에서, 프로세서 코어는 명령 집합 A인 한종류의 명령 집합만을 가지지만 프리디코더 및 ISS에 의해 기타 다른 명령 집합으로부터 프로그램 명령어를 실행할 수 있다.The processor core executes instructions from the primary instruction set A, and stores the result and instruction set type (IS) in the data registers R0 to R14 or program counters. The processor status register (PSR) holds the condition, status, and mode bits after execution of each instruction. The predecoder predecodes the instructions according to the instruction set selector (ISS). The decoder decodes the instructions of the instruction set A generated from the icache. In such a data processing apparatus, the processor core has only one type of instruction set, which is instruction set A, but can execute program instructions from other instruction sets by the predecoder and the ISS.

명령 집합의 스위치가 발생할 때, 하나 이상의 명령어는 다수개의 데이터 레지스터의 비트 31~1에 브랜치 어드레스를 지정하게 된다. 브랜치 명령은 다수개의 레지스터의 비트 31~1를 프로그램 카운터에 복사한다. 프로그램 카운터의 최하위 비트는 항상 0이다. 유사하게, 브랜치 명령은 다수개의 레지스터의 최하위 비트를 PSR의 ISS에 복사한다. 브랜치 명령 실행후, 프로그램 카운터는 새로운 명령 집합의 제1 명령을 어드레스하게 되고, ISS는 새로운 명령 집합 모드를 나타내게 된다. 프로그램 카운터에 의해 어드레스된 새로운 명령어는 프리디코더에 입력되고, 새로운 명령어의 디코딩 방법론은 새로운 ISS 값에 의해 결정된다. ISS가 명령 집합 B를 나타낼 때, 프리디코더는 명령 집합 B에서와 같이 입력 명령어를 나타내게 되며, B 서브디코더를 사용하여 명령 집합 A로부터의 명령어와 같은 입력 명령어를 디코딩하게 된다. 그리고 나서, 프리디코더는 명령 집합 A의 명령어를 아이캐시에 출력하게 된다. 아이캐시는 데이터 부분에 프리디코더의 출력을 저장하고, TAG 부분에 저장된 명령의 TAG, 유효(Valid) 및 ISS 비트를 업데이트한다. 종래기술과는 달리, 아이캐시 히트 수단 V는 하나와 동일하고, PC의 tag 비트는 TAG 부분의 tag 비트와 동일하고, PSR(ISS)은 TAG(ISS)와 동일하다. 디코더와 프로세서 코어는 항상 명령 집합 A를 처리한다.When a switch in the instruction set occurs, one or more instructions assign a branch address to bits 31-1 of the multiple data registers. Branch instructions copy bits 31 to 1 of multiple registers into the program counter. The least significant bit of the program counter is always zero. Similarly, branch instructions copy the least significant bits of multiple registers into the ISS of the PSR. After executing the branch instruction, the program counter will address the first instruction of the new instruction set, and the ISS will indicate the new instruction set mode. The new instruction addressed by the program counter is input to the predecoder and the decoding methodology of the new instruction is determined by the new ISS value. When the ISS represents instruction set B, the predecoder represents the input instructions as in instruction set B, and uses the B subdecoder to decode input instructions, such as instructions from instruction set A. The predecoder then outputs the instructions in instruction set A to the icache. ICache stores the output of the predecoder in the data portion and updates the TAG, Valid and ISS bits of the instructions stored in the TAG portion. Unlike the prior art, the icache hit means V is equal to one, the tag bit of the PC is equal to the tag bit of the TAG portion, and the PSR (ISS) is equal to the TAG (ISS). The decoder and processor core always process instruction set A.

상기 전반적인 설명 및 하기의 상세한 설명은 예시적이고 청구된 바와 같이 본 발명의 추가 설명을 제공하기 위해 의도된 것으로 이해되어야 한다.It is to be understood that the above general description and the following detailed description are intended to provide further explanation of the invention as illustrative and claimed.

이하, 본 발명에 따른 다중 명령 집합을 실행하기 위한 데이터 처리장치를 첨부한 도면을 참조하여 상세히 설명한다.Hereinafter, a data processing apparatus for executing a multi-command set according to the present invention will be described in detail with reference to the accompanying drawings.

도 2는 복수 명령 집합을 실행하기 위한 데이터 처리장치의 일 실시예를 나타낸 블록도 이다.2 is a block diagram illustrating an embodiment of a data processing apparatus for executing a plurality of instruction sets.

본 발명의 데이터 처리장치는 다중 명령 집합을 실행하기 위한 것이다. 이 장치는 프로세서 코어(200), 메모리(210), 프로그램 카운터 레지스터(PC)(220), 복수의 데이터 레지스터(RO-R14)(230), 프로세서 상태 레지스터(PSR)(250), 프리디코더(270), 아이캐시(280), 디코더(290), 프로그램 카운터 제어기(225) 및 버스(215)를 구비한다.The data processing apparatus of the present invention is for executing multiple instruction sets. The device includes a processor core 200, a memory 210, a program counter register (PC) 220, a plurality of data registers (RO-R14) 230, a processor status register (PSR) 250, a predecoder ( 270, an eye cache 280, a decoder 290, a program counter controller 225, and a bus 215.

상기 메모리(210)는 다중 명령어(예를들면, A 또는 B 워드)를 저장하기 위해 사용된다. 상기 프로그램 카운터 레지스터(PC)(220)는 상기 메모리(210)에 저장된 다음 명령어를 어드레스하기 위해 사용된다. 데이터 레지스터(RO-14)(230)는 데이터 또는 명령 결과를 저장하기 위해 사용된다. 상기 데이터 레지스터에 2개의 비트부가 있다. 정해진 브랜치 명령이 실행될 때, 한 개 또는 2이상의 비트가 명령 집합 선택 비트(IS)로 나타나고 다른 비트들이 타깃 어드레스(TA)(245)로 나타낸다. IS는 PSR(프로세서 상태 레지스터)에 저장되고, TA는 PC(프로그램 카운터 레지스터)에 저장된다.The memory 210 is used to store multiple instructions (eg, A or B words). The program counter register (PC) 220 is used to address the next instruction stored in the memory 210. Data registers (RO-14) 230 are used to store data or command results. There are two bit sections in the data register. When a given branch instruction is executed, one or more bits are represented by the instruction set select bit (IS) and the other bits are represented by the target address (TA) 245. The IS is stored in the PSR (Processor Status Register) and the TA is stored in the PC (Program Counter Register).

상기 프로세서 상태 레지스터(PSR)(250)는 상기 프로세서 코어(200)의 상태를 저장하기 위해 사용된다. 상기 프로세서 상태 레지스터(250)는 현재 명령 집합을 지시하기 위해 명령 집합 선택기(ISS)(260)의 한 개 또는 2이상의 명령들을 갖는다. PSR(ISS)는 RO-R14의 한 개 또는 2이상의 IS 비트에 따라 정해진 브랜치 명령에 의해 세트된다.The processor status register (PSR) 250 is used to store the state of the processor core 200. The processor status register 250 has one or more instructions of the instruction set selector (ISS) 260 to indicate the current instruction set. The PSR (ISS) is set by a branch instruction defined according to one or more IS bits of RO-R14.

상기 프리디코더(270)는 제 1 명령어로 한 개 또는 2이상의 명령 집합을 전환하기 위한 한 개 또는 2이상의 서브 디코더(272)를 포함한다. 상기 제 1 명령어는 상기 디코더(290)를 실행하기 위해 사용된다. 상기 실시예에서 상기 코어(200)는 단지 제 1 명령어를 이행함에 의해 간단히 실행된다. 그러나 본 발명의 데이터 처리장치는 상기 프리디코더(270)에 의해 다중 명령 집합을 실행할 수 있다. 이해를 돕기 위해 이하 제1 명령어는 "A" 명령어로 명명하고 다른 명령어는 예를들면, "B" 또는 "C" 등으로 명명한다. 상기 서브 디코더(272)는 PSR(ISS)(260)에 의해 제어된다. 상기 프리디코더(270)의 출력은 "A" 명령어이다.The predecoder 270 includes one or more sub decoders 272 for converting one or more instruction sets into first instructions. The first instruction is used to execute the decoder 290. In this embodiment the core 200 is simply executed by simply executing the first instruction. However, the data processing apparatus of the present invention may execute multiple instruction sets by the predecoder 270. For the sake of understanding, the first command will be referred to as an "A" command, and the other command will be referred to as "B" or "C". The sub decoder 272 is controlled by a PSR (ISS) 260. The output of the predecoder 270 is an "A" command.

상기 디코더(290)는 "A" 명령어를 디코딩하기 위해 사용된다. 상기 프로세서 코어(200)는 상기 디코더(290)에 의해 디코드된 "A" 명령어를 실행하기 위해 사용된다. 상기 프로그램 카운터 제어기(225)는 다른 명령 집합의 길이를 맞추고 상기 프로그램 카운트 값(PC 값)을 수정하기 위해 상기 ISS(260)에 응답한다. 상기 버스(215)는 프리디코더(270)와 메모리(210)간에 인터페이스 한다.The decoder 290 is used to decode the "A" instruction. The processor core 200 is used to execute the "A" instruction decoded by the decoder 290. The program counter controller 225 responds to the ISS 260 to adjust the length of another instruction set and modify the program count value (PC value). The bus 215 interfaces between the predecoder 270 and the memory 210.

본 발명에 따른 명령어 실행 흐름을 나타낸 도 3의 흐름도를 참조한다.Reference is made to the flowchart of FIG. 3 showing an instruction execution flow in accordance with the present invention.

두 개의 명령 집합인 경우 상기 프로세서를 사용한다.The processor is used for two instruction sets.

먼저, 단계(320)에서 다중 명령 집합이 메모리에 저장된다. 예를들면, 메모리는 "A" 명령어와 "B" 명령어를 동시에 저장한다. 상기 "A"명령어는 X 비트 길이이고 "B"명령어는 Y비트 길이이다. 모든 명령어는 개별 메모리 어드레스를 지정한다. 상기 프로세서 코어가 명령어를 실행할 때 상기 프로그램 카운터는 항상 상기 다음 명령어의 다음 메모리 어드레스를 가리킨다. 다시말하면 상기 프로세서 코어는 단계(320)에서 다음 명령어를 요구하기 위해 프로그램 카운터를 사용한다. X(A 명령어의 비트 길이)가 Y(B 명령어의 비트 길이)와 같지 않다면, 상기 PC값은 아이캐시에 관련된 "A" 명령어 어드레스로 전환시키기 위해 필요하다.First, in step 320 multiple sets of instructions are stored in memory. For example, the memory stores "A" and "B" instructions at the same time. The "A" instruction is X bits long and the "B" instruction is Y bits long. Every instruction specifies an individual memory address. When the processor core executes an instruction, the program counter always points to the next memory address of the next instruction. In other words, the processor core uses a program counter to request the next instruction in step 320. If X (bit length of the A instruction) is not equal to Y (bit length of the B instruction), then the PC value is needed to translate to the "A" instruction address associated with the icache.

단지 아이캐시는 "A" 명령어를 저장한다. 본질적으로, X(A 명령어의 비트 길이)가 Y(B 명령어의 비트 길이)와 같지 않다면, 상기 아이캐시내의 "B" 명령어의 어드레스들은 메모리의 어드레스와 다르게 된다. 예를들면, 메모리에 저장된 "B" 명령어의 어드레스는 (0,2,4,6)이다. 이것이 상기 아이캐시에 저장될 때 상기 "B" 명령어의 어드레스는 (0,4,8,C)로 바뀌게 될 것이다. 아이캐시 제어기는 상기 아이캐시의 변경 어드레스로 "B" 명령어의 어드레스를 변환하기 위해 필요하다.Icache only stores the "A" command. In essence, if X (the bit length of the A instruction) is not equal to Y (the bit length of the B instruction), then the addresses of the " B " instructions in the icache are different from the addresses of the memory. For example, the address of the "B" instruction stored in memory is (0,2,4,6). When it is stored in the icache, the address of the "B" instruction will change to (0, 4, 8, C). An icache controller is needed to translate the address of the "B" instruction into the change address of the icache.

하기 단계(330)에서 유효 비트가 한 개이면 TAG부의 태그 비트는 PC의 태그 비트와 동일하고 TAG(ISS)는 PSR(ISS)와 동일하다. 이것은 요구된 명령어가 데이터부에 캐시되었고 캐시된 명령어 타입이 상기 요구된 명령어 타입과 매치되고 단계 380에서 상기 아이캐시는 직접 캐시된 "A" 명령어를 출력할 수 있다는 것을 의미한다.In step 330, if there is one valid bit, the tag bit of the TAG part is the same as the tag bit of the PC, and the TAG (ISS) is the same as the PSR (ISS). This means that the requested instruction is cached in the data portion and the cached instruction type matches the requested instruction type and in step 380 the icache can output the cached "A" instruction directly.

아이캐시의 TAG부내의 태그 비트는 명령어 어드레스의 m비트이다. PC의 N비트는 TAG부의 엔트리(entry)를 정할 수 있고 PC의 태그 비트는 TAG부의 태그비트와 비교되어 진다. PC의 상기 태그비트가 TAG부의 태그 비트와 동일하다면, 이것은 상기 캐시된 명령어 어드레스가 PC와 동일함을 의미한다. 태그 비트가 유효한지 그러하지 않는지 판단하기 위해 상기 V 비트는 아이캐시 인에블시 무효로 세트될 것이고 명령어가 캐시될 때 유효로 세트될 것이다. 명령어가 캐시될 때 전체 라인 명령 타입이 기억된다.The tag bit in the TAG portion of the icache is the m bit of the instruction address. The N bits of the PC can define the entry of the TAG portion and the tag bits of the PC are compared with the tag bits of the TAG portion. If the tag bit of the PC is the same as the tag bit of the TAG portion, this means that the cached instruction address is the same as the PC. To determine if the tag bit is valid or not, the V bit will be set to invalid upon icache enable and set to valid when the instruction is cached. The full line command type is remembered when the command is cached.

상기 디코더는 요구된 명령어를 디코드한다. 스텝 390에서, 상기 프로세서 코어는 명령을 실행하고 R0~R14 또는 프로그램 카운터(390)의 결과를 저장한다. 브랜치 명령의 경우, 상기 프로그램 카운터 항목들은 실행 흐름을 제어하기 위해 변경될 필요가 있다.The decoder decodes the requested instruction. In step 390, the processor core executes an instruction and stores the result of R0-R14 or program counter 390. In the case of branch instructions, the program counter items need to be changed to control the flow of execution.

상기 아이캐시가 미스되거나 TAG(ISS)가 PRS(ISS)와 같지 않다면, 상기 요구된 명령어는 아이캐시에 캐시되지 않음을 의미하고 전체 명령이 요구된 명령 타입과 매치되지 않음을 의미한다. 이러한 일이 발생할 때 단계 340에서와 같이, 상기 아이캐시는 상기 버스를 요구하기 위해 PC값을 사용한다. 상기 버스는 메모리를 요구하기 위해 메모리 어드레스를 사용하고 단계 350에서 요구된 라인을 되돌리기 위해 메모리에 대기 한다. 명령어가 프리디코더에 입력될 때 상기 프리디코더는 상기 PSR(ISS)에 따라 입력 명령어를 변환하기 위해 한 개의 서브 디코더를 선택하고 단계 360에서 캐시를 위해 관련한 "A" 명령어를 출력한다. 단계 370에서, 상기 프리디코더의 출력은 아이캐시에 저장되어 진다. 상기 아이캐시는 유효 비트, 태그, 상기 제1 카운터 PSR(ISS)부터 TAG(ISS)까지 리멤버(remember)를 지정하고 데이터부에 프리디코더 출력을 저장한다. 그 다음 통상적으로 명령어가 실행된다.If the icache is missed or the TAG (ISS) is not equal to the PRS (ISS), it means that the requested instruction is not cached in the icache and the entire instruction does not match the requested instruction type. When this happens, as in step 340, the iCache uses the PC value to request the bus. The bus uses the memory address to request memory and waits in memory to return the required line at step 350. When an instruction is input to the predecoder, the predecoder selects one sub decoder to convert the input instruction according to the PSR (ISS) and outputs the associated "A" instruction for the cache in step 360. In step 370, the output of the predecoder is stored in the icache. The eye cache designates a valid bit, a tag, and a member from the first counter PSR (ISS) to TAG (ISS) and stores a predecoder output in the data unit. The command is then typically executed.

각 명령어 실행후, 상기 프로세서 상태 레지스터는 상기 조건, 상태 모드 및 ISS 플래그들을 홀드하기 위해 업데이트된다. 상기 프로그램 카운터는 단계 395에서 다음 명령어 지정을 위해 수정된다.After each instruction execution, the processor status register is updated to hold the condition, status mode and ISS flags. The program counter is modified in step 395 to specify the next instruction.

본 발명에 따른 명령 집합 스위칭 흐름을 나타낸 도 4를 참조한다.Reference is made to FIG. 4 showing an instruction set switching flow in accordance with the present invention.

명령 집합 스위칭은 소프트웨어로 제어되고 특히 지정된 브랜치 명령에 의해 제어된다.Instruction set switching is software controlled and in particular controlled by designated branch instructions.

단계 400에서, 명령 집합 스위치가 일어날 때 한 개 또는 2 이상의 명령어가 R0~R14의 타깃 어드레스 부분에서 브랜치 어드레스를 지정하고 상기 IS부에서 명령 집합 비트를 지정한다.In step 400, when an instruction set switch occurs, one or more instructions specify a branch address in the target address portion of R0-R14 and an instruction set bit in the IS section.

단계 410에서 지정된 브랜치 명령은 다음 단계 420의 프로그램 카운터내에 R0~R14의 종료 어드레스(TA)부를 복사한다. 다른 비트들은 제로로 세트된다. 동시에 지정된 브렌치 명령은 RO~R14의 IS부를 PSR의 ISS에 복사한다.The branch instruction designated in step 410 copies the end address TA of R0 to R14 into the program counter of step 420. The other bits are set to zero. At the same time, the designated branch instruction copies the IS part of RO to R14 to the ISS of the PSR.

지정된 브랜치 명령 종료 후, 상기 프로그램 카운터는 새 명령 집합의 제1 명령을 정하고 상기 PSR(ISS)는 새 명령 집합 모드를 지시한다.After the end of the designated branch instruction, the program counter sets the first instruction of the new instruction set and the PSR (ISS) indicates the new instruction set mode.

아이캐시가 일치하는지 TAG(ISS)가 PSR(ISS)와 동일한지 여부를 결정하기 위해 도 3의 상술한 단계 330은 추가 상세한 설명을 위한 아이캐시의 동작을 나타낸 도 5a 및 도 5b를 참조하면 된다.In order to determine whether the icache matches or the TAG (ISS) is equal to the PSR (ISS), the above-described step 330 of FIG. 3 may refer to FIGS. 5A and 5B showing the operation of the icache for further details. .

도 5a는 통상적인 아이캐시의 동작을 나타낸다. 이것은 PSR(ISS) 조합없이 동작을 비교한 경우이다. 어드레스(510)는 프로그램 카운터(PC)에 저장되고 아이캐시에 인가된다. 어드레스의 m비트는 한 개의 태그부의 엔트리를 선택하고 어드레스(510)의 N비트는 상기 아이캐시의 태그부의 태그비트와 비교된다. 태그부의 V비트는 선택 엔트리가 유효인지 무효인지를 나타낸다. 상기 태그부의 ISS 비트는 엔트리의 명령 타입을 나타낸다. 도 3에 도시된 단계 330은 상기 V비트가 "valid"를 나타내는지 TAG의 ISS 비트가 PSR의 ISS 비트와 동일하고 상기 어드레스의 N비트가 아이캐시의 태그부내 태그비트와 동일한지 여부에 의해 완료된다.5A illustrates the operation of a typical eye cache. This is a case of comparing the operation without the PSR (ISS) combination. The address 510 is stored in the program counter PC and applied to the icache. The m bits of the address select one entry of the tag portion and the N bits of the address 510 are compared with the tag bits of the tag portion of the eye cache. The V bit in the tag portion indicates whether the selection entry is valid or invalid. The ISS bit in the tag portion indicates the command type of the entry. Step 330 shown in FIG. 3 is completed by whether the V bit represents "valid" or whether the ISS bit of the TAG is the same as the ISS bit of the PSR and the N bit of the address is the same as the tag bit in the tag portion of the icache. do.

도 5b는 상기 PSR(ISS)가 비교동작으로 도입되는 본 발명의 실시예에 따른 아이캐시의 동작을 나타낸다. 어드레스(510)는 PC에 저장되고 상기 아이캐시에 인가된다. 상기 어드레스(510)의 N비트는 상기 어드레스(510)의 m비트에 의해 표시된 상기 아이캐시(520)의 태그부에 저장된 태그비트와 비교된다. 상기 태그부의 V비트는 상기 엔트리가 유효인지 무효인지 여부를 나타낸다. PSR(ISS)는 TAG(ISS)와 비교되도록 도입된다. 도 3에 도시된 바와 같이 "Ichahe Hit" 단계 330은 다음과 같은 "AND" 알고리즘에 의해 결정되어 진다.5B illustrates the operation of the eye cache according to an embodiment of the present invention in which the PSR (ISS) is introduced as a comparison operation. Address 510 is stored in the PC and applied to the icache. The N bits of the address 510 are compared with the tag bits stored in the tag portion of the eye cache 520 indicated by the m bits of the address 510. The V bit of the tag portion indicates whether the entry is valid or invalid. PSR (ISS) is introduced to compare with TAG (ISS). As shown in FIG. 3, the "Ichahe Hit" step 330 is determined by the following "AND" algorithm.

1. N비트는 아이캐시의 태그부의 태그 비트와 동일한가?1. Is the N bit the same as the tag bit in the icache tag section?

2. V비트는 "Valid"를 나타내는가?2. Does the V bit represent "Valid"?

3. PSR(ISS)는 TAG(ISS)와 동일한가?3. Is PSR (ISS) the same as TAG (ISS)?

상기 TAG(ISS)는 TAG의 ISS 비트이고 상기 PSR(ISS)는 PSR의 ISS 비트를 나타낸다. 다른 비트수와 함께 상기 명령어가 함께 혼합되어 있다면, 예를들면, 16비트 명령어 및 32비트 명령어가 서로 혼합되어 있다면, 상기 어드레스(510)의 한 개 이상의 비트는 명령어의 전반부 또는 후반부를 지정하기 위해 도입된다. 예를들면, 도 5b에 도시한 바와 같이, 제3 비트는 상기 비교 동작에 인가되고, N비트가 N+1비트로 변경될 때 상기 표시된 레지스터의 TAG와 동일한지 여부에 관한 알고리즘을 나타낸다.The TAG (ISS) is the ISS bit of the TAG and the PSR (ISS) represents the ISS bit of the PSR. If the instructions are mixed together with different number of bits, for example, if 16-bit instructions and 32-bit instructions are mixed with each other, one or more bits of the address 510 may be used to designate the first or second half of the instruction. Is introduced. For example, as shown in Fig. 5B, a third bit is applied to the comparison operation, and represents an algorithm as to whether or not it is equal to the TAG of the indicated register when N bits are changed to N + 1 bits.

상술한 "A"명령어에서와 같이, 도 2에 도시한 바와 같은 프리디코더(27)는 제 1 명령어에 대해 한 개 또는 한 개 또는 2 이상의 명령 집합들을 변환하기 위한 서브디코더(272)들을 갖는다.As with the "A" instruction described above, the predecoder 27 as shown in FIG. 2 has subdecoders 272 for converting one, one or two or more instruction sets for the first instruction.

좀더 상세한 설명을 위해 도 6a 및 도 6b를 참조한다. 도 6a는 다른 명령어들을 처리하기 위한 통상적인 구조를 나타낸다. 예를들면 데이터 버스 BIU(610)에서 라인당 4개의 명령어가 있다. 스위치(620)에 의해 선택된 4개의 명령어중 하나가 상기 아이캐시의 메모리(630)에 인가된다. 명령어를 실행하기 위해 상기 명령어중 하나가 디코더로 전송된다. 전송된 명령어는 우선 매핑되고 디코딩된다. 매핑 및 디코딩후 상기 명령어는 수행용 프로세서 코어에 인가된다. 도 6b에 도시된 바와 같이 본 발명의 실시예에서 상기 스위치(640)로 선택후 선택된 명령어는 동시에 프리디코더(650) 및 스위치(660)로 인가된다. 명령어가 제 1 명령어가 아닌 B 명령어이면 프리디코더(65)는 B 명령어를 제1 명령어 즉, A 명령어로 변환한다. 프리디코드된 명령어는 스위치(660)에 인가된다. 그 다음 상기 PSR에서 ISS 비트에 따른 선택에 의해 명령어가 상기 아이캐시의 메모리(670)로 전송된다.See Figures 6A and 6B for more details. 6A shows a typical structure for processing other instructions. For example, there are four instructions per line in the data bus BIU 610. One of the four instructions selected by the switch 620 is applied to the memory 630 of the icache. One of the instructions is sent to the decoder to execute the instruction. The transmitted command is first mapped and decoded. After mapping and decoding, the instructions are applied to the processor core for execution. As shown in FIG. 6B, in the exemplary embodiment of the present invention, the command selected after the switch 640 is applied to the predecoder 650 and the switch 660 simultaneously. If the instruction is a B instruction instead of the first instruction, the predecoder 65 converts the B instruction into a first instruction, that is, an A instruction. The predecoded command is applied to the switch 660. An instruction is then sent to the memory 670 of the icache by selection according to the ISS bit in the PSR.

데이터 버스로부터 혼합된 명령어 A 및 B의 경우를 나타내는 도 7a 및 도 7b를 참조한다. 먼저 도 7a를 참조하면 아이캐시는 PC=0인 BIU를 요구하고 BIU는 4개의 명령어를 포함하는 라인(710)을 응답한다. 상기 타입 명령은 "ABBA"이다. 상기 TAG(ISS)는 항상 직면된(encountered) 명령어를 기억하고 아이캐시는 제1 직면된 명령어 타입에 의해 전체 라인을 취급한다. 예를들면 실시예에 도시한 바와 같이 TAG(ISS)는 명령어 타입이 PC=0에서 A이기 때문에 "A"이다. 아이캐시 메모리의 데이터부는 "A"명령 타입으로 채워진다. 상기 타입 명령은 "AAAA"이다.Reference is made to FIGS. 7A and 7B which show the case of instructions A and B mixed from the data bus. Referring first to FIG. 7A, iCache requests a BIU with PC = 0 and the BIU responds with line 710 containing four instructions. The type command is "ABBA". The TAG (ISS) always remembers an encountered instruction and iCache handles the entire line by the first faced instruction type. For example, as shown in the embodiment, the TAG (ISS) is "A" because the instruction type is A at PC = 0. The data portion of the icache memory is filled with the "A" instruction type. The type command is "AAAA".

n사이클후, BIU 라인은 아마 아이캐시로 작성되고 변경된다. CPU가 PC=4 및 PSR=(ISS)=B를 명령한다. 그러나 이것은 태그 TAG(ISS)=A에서 미스(miss)를 나타낸다. 재차 아이캐시는 PC=4를 갖는 BIU를 요구하고 BIU는 명령 타입 오더 "ABBA"를 갖는 라인에 응답한다.After n cycles, the BIU line is probably written to iCache and changed. The CPU commands PC = 4 and PSR = (ISS) = B. However, this represents a miss in tag TAG (ISS) = A. Again the iCache requires a BIU with PC = 4 and the BIU responds to the line with the command type order "ABBA".

다음, 도 7b를 참조하면 PC=8일 때, 명령 타입 오더 "ABBA" 프리디코딩 후, TAG(ISS)=B 및 아이캐시 메모리의 데이터부는 "B"로 채워지고 명령 타입 오더는 "BBBB"이다. 이때, 상기 데이터 버스 BIU의 라인(710)을 기억하는 TAG(ISS)는 B타입이다. TAG(ISS)는 PSR(ISS)와 동일하고 아이캐시 히트(hit)를 나타낸다. 명령어 타입의 오더에 문제 없으면 아이캐시는 항상 정정 명령 및 프리디코드를 판단할 수 있다. 다시말하면 한라인에서 다른 명령 타입의 혼합인 경우들은 없다.Next, referring to FIG. 7B, when PC = 8, after the pre-decoding of the command type order "ABBA", TAG (ISS) = B and the data portion of the icache memory are filled with "B" and the command type order is "BBBB". . At this time, the TAG (ISS) for storing the line 710 of the data bus BIU is B type. TAG (ISS) is the same as PSR (ISS) and represents an icache hit. If there is no problem with the order of the instruction type, iCache can always determine the correct instruction and predecode. In other words, there are no cases where there is a mix of different command types on one line.

본 발명의 데이터 처리 장치는 통상적인 데이터 처리 장치 상에 다수의 이점들을 갖는다. 한가지 이점은 본 발명의 데이터 처리장치는 다중 명령 집합들에서 명령어를 실행할 수 있다. 한 개 또는 두 개의 명령 집합들에 제한되지 않는다. 본 발명은 프로그래머가 프로그램들을 만들 때 극단적인 유용성을 허용한다. 전력 명령들이 요구된다면, 더욱더 강한 명령 집합이 사용된다. 메모리가 유용하다면, 메모리에 저장된 명령 집합들이 사용된다.The data processing apparatus of the present invention has a number of advantages over conventional data processing apparatus. One advantage is that the data processing apparatus of the present invention can execute instructions in multiple instruction sets. It is not limited to one or two instruction sets. The present invention allows extreme usefulness when a programmer writes programs. If power commands are required, a stronger command set is used. If memory is useful, the instruction sets stored in memory are used.

다른 이점은 전력 소비를 줄인다. 통상적인 장치에서 모든 명령 집합들은 분리 지시된 명령 디코더 및 로직 제어회로를 갖는다. 이는 상기 표시된 명령 디코더들이 각 타임에서 명령 페치를 토글시킬 때 필요하기 때문에 고가이고 많은 전력을 소비한다. 그러나 본 발명에서 프리디코더들은 단지 처음 명령어를 페치할 때 도글되어 진다. 평균적으로 아이캐시 히트비(hit rate)는 ~95%이고, 본 발명의 프리디코더들은 단지 100 명령어 페치에 5번 토글되어 진다.Another advantage is reduced power consumption. In a typical apparatus all instruction sets have a separate instruction decoder and logic control circuitry. This is expensive and consumes a lot of power because the indicated command decoders are needed to toggle the command fetch at each time. However, in the present invention, the predecoders are only toggled when fetching the first instruction. On average, the icache hit rate is ˜95%, and the predecoder of the present invention is toggled five times in just 100 instruction fetches.

따라서 CPU 구조는 다른 명령 집합들을 이행하기 위한 변경을 필요로 하지않는다. 단지 요구된 변경은 버스 인터페이스와 프리디코더이다. 또한 본 발명은 더욱더 비용을 절감할 수 있다.Thus, the CPU architecture does not require changes to implement other instruction sets. The only change required is the bus interface and the predecoder. In addition, the present invention can further reduce the cost.

본 발명은 발명의 기술적 사상을 벗어나지 않는 범위내에서 통상의 지식을 가진자에 의거 다양함 변조 변화가 가능함은 명백하다. 이와 같은 관점에서 본 발명은 다음 청구의범위 및 그들의 균등론의 범주안에서 예측되는 모든 변조 변화를 포함한다.It will be apparent that the present invention can be modified in various ways within the scope of the technical spirit of the present invention without departing from the technical spirit of the present invention. In this respect, the present invention includes all modulation changes which are foreseen within the scope of the following claims and their equivalents.

Claims (9)

다중 명령 집합을 실행하기 위한 데이터 처리 장치에 있어서,A data processing apparatus for executing a multi-instruction set, 다중 명령 집합의 다수개의 명령어를 저장하기 위한 메모리와,Memory for storing multiple instructions in multiple instruction sets, 명령어의 1차 명령어를 실행하기 위한 프로세서 코어와,A processor core for executing the first instruction of the instruction, 메모리에 저장된 다음 명령어를 어드레스하기 위한 프로그램 카운터 레지스터 (PC)와,A program counter register (PC) for addressing the next instruction stored in memory, 명령어의 데이터를 저장하기 위한 다수개의 데이터 레지스터와,A plurality of data registers for storing the data of the instruction, 프로세서 코어의 상태를 저장하며, 명령 집합의 현재 명령 집합을 나타내기 위한 명령 집합 선택기 (instruction set selector(ISS))를 포함하는 프로세서 상태 레지스터와,A processor status register that stores a state of the processor core and includes an instruction set selector (ISS) for indicating a current instruction set of the instruction set, 명령 집합 중 적어도 하나를 1차 명령어에 이동시키고 출력하기 위한 프리디코더(predecoder)와,A predecoder for moving and outputting at least one of the instruction sets to the primary instruction, 1차 명령어를 저장하기 위한 아이캐시(Icache)와,Icache to store the first instruction, 1차 명령어를 디코딩하며, 프로세서 코어가 디코더에 의해 디코딩된 1차 명령어를 실행하는데 사용되는 디코더와,A decoder that decodes the primary instructions, wherein the processor core is used to execute the primary instructions decoded by the decoder, 1차 명령어와 다른 명령어의 길이를 맞추기 위해 프로그램 카운터의 값을 변형하도록 명령 집합 선택기에 반응하는 프로그램 카운터 제어기와,A program counter controller responsive to the instruction set selector to modify the value of the program counter to match the length of the first and other instructions, 프리디코더와 메모리 사이에서 인터페이스되는 버스를 구비하는 것을 특징으로 하는 데이터 처리 장치.And a bus interfaced between the predecoder and the memory. 제1항에 있어서, 데이터 레지스터의 각각에는 두 부분의 비트가 있는데, 적어도 하나의 비트는 명령 집합 선택 비트 (IS)로서 나타나고 데이터 레지스터에 저장된 나머지 비트는 타겟 어드레스(TA)로서 나타나는 것을 특징으로 하는 데이터 처리 장치.2. The data register of claim 1, wherein each of the data registers has two portions of bits, wherein at least one bit appears as an instruction set select bit (IS) and the remaining bits stored in the data register appear as a target address (TA). Data processing unit. 제2항에 있어서, 상기 타겟 어드레스는 명령 집합의 시작 어드레스임을 특징으로 하는 데이터 처리 장치.The data processing apparatus of claim 2, wherein the target address is a start address of an instruction set. 제2항에 있어서, 상기 명령 집합 선택기(ISS)는 데이터 레지스터의 명령 집합 선택 비트(IS)에 따라 지정된 브랜치 명령에 의해 세팅되는 것을 특징으로 하는 데이터 처리 장치.3. The data processing apparatus of claim 2, wherein the instruction set selector (ISS) is set by a branch instruction designated according to the instruction set select bit (IS) of the data register. 제1항에 있어서, 상기 프리디코더는 명령 집합의 적어도 하나를 1차 명령어에 이동시키기 위한 적어도 하나의 서브 디코더를 포함하는 것을 특징으로 하는 데이터 처리 장치.The data processing apparatus of claim 1, wherein the predecoder comprises at least one sub decoder for moving at least one of the instruction set to the primary instruction. 제1항에 있어서, 상기 서브 디코더 스위칭은 명령 집합 선택기(ISS)에 의해 제어되고, 프리디코더의 출력은 1차 명령어인 것을 특징으로 하는 데이터 처리 장치.The data processing apparatus of claim 1, wherein the sub decoder switching is controlled by an instruction set selector (ISS), and the output of the predecoder is a primary instruction. 제1항에 있어서, 1차 명령어의 비트 폭은 기타 다른 명령어의 비트폭과 동일하지 않고, 아이캐시는 명령 집합 선택 비트를 더하여 상대적인 1차 명령어를 나타내도록 PC 값을 이동시키는 것을 특징으로 하는 데이터 처리 장치.2. The data of claim 1, wherein the bit width of the primary instruction is not equal to the bit width of the other instructions, and icache adds an instruction set selection bit to move the PC value to indicate a relative primary instruction. Processing unit. 제1항에 있어서, 상기 명령 집합 선택기는 적어도 하나의 비트를 포함하는 것을 특징으로 하는 데이터 처리 장치.2. The apparatus of claim 1, wherein the instruction set selector comprises at least one bit. 제8항에 있어서, 상기 명령 집합 선택기는 데이터 레지스터의 하나 이상의 명령 집합 선택 비트에 따라 지정된 브랜치 명령에 의해 세팅되는 것을 특징으로 하는 데이터 처리 장치.9. The data processing apparatus of claim 8, wherein the instruction set selector is set by a branch instruction designated according to one or more instruction set select bits of a data register.
KR10-2001-0003818A 2001-01-26 2001-01-26 Data processing apparatus for executing multiple instruction sets KR100407452B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0003818A KR100407452B1 (en) 2001-01-26 2001-01-26 Data processing apparatus for executing multiple instruction sets

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0003818A KR100407452B1 (en) 2001-01-26 2001-01-26 Data processing apparatus for executing multiple instruction sets

Publications (2)

Publication Number Publication Date
KR20020063076A KR20020063076A (en) 2002-08-01
KR100407452B1 true KR100407452B1 (en) 2003-11-28

Family

ID=37488851

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0003818A KR100407452B1 (en) 2001-01-26 2001-01-26 Data processing apparatus for executing multiple instruction sets

Country Status (1)

Country Link
KR (1) KR100407452B1 (en)

Also Published As

Publication number Publication date
KR20020063076A (en) 2002-08-01

Similar Documents

Publication Publication Date Title
US20020004897A1 (en) Data processing apparatus for executing multiple instruction sets
US5828875A (en) Unroll of instructions in a micro-controller
US7493474B1 (en) Methods and apparatus for transforming, loading, and executing super-set instructions
US6275927B2 (en) Compressing variable-length instruction prefix bytes
US4897787A (en) Data processing system
JP2000500592A (en) Microcode patching apparatus and method
KR20010031396A (en) Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US5394558A (en) Data processor having an execution unit controlled by an instruction decoder and a microprogram ROM
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
JPH0810428B2 (en) Data processing device
JP2008532187A (en) Power saving method and apparatus for selectively enabling cache bits based on known processor state
US6460116B1 (en) Using separate caches for variable and generated fixed-length instructions
US20060095746A1 (en) Branch predictor, processor and branch prediction method
JP2006527435A (en) Instruction encoding in a data processing apparatus having multiple instruction sets
US10437598B2 (en) Method and apparatus for selecting among a plurality of instruction sets to a microprocessor
US8327175B2 (en) Data processing systems and methods of operating the same in which memory blocks are selectively activated in fetching program instructions
US6253309B1 (en) Forcing regularity into a CISC instruction set by padding instructions
KR100407452B1 (en) Data processing apparatus for executing multiple instruction sets
JP4613168B2 (en) Instruction alignment method and apparatus
KR20010031572A (en) Approximation a larger number of branch predictions using a smaller number of branch predictions and an alternative target
JP3644892B2 (en) Data processing apparatus for executing a plurality of instruction sets
US5187782A (en) Data processing system
JP3027627B2 (en) Arithmetic processor of programmable controller
US5895497A (en) Microprocessor with pipelining, memory size evaluation, micro-op code and tags
US6842846B2 (en) Instruction pre-fetch amount control with reading amount register flag set based on pre-detection of conditional branch-select instruction

Legal Events

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

Payment date: 20091117

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee