KR100343467B1 - Java processor - Google Patents

Java processor Download PDF

Info

Publication number
KR100343467B1
KR100343467B1 KR1019990064692A KR19990064692A KR100343467B1 KR 100343467 B1 KR100343467 B1 KR 100343467B1 KR 1019990064692 A KR1019990064692 A KR 1019990064692A KR 19990064692 A KR19990064692 A KR 19990064692A KR 100343467 B1 KR100343467 B1 KR 100343467B1
Authority
KR
South Korea
Prior art keywords
data path
instruction
issue
operator
data
Prior art date
Application number
KR1019990064692A
Other languages
Korean (ko)
Other versions
KR20010064489A (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 KR1019990064692A priority Critical patent/KR100343467B1/en
Publication of KR20010064489A publication Critical patent/KR20010064489A/en
Application granted granted Critical
Publication of KR100343467B1 publication Critical patent/KR100343467B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Abstract

본 발명은 자바 프로세서에 관한 것으로, 종래의 기술에 있어서는 자바 프로세서에 SIMD 명령어가 없고, 데이터 패스도 SIMD 구조를 지원하지 않아 32비트 데이터 패스에서 8비트 덧셈 연산을 64번 한다고 할 경우, 64번의 루프를 수행하게 되어 연산 속도가 저하되고 또한 데이터 패스가 한 순간에 하나만 동작하도록 제어되고 있기 때문에 부동 소수점 계산의 경우 명령어가 최대 2000 사이클을 소모하는 상황을 볼 때 플로팅 포인트부 연산 이후에 산술연산 및 시프터부 연산이 최대 2000 사이클을 기다리게 되어 비효율적인 문제점이 있었다. 따라서, 본 발명은 현재의 목적 어드레스를 갖고 있는 폴딩된 명령어가 이전 명령어와의 데이터 의존성이 없고 또한, 할당할 데이터 패스 연산기가 실행 단계에서 쉬고 있을 때 이슈(Issue)하도록 제어하는 이슈 제어부와; 데이터 패스의 각 연산기로부터 출력 준비(output_ready) 신호를 받아 필요한 먹스 선택신호(mux selec)를 먹스로 보내며 또한 현재의 연산기의 상태를 관리하는 출력 제어부를 더 포함하여 구성함으로써, 종래의 스택 캐시 구조를 바꾸지 않고도 폴딩되고 목적 어드레스를 갖는 명령어에 대하여 선택적으로 기존 자바 프로세서의 데이터 패스 연산기들을 동시 사용할 수 있도록 하는 효과가 있다.The present invention relates to a Java processor. In the prior art, if the Java processor does not have a SIMD instruction and the data path does not support the SIMD structure, 64 loops are performed eight times for an 8-bit addition operation in a 32-bit data path. Since the operation speed is slowed down and the data path is controlled to operate only one at a time, the floating point calculation consumes a maximum of 2000 cycles. The sub-operation waits for up to 2000 cycles, resulting in inefficient problems. Accordingly, the present invention provides a control unit for controlling a folded instruction having a current destination address, which has no data dependency from a previous instruction, and issues an issue when the data path operator to be allocated is at rest in an execution step; The conventional stack cache structure is further configured by receiving an output_ready signal from each operator in the data path, sending a necessary mux selec- tion signal to the mux, and further including an output controller for managing a state of the current operator. There is an effect that the data path operators of the existing Java processor can be used simultaneously for selectively folded and destination addressed instructions without changing.

Description

자바 프로세서{JAVA PROCESSOR}Java processor {JAVA PROCESSOR}

본 발명은 자바 프로세서에 관한 것으로, 특히 스택캐시의 구조변경 없이 동작 사이클수가 다른 여러 데이터 패스를 동시 처리할 수 있도록 하는 자바 프로세서에 관한 것이다.TECHNICAL FIELD The present invention relates to a Java processor, and more particularly, to a Java processor capable of simultaneously processing multiple data paths having different operation cycles without changing a stack cache structure.

도1은 종래 자바 프로세서의 구성을 보인 블록도로서, 이에 도시된 바와 같이 외부 입출력 디바이스간의 데이터를 버스를 통해 입출력하는 버스 인터페이스부(10)와; 상기 버스 인터페이스부(10)를 통해 명령어를 디코딩하여 출력하는 명령어 캐시(20)와; 상기 디코딩된 명령어와 데이터를 버퍼링하여 출력하는 입력 버퍼(30)와; 상기 입력 버퍼(30)를 통해 입력된 데이터를 상기 명령어에 해당하는 연산을 수행하는 정수부(70) 및 플로팅 포인트부(50)와; 상기 정수부(70) 및 플로팅 포인트부(50)의 결과를 저장하며 이를 상기 버스 인터페이스부(10)로 입출력하는 데이터 캐시(60)와; 상기 데이터 캐시(60), 정수부(70) 및 플로팅 포인트부(50)의 데이터 입출력을 제어하는 스택 제어부(40)로 구성된다.1 is a block diagram showing a configuration of a conventional Java processor, as shown therein; a bus interface unit 10 for inputting and outputting data between external input / output devices through a bus; A command cache 20 for decoding and outputting a command through the bus interface unit 10; An input buffer 30 for buffering and outputting the decoded command and data; An integer unit (70) and a floating point unit (50) for performing an operation corresponding to the command from the data input through the input buffer (30); A data cache (60) for storing the results of the integer unit (70) and the floating point unit (50) and inputting and outputting the result to the bus interface unit (10); The stack controller 40 controls data input / output of the data cache 60, the integer unit 70, and the floating point unit 50.

그리고, 상기 정수부(70)는 상기 입력버퍼(30)로부터 데이터 및 명령어를 폴딩하는 폴딩부(71)와; 상기 폴딩부(71)에서 폴딩된 데이터 및 명령어를 저장하는 레지스터 제어부(72)와; 스택제어부(40)의 제어를 받아 상기 레지스터 제어부(72)에 저장된 데이터 및 명령어를 저장하는 스택 캐시(73)와; 상기 스택 캐시(73)에 저장된 데이터를 가감연산하는 산술 연산 및 시프터부(74)와; 상기 스택 캐시(73)에 저장된 데이터를 곱셈 및 나눗셈 연산하는 곱셈 및 나눗셈부(75)와; 상기 플로팅 포인트부(50), 산술 연산 및 시프터부(74) 또는 곱셈 및 나눗셈부(75)의 연산결과를 입력받아 이를 선택하여 출력하는 멀티플렉서(76)와; 상기 데이터 캐시(60)와 멀티플렉서(76)의 출력신호를 입력받아 이를 선택하여 출력하는 멀티플렉서(77)로 구성되며, 이와 같이 구성된 종래 기술에 따른 일실시예의 작용을 설명하면 다음과 같다.The integer unit 70 includes: a folding unit 71 for folding data and instructions from the input buffer 30; A register control unit 72 for storing data and instructions folded by the folding unit 71; A stack cache (73) for storing data and instructions stored in the register controller (72) under the control of the stack controller (40); An arithmetic operation and shifter unit 74 for adding or subtracting data stored in the stack cache 73; A multiplication and division unit 75 for multiplying and dividing data stored in the stack cache 73; A multiplexer (76) which receives arithmetic results of the floating point unit (50), arithmetic operation and shifter unit (74) or multiplication and division unit (75), and selects and outputs them; It consists of a multiplexer 77 which receives the output signal of the data cache 60 and the multiplexer 76 and selects and outputs the output signal. The operation of one embodiment according to the prior art configured as described above is as follows.

일반적으로, 종래의 자바 기술은 여러 데이터 패스(path) 가운데 하나만 한 순간에 동작시킬 수 있으며, SIMD(Single instruction multi-data) 명령어를 지원하지 않고 있다.In general, conventional Java technology can operate only one of several data paths at a time, and does not support a single instruction multi-data (SIMD) instruction.

상기 도1에서는 산술연산 및 시프터부(74), 곱셈 및 나눗셈부(75) 및 플로팅 포인트부(50)로 표시한 부분이 데이터 패스이며, 제어 구조는 이들 가운데 한가지만 한 순간에 동작하도록 하고 있다.In Fig. 1, the portions represented by the arithmetic and shifter 74, the multiplication and division 75 and the floating point 50 are data paths, and only one of them is operated at one instant. .

그러나, 데이터 패스는 각각 1사이클, 2-32사이클 및 최대 2000 사이클에 동작을 완료하기 때문에 한 순간에 하나의 데이터 패스만 동작하게 하는 구조는 비효율적이다.However, because the data paths complete their operations in 1 cycle, 2-32 cycles, and up to 2000 cycles, respectively, a structure in which only one data path operates at a time is inefficient.

또한, SIMD 연산을 지원하지 않아 8비트 데이터가 계속적으로 입력될 경우 32비트 데이터 패스의 많은 부분이 쉬고 있는 현상이 발생한다.In addition, if the 8-bit data is continuously input because the SIMD operation is not supported, a large portion of the 32-bit data path is stopped.

이와 같이, 상기 종래의 기술에 있어서는 자바 프로세서에 SIMD 명령어가 없고, 데이터 패스도 SIMD 구조를 지원하지 않아 32비트 데이터 패스에서 8비트 덧셈 연산을64번 한다고 할 경우, 64번의 루프를 수행하게 되어 연산 속도가 저하되고 또한 데이터 패스가 한 순간에 하나만 동작하도록 제어되고 있기 때문에 부동 소수점 계산의 경우 명령어가 최대 2000 사이클을 소모하는 상황을 볼 때 플로팅 포인트부 연산 이후에 산술연산 및 시프터부 연산이 최대 2000 사이클을 기다리게 되어 비효율적인 문제점이 있었다.As described above, in the conventional technology, when the Java processor does not have a SIMD instruction and the data path does not support the SIMD structure, 64 8-bit addition operations are performed on a 32-bit data path. In the case of floating point calculations, when the instruction consumes up to 2000 cycles, the arithmetic and shifter operations can be up to 2000 after the floating point part operation because the speed is reduced and the data path is controlled to operate only one at a time. There was an inefficient problem to wait for the cycle.

따라서, 본 발명은 상기와 같은 종래의 문제점을 해결하기 위하여 창출한 것으로, 종래의 구조에 큰 변화가 없이 동작 사이클수가 다른 복수개의 데이터 패스를 병렬 처리할 수 있도록 하여 연산 효율을 높일 수 있도록 하는 자바 프로세서를 제공함에 그 목적이 있다.Accordingly, the present invention has been created to solve the above-mentioned conventional problems, and allows Java to improve the computational efficiency by allowing parallel processing of a plurality of data paths having different operation cycles without significant change in the conventional structure. The purpose is to provide a processor.

도 1은 종래 자바 프로세서의 구성을 보인 블록도.1 is a block diagram showing the configuration of a conventional Java processor.

도 2는 목적 어드레스가 있는 연산과 없는 연산에서의 스택 캐시를 비교한 예시도.2 shows an example of stack cache comparisons for operations with and without destination addresses.

도 3은 본 발명에 의한 자바 프로세서의 구성을 보인 블록도.Figure 3 is a block diagram showing the configuration of a Java processor according to the present invention.

도 4는 상기 도3에서 이슈 제어부와 출력 제어부의 상세 구성을 보인 블록도.4 is a block diagram showing a detailed configuration of the issue control unit and the output control unit in FIG.

***도면의 주요 부분에 대한 부호의 설명****** Description of the symbols for the main parts of the drawings ***

100 : 이슈 제어부 100a : 폴딩 및 그룹검사부100: issue control unit 100a: folding and group inspection unit

100b : 디코딩 100c : 데이터 패스 할당부100b: decoding 100c: data path allocation unit

100d : 이슈 제어기 100e : 데이터 패스 아이들 체크부100d: Issue controller 100e: Data path idle check unit

200 : 출력 제어부200: output control unit

이와 같은 목적을 달성하기 위한 본 발명은 자바 프로세서에 있어서, 현재의 목적 어드레스를 갖고 있는 폴딩된 명령어가 이전 명령어와의 데이터 의존성이 없고 또한, 할당할 데이터 패스 연산기가 실행 단계에서 쉬고 있을 때 이슈(Issue)하도록 제어하는 이슈 제어부와; 데이터 패스의 각 연산기로부터 출력 준비(output_ready) 신호를 받아 필요한 먹스 선택신호(mux selec)를 먹스로 보내며 또한 현재 연산기의 상태를 관리하는 출력 제어부를 더 포함하여 구성한 것을 특징으로 한다.The present invention for achieving the above object is an issue in the Java processor, when the folded instruction having the current destination address has no data dependency with the previous instruction and the data path operator to be allocated is resting at execution stage. Issue control unit for controlling to issue; And an output controller configured to receive an output_ready signal from each operator of the data path, to send a necessary mux selec- tion signal to the mux, and to manage a state of the current operator.

이하, 본 발명에 따른 일실시예를 첨부한 도면을 참조하여 상세히 설명하면 다음과 같다.Hereinafter, an embodiment according to the present invention will be described in detail with reference to the accompanying drawings.

본 발명은 종래 자바 프로세서가 '파이프라인의 실행 단계에서 한 순간에 데이터 패스 유니트 가운데 하나만 동작되어야 한다'는 제한을 해결하여 '자바 프로세서의 실행 단계에서 다수의 데이터 패스 유니트가 동작될 수 있도록 하는 구조'로 개선한 것이다.The present invention solves the limitation that a conventional Java processor must operate only one of the data path units at a moment in the execution stage of the pipeline, thereby enabling a plurality of data path units to be operated in the execution stage of the Java processor. 'To improve.

그러나, 모든 명령어에 대하여 가능하게 할 경우 새로운 자바 프로세서를 개발하는 것이 되므로, 본 발명은 기존 자바 프로세서의 스택 캐시의 구조는 그대로 유지하면서, 일부 제어 회로를 최소한으로 변경/추가하여 폴딩하고, 목적 어드레스(destination address)를 갖는 명령어가 이전 명령어와 데이터 의존관계가 없으면 데이터 패스 내의 여러 연산기를 선택적으로 동시 사용할 수 있도록 하는 제어 구조이다.However, since it is possible to develop a new Java processor when it is possible for all instructions, the present invention maintains the structure of the stack cache of the existing Java processor, while folding and changing some control circuits to a minimum, and the destination address. (destination address) is a control structure that allows the simultaneous use of multiple operators in the data path if there is no data dependency on the previous command.

일단, 본 발명에 의해 병렬로 데이터 패스를 사용할 수 있는 명령어 형식은 목적 어드레스를 갖는 명령어로 제한하였다.Once, according to the present invention, the instruction format that can use data paths in parallel is limited to instructions having a destination address.

가령, 'V <= u×w', 'Z <= x+y' 연산을 목적 어드레스를 갖는 명령과 갖지 않는 명령어를 사용하는 경우로 나누어 설명하면, 결과는 도2에 도시된 바와 같이 나타난다.For example, the operation of 'V <= u × w' and 'Z <= x + y' is divided into a case of using an instruction having a destination address and an instruction having no instruction, and the result is shown as shown in FIG.

도2의 (a)에 도시된 바와 같이 목적 어드레스를 갖는 경우는 연산 결과를 OP_TOP에 놓지 않고, 곧바로 VARS 영역의 해당 변수 위치로 결과값을 이동시킨다.As shown in (a) of FIG. 2, when the target address is included, the result value is immediately moved to the corresponding variable position in the VARS region without putting the operation result in OP_TOP.

따라서, 스택 캐시의 OP_TOP의 위치는 변동이 없게 된다.Therefore, the position of OP_TOP in the stack cache is not changed.

반면, 목적 어드레스가 없는 경우는 도2의 (b)에 도시된 바와 같이 스택 캐시의 임의의 영역에 연산 결과(V, Z)를 저장하므로, OP_TOP의 위치가 변동되며 위치별 내용은 연산의 순서에 의존하는 특성을 갖는다.On the other hand, if there is no destination address, as shown in (b) of FIG. 2, operation results (V and Z) are stored in an arbitrary area of the stack cache. Has the property to depend on.

다시 말해, 본 발명은 여러 데이터 패스를 동시에 능동(active) 상태로 유지하는 것을 주요 특징으로 하며, 연산기의 종료 시점 전후에는 관심을 갖지 않는 구조이다.In other words, the present invention is characterized by maintaining several data paths in an active state at the same time, the structure is not interested before and after the end of the calculator.

도3은 본 발명에 의한 자바 프로세서의 구성을 보인 블록도로서, 이에 도시한 바와 같이 종래의 구성에 있어서, 현재의 목적 어드레스를 갖고 있는 폴딩된 명령어가 이전 명령어와의 데이터 의존성이 없으며 또한, 할당할 데이터 패스 연산기가 실행 단계에서 쉬고 있을 때 이슈(Issue)하도록 제어하는 이슈 제어부(100)와; 데이터 패스의 각 연산기로부터 출력 준비(output_ready) 신호를 받고, 필요한 먹스 선택신호(Mux_sel)를 먹스로 보내며 또한, 현재 연산기의 상태를 관리하는 출력 제어부(200)를 더 포함하여 구성한다.3 is a block diagram showing the configuration of a Java processor according to the present invention. In the conventional configuration, as shown therein, a folded instruction having a current destination address has no data dependency on the previous instruction and is allocated. An issue control unit 100 which controls to issue when the data path operator to be rested in the execution phase; And an output control unit 200 which receives an output ready signal from each operator of the data path, sends a necessary mux selection signal Mux_sel to the mux, and manages the state of the current operator.

여기서, 상기 이슈 제어부(100)는 프로세서 내부로 공급되는 명령어들의 폴딩 그룹 여부를 검사하는 폴딩 및 그룹 검사부(100a)와; 어떠한 명령어인지를 판별하는 디코딩부(100b)와; 상기 디코딩된 명령어의 적절한 데이터 패스를 할당하는 데이터 패스 할당부(100c)와; 특정한 데이터 패스가 아이들 상태인지를 검사하는 데이터 패스 아이들 체크부(100e)와; 상기 각 과정이 제대로 수행될 수 있도록 제어하는 이슈 제어기(100d)로 구성한다.Here, the issue control unit 100 may include a folding and group checking unit 100a which checks whether a folding group of instructions supplied into the processor is present; A decoding unit 100b for determining which instruction; A data path assignment unit (100c) for allocating an appropriate data path of the decoded instruction; A data path idle check unit 100e for checking whether a specific data path is in an idle state; It consists of an issue controller (100d) for controlling so that each process can be performed properly.

그럼, 상기 이슈 제어부(100)와 출력 제어부(200)의 구성 및 동작을 도4를 참조하여 설명한다.Next, the configuration and operation of the issue control unit 100 and the output control unit 200 will be described with reference to FIG. 4.

자바프로세서는 바이트 코드(byte code)를 공급받아 처리하는 자바언어 전용의 프로세서로서, 여러 쌍의 명령어들은 9가지 그룹 가운데 한가지로 구분되며, 이 구분에 속한 명령어들은 새로운 하나의 명령어로 재구성(Folding)된다.The Java processor is a Java language-only processor that receives and processes byte codes. The pair of instructions is divided into one of nine groups, and the instructions in this category are reorganized into one new instruction. do.

이와 같이 폴딩된 자바 명령어는 각 파이프라인 단계에서 프로세서 내부로 공급(issue)된다.The folded Java instructions are issued into the processor at each pipeline stage.

프로세서 내부로 공급될 때, 명령어들은 폴딩그룹 여부를 검사받고, 어떠한 명령어인지 디코딩된 다음 적절한 데이터 패스에 할당(data path assign)된다.When fed into the processor, the instructions are checked for their folding group, decoded which instructions and then assigned to the appropriate data path.

아이들 체크는 도4의 출력 제어부(200)에서 각 데이터 패스가 아이들 상태인지를 나타내는 값을 전달함으로써 이루어진다. 즉, 이슈 제어부(100)에서 새로운 명령어를 공급했으면, 할당한 데이터 패스 정보를 데이터 패스 정보 신호(issued DP_ID)에 의해 출력 제어부(200)에 제공하고, 출력 제어부(200)에서는 아이들 상태 신호(idle DP_id)에 의해 이슈 제어부(100)에 데이터 패스가 아이들 상태인지 여부를 알려준다.다시 말해, 상기 데이터 패스 정보 신호(issued DP_ID)는 이슈 제어부(100)에서 출력 제어부(200)로 출력하는 신호로서, 입력된 명령어의 종류에 따라 할당된 데이터 패스 정보를 담고 있는 것으로, 이 값으로 출력 제어부(200)의 데이터 패스 할당 여부에 대한 정보를 담고 있는 내부의 데이터베이스를 갱신한다.또한, 상기 아이들 상태 신호(idle DP_id)는 출력 제어부(200)에서 이슈 제어부(100)로 출력하는 신호로서, 데이터 페스에서 출력준비 신호(Output_ready)를 입력받아 내부의 데이터베이스를 갱신하고, 아이들 상태에 있는 데이터 패스 정보를 이슈 제어부(100)에 통보하는 것이다.또한, 스택캐시로 명령어가 공급되면 필요한 변수와 데이터를 공급하기 위한 공간을 관리해야 하는데, 이를 위하여 VARS와 OP_TOP이라는 포인터를 제공하고 있다.The idle check is performed by passing a value indicating whether each data path is in an idle state in the output control unit 200 of FIG. That is, when the issue control unit 100 supplies a new command, the allocated data path information is provided to the output control unit 200 by the data path information signal issued DP_ID, and the output control unit 200 idles the idle state signal. DP_id indicates to the issue controller 100 whether the data path is in an idle state. In other words, the data path information signal issued DP_ID is a signal output from the issue controller 100 to the output controller 200. Contains data path information allocated according to the type of the input command, and updates the internal database containing information on whether the output control unit 200 has assigned a data path. idle DP_id) is a signal output from the output control unit 200 to the issue control unit 100, and receives the output preparation signal Output_ready from the data pass to the internal data. It updates the data and notifies the issue controller 100 of the data path information in the idle state. In addition, when a command is supplied to the stack cache, a space for supplying necessary variables and data must be managed. It provides a pointer called OP_TOP.

즉, 폴딩 및 그룹 검사부(100a)는 입력되는 명령어가 데이터 패스를 동시에 사용할 수 있는 명령어 군인가를 검사한다.여기서, 상기 명령어 군의 검사는 여러가지 방법이 있을 수 있지만, 명령어는 그 종류에 따라서 필요로 하는 데이터 패스가 다른 점을 이용하여, 사용자는 그 종류를 미리 구분하여 데이터베이스화하고, 명령이 입력될 때마다 그 일치여부를 검사하도록 함으로써 명령어 군을 쉽게 구분할 수 있게 된다.이에 따라, 동시에 사용할 수 없는 명령어 군으로 판명되면 데이터 패스의 모든 연산기가 실행 단계에서 아이들(idle) 상태로 될 때까지 이슈를 정지시킨다.That is, the folding and group checking unit 100a checks the command value that the input command can use the data path at the same time. Here, the checking of the command group may have various methods, but the command may be required according to the type. By using different data paths, users can easily distinguish between groups of commands by pre-dividing the types into a database and checking whether they match each time a command is entered. If it turns out to be a missing instruction family, the issue halts until all operators in the data path are idle at the execution stage.

일단, 명령어가 폴딩되고 목적 어드레스를 갖는 명령어일 경우, 디코딩 및 데이터 패스 할당을 진행한다.Once the instruction is folded and the instruction has a destination address, decoding and data path allocation proceed.

이때 수행중인 이전 명령어들과 데이터 의존 관계가 없고, 또한 지정한 데이터 패스가 실행 단계에서 아이들 상태이면 이슈(issue)를 진행한다.At this time, if there is no data dependency on previous instructions being executed and the specified data path is idle in the execution phase, an issue is issued.

데이터 패스에 명령어가 이슈되면 출력 제어부(200)에 할당한 데이터 패스 정보를 데이터 패스 정보 신호(Issued_DP_ID)를 이용하여 출력함으로써, 출력 제어부(200)가 갖고 있는 표의 값을 업데이트한다.If a command is issued to the data path, the data path information allocated to the output control unit 200 is output using the data path information signal Issued_DP_ID, thereby updating the value of the table that the output control unit 200 has.

이때, 아이들 상태 여부는 데이터 패스 아이들 체크부(100e)의 정보를 활용한다.At this time, the idle state is utilized by the information of the data path idle check unit 100e.

데이터 패스 아이들 체크부(100e)는 출력 제어부(200)의 표에 나타난 값으로부터 나오는 아이들 상태 신호(idle DP_id)를 참조하여 업데이트된다.The data path idle check unit 100e is updated with reference to an idle state signal id DP_id derived from the values shown in the table of the output control unit 200.

다음, 출력 제어부(200)는 각 데이터 패스가 실행 단계에서 점유되어 있는지의 여부를 나타내는 값을, 도4의 출력 제어부 내에 도시된 표와 같은 데이터베이스 구성(FPU : 1, Mult/div : 1, ALU/shift : 0)을 갖는다.이값은 이슈 제어부(100)의 데이터 패스 정보 신호(Issued_DP_ID)와 각 데이터 패스와 관련된 신호로부터 나오는 출력 준비 신호(output_ready)에 의해 바뀌게 된다.Next, the output control unit 200 sets a value indicating whether each data path is occupied at the execution stage, and a database configuration (FPU: 1, Mult / div: 1, ALU) as shown in the table shown in the output control unit of FIG. / shift: 0). This value is changed by the data path information signal Issued_DP_ID of the issue control unit 100 and the output ready signal output_ready from the signal associated with each data path.

데이터 패스 정보 신호(Issued_DP_ID)값이 해당 데이터 패스에 대하여 나타나면 표의 해당 연산기의 상태는 1로 되며, 연산기 수행이 완료되는 경우 0으로 바뀐다.If the value of the data path information signal Issued_DP_ID is displayed for the data path, the state of the corresponding operator in the table becomes 1, and when the execution of the operator is completed, it changes to 0.

이 값은 출력단의 먹스가 값을 검출할 수 있도록 먹스 선택신호(mux_sel)를 출력하며 또한 이슈 제어부(100)의 데이터 패스 아이들 체크부(100e)로 해당 연산기의 업데이트된 상태값을 출력한다.This value outputs a mux selection signal mux_sel so that the mux of the output terminal can detect the value, and also outputs the updated state value of the corresponding operator to the data path idle check unit 100e of the issue control unit 100.

이상에서 설명한 바와 같이 본 발명 자바 프로세서는 종래의 스택 캐시 구조를 바꾸지 않고도 폴딩되고 목적 어드레스를 갖는 명령어에 대하여 선택적으로 기존 자바 프로세서의 데이터 패스 연산기들을 동시 사용할 수 있도록 하는 효과가 있다.As described above, the Java processor of the present invention has the effect of selectively using data path operators of the existing Java processor selectively for the folded and the destination addressed instruction without changing the conventional stack cache structure.

Claims (2)

자바 프로세서에 있어서, 현재의 목적 어드레스를 갖고 있는 폴딩된 명령어가 이전 명령어와의 데이터 의존성이 없고 또한, 할당할 데이터 패스 연산기가 실행 단계에서 쉬고 있을 때 이슈(Issue)하도록 제어하는 이슈 제어부와; 데이터 패스의 각 연산기로부터 출력 준비(output_ready) 신호를 받아 필요한 먹스 선택신호(mux selec)를 먹스로 보내며 또한 현재의 연산기의 상태를 관리하는 출력 제어부를 더 포함하여 구성한 것을 특징으로 하는 자바 프로세서.1. A Java processor, comprising: an issue control unit for controlling a folded instruction having a current destination address to have no data dependency with a previous instruction and to issue an issue when the data path operator to be allocated is at rest in an execution step; And an output control unit which receives an output_ready signal from each operator of the data path, sends a necessary mux selec- tion signal to the mux, and further manages the state of the current operator. 제1항에 있어서, 상기 이슈 제어부는 프로세서 내부로 공급되는 명령어들의 폴딩 그룹 여부를 검사하는 폴딩 및 그룹 검사부와; 어떠한 명령어인지를 판별하는 디코딩부와; 상기 디코딩된 명령어의 적절한 데이터 패스를 할당하는 데이터 패스 할당부와; 특정한 데이터 패스가 아이들 상태인지를 검사하는 데이터 패스 아이들 체크부와; 상기 각 과정이 제대로 수행될 수 있도록 제어하는 이슈 제어기로 구성하여 된 것을 특징으로 하는 자바 프로세서.The apparatus of claim 1, wherein the issue controller comprises: a folding and group checking unit configured to check whether or not a folding group of instructions supplied into a processor is present; A decoding unit for determining which instruction; A data path assignment unit for allocating an appropriate data path of the decoded instruction; A data path idle check unit for checking whether a specific data path is in an idle state; Java processor, characterized in that consisting of an issue controller for controlling so that each process can be performed properly.
KR1019990064692A 1999-12-29 1999-12-29 Java processor KR100343467B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990064692A KR100343467B1 (en) 1999-12-29 1999-12-29 Java processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990064692A KR100343467B1 (en) 1999-12-29 1999-12-29 Java processor

Publications (2)

Publication Number Publication Date
KR20010064489A KR20010064489A (en) 2001-07-09
KR100343467B1 true KR100343467B1 (en) 2002-07-11

Family

ID=19631961

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990064692A KR100343467B1 (en) 1999-12-29 1999-12-29 Java processor

Country Status (1)

Country Link
KR (1) KR100343467B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040044655A (en) * 2002-11-21 2004-05-31 한국전자통신연구원 Method of generating bytecodes for loop in java virtual machine and processing the bytecodes

Also Published As

Publication number Publication date
KR20010064489A (en) 2001-07-09

Similar Documents

Publication Publication Date Title
KR100440841B1 (en) Microcomputer
EP1267257A2 (en) Conditional execution per data path slice
KR101703797B1 (en) Functional unit having tree structure to support vector sorting algorithm and other algorithms
KR100346515B1 (en) Temporary pipeline register file for a superpipe lined superscalar processor
EP1267258A2 (en) Setting up predicates in a processor with multiple data paths
JPH11154114A (en) System and method for table look-up using architecture of plural data fetching
EP2796990A2 (en) Apparatus and method for supporting multi-modes of processor
US6292845B1 (en) Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
JP2001504959A (en) 8-bit microcontroller with RISC architecture
KR101016257B1 (en) Processor and information processing apparatus
JP4002151B2 (en) Information processing device
JP5580404B2 (en) Semiconductor device
KR100343467B1 (en) Java processor
US20040177233A1 (en) Method and apparatus for executing stack-based programs
CN100356318C (en) Methods and apparatus for instruction alignment
US5819081A (en) Method of executing a branch instruction of jumping to a subroutine in a pipeline control system
US6233675B1 (en) Facility to allow fast execution of and, or, and test instructions
US20220166859A1 (en) Network packet processor for processing a data packet
US20040177234A1 (en) Method and apparatus for executing branch instructions of a stack-based program
JP2629479B2 (en) Information processing device
US7404153B2 (en) Method for the providing of a design, test and development environment and system for carrying out said method
JPH0816392A (en) Computer system, computer-system operating method and computer-instruction-sequence execution method
KR200329895Y1 (en) Multiple Accumulator Controls in Microprocessors
JP2583614B2 (en) Vector arithmetic unit
JPS6057440A (en) Information processor

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: 20050524

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee