WO2023219204A1 - 명령어를 처리하는 방법 및 이를 위한 프로세서 모듈 - Google Patents

명령어를 처리하는 방법 및 이를 위한 프로세서 모듈 Download PDF

Info

Publication number
WO2023219204A1
WO2023219204A1 PCT/KR2022/008913 KR2022008913W WO2023219204A1 WO 2023219204 A1 WO2023219204 A1 WO 2023219204A1 KR 2022008913 W KR2022008913 W KR 2022008913W WO 2023219204 A1 WO2023219204 A1 WO 2023219204A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
index
operand
specific entry
entry
Prior art date
Application number
PCT/KR2022/008913
Other languages
English (en)
French (fr)
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 WO2023219204A1 publication Critical patent/WO2023219204A1/ko

Links

Images

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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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
    • 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/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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 or look ahead

Definitions

  • the present invention stores the execution result of a command in a table, searches the table for a specific entry using an index pointing to the specific entry in which the execution result is stored, and executes the searched specific entry.
  • Data stored in the entry can be transferred to the destination register or memory.
  • FIG. 2b it shows the process in which the patch step, decode step, and execution step are executed in a pipeline form.
  • instruction i is first fetched from memory and stored in the IR register.
  • instruction i+1 is fetched and instruction i is decoded at the same time.
  • instruction i+2 is fetched, instruction i+1 is simultaneously decoded, and instruction i is executed.
  • a pipelining processor allows different stages of multiple instructions to operate simultaneously.
  • a superscalar processor performs multiple instructions simultaneously by patching, decoding, and executing multiple instructions simultaneously.
  • index ⁇ opcode(MUL) ⁇ value(r0) ⁇ value(r1)
  • the decoder 110 For example, for a MUL instruction composed of 'MUL #v1, r1, r2' with direct value #v1 as the operand, the decoder 110 generates 'MUL #v1, r1, r2' as shown in [Equation 2]. You can calculate the index of a specific entry in the table where the execution results are stored.
  • index ⁇ opcode(MUL) ⁇ 2 ⁇ 4
  • index ⁇ opcode(MUL) ⁇ #v1 ⁇ #v2 ⁇ Info
  • address decoding logic partially composed of hardware circuits can be used.
  • the address decoding logic If the address decoding logic outputs a miss signal, the corresponding instruction can be performed in the conventional manner.
  • the decoder 110 when the MUL instruction consisting of 'MUL 2, 4' has direct values 2 and 4 as operands, the decoder 110 provides 8 bits representing direct values 2 and 4, respectively. By selecting only 4 bits (for direct value 2, '0010', and for direct value 4, '0100'), the index of a specific entry in the table can be calculated as shown in [Equation 8]. At this time, all unselected bits have '0'. If the unselected bits do not have a predetermined bit pattern, the corresponding MUL instruction can be operated in the conventional manner.
  • index ⁇ opcode(MUL) ⁇ 0010 ⁇ 0100
  • the COMPARE (or TEST) instruction may have two operands, such as 'COMPARE r1, r2'.
  • the decoder 110 may calculate the index by applying a combination operation with the values in the offcodes r1 and r2 of the COMPARE instruction.
  • the transmission unit 130 may transmit the data stored in the searched specific entry to a Flag (or PSW) register or a destination register designated by an instruction. If the specific entry does not exist, the COMPARE (or TEST) command can be operated in the conventional manner.
  • the decoding and execution method of the present invention does not apply only to the instructions described in the above embodiments, but should be considered applicable to all instructions.
  • the determination unit 140 may determine whether an offcode or a bit string predictable from at least one operand exists in the table based on the range for the instruction and at least one offland.
  • Second index opcode(MUL) ⁇ value(r2) ⁇ value(r1)
  • the decoder 110 can calculate all of a plurality of indices (first index, second index) by changing the order between operands r1 and r2.
  • the entry search unit 120 may retrieve data from existing entries among the entries in the table indicated by a plurality of indexes. If all the entries pointed to by multiple indexes do not exist, the corresponding command can be operated in the conventional manner.
  • the operand can be divided into smaller pieces.
  • the COMPARE instruction has two operands V1 and V2, and both value(V1) and value(V2) can be 32-bit values.
  • the entry search unit 120 searches the table for the entry indicated by the first index, and retrieves the first partial result value from the searched entry. can be brought.
  • the calculation unit 150 includes the offcode of the COMPARE instruction and two operands, Calculate the second index by combining .
  • composition operation can be calculated as follows:
  • Equal bit of F 1, If all Equal bits are 1, it is 0
  • the table size can be reduced because only partial results (operation results) of the divided operands are stored in the table.
  • commands such as SUBTRACT, ADD, MUL, and MODULO may share the same table.
  • the storage unit 100 may selectively maintain in the table only the entries indicated by frequently used indexes or may selectively maintain only the entries indicated by recently used indexes in the table. Through this, the table size can be reduced.
  • the present invention can solve energy consumption and heat generation problems in multi-core architecture processors with hundreds of cores.
  • Figure 9 is a flowchart showing a method of processing commands according to an embodiment of the present invention.
  • step S905 the processor module 10 may search for a specific entry using an index.
  • steps S901 to S907 may be further divided into additional steps or combined into fewer steps, depending on the implementation of the present invention. Additionally, some steps may be omitted or the order between steps may be changed as needed.
  • Computer-readable media can be any available media that can be accessed by a computer and includes both volatile and non-volatile media, removable and non-removable media. Additionally, computer-readable media may include all computer storage media. Computer storage media includes both volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

명령어를 처리하는 방법은 명령어의 실행 결과를 테이블에 저장하는 단계, 명령어의 오프코드 및 적어도 하나의 오퍼랜드를 이용하여 테이블의 특정 엔트리를 가리키는 인덱스를 계산하는 단계, 인덱스를 이용하여 상기 특정 엔트리를 검색하는 단계 및 검색된 특정 엔트리에 저장된 데이터를 목적 레지스터 또는 메모리로 전송하는 단계를 포함할 수 있다.

Description

명령어를 처리하는 방법 및 이를 위한 프로세서 모듈
본 발명은 명령어를 처리하는 방법 및 프로세서 모듈에 관한 것이다.
프로세서는 컴퓨터의 주요 구성 요소 중의 하나로서 명령어를 수행하는 기능을 가진다. 하나의 명령은 패치(fetch) 단계, 디코드(decode) 단계, 실행(execute) 단계를 거쳐 수행된다. 명령이 수행되면, 프로세서는 명령어의 수행 결과를 프로세서 내부의 레지스터 또는 메모리에 저장할 수 있다.
프로세서 내부에는 복수의 레지스터가 존재한다. 예를 들어, PC(Program Counter) 레지스터는 다음에 프로세서로 가져올 명령어의 메모리 주소를 가진다. 프로세서로 가져온 명령어는 IR(Instruction Register)에 저장된다. Flag 또는 PSW(Program Status Word) 레지스터는 프로그램의 상태 또는 결과값의 상태를 나타내는 특별한 레지스터로서, 0, 양수, 음수, 오버플로우, 언더플로우, 동일, 큼, 작음, 작거나 같음, 크거나 같음과 같은 결과값을 갖는다.
Accumulator 레지스터는 연산의 결과를 저장하는 레지스터이다. 이 외에도, 프로세서에는 데이터나 인덱스를 저장하기 위한 다양한 레지스터들이 존재한다.
명령의 수행은 명령어를 메모리로부터 가져오는 패치 단계부터 시작한다. 구체적으로, 프로세서는 메모리로부터 명령어와 오퍼랜드(operand)를 메모리로부터 가져온다. 다음으로 명령을 디코드하고 실행한다. 또한, 필요한 경우, 실행에 필요한 또 다른 데이터나 오퍼랜드를 메모리로부터 가져올 수 있다. 마지막으로 실행의 결과는 레지스터나 메모리에 저장된다.
패치 단계는 프로세서가 메모리로부터 명령어를 가져와 IR 레지스터에 저장하는 단계이다. 패치 단계에서 프로세서는 필요한 경우, 추가 오퍼랜드를 메모리로부터 가져올 수 있다.
디코드 단계는 프로세서가 IR 레지스터에 있는 명령을 디코드하며, 그 결과 명령을 실행하는데 필요한 마이크로 스텝(micro-steps)이나 신호들의 시퀀스(sequence of signals)를 생성하는 단계이다.
실행 단계는 프로세서가 마이크로 스텝이나 신호들의 시퀀스를 레지스터나 ALU(Arithmetic and Logic Unit)에 전달하여 산술 또는 논리 연산을 실행하는 단계이다. 이 때, 실행 결과는 기지정된 레지스터나, 명령어가 지정하는 레지스터에 저장된다.
또한, 메모리/쓰기(memory write) 단계가 선택적으로 네 번째 단계로 존재할 수 있다. 메모리/쓰기 단계는 결과를 메모리에 저장할 때 필요하지만, 메모리에 결과를 저장하지 않는 경우 메모리/쓰기 단계는 필요하지 않을 수 있다.
한편, 프로세서의 성능을 향상하기 위해 조립 라인과 유사한 파이프라이닝(pipelining)과 같은 기법이 프로세서에 적용될 수 있다. 파이프라이닝 프로세서는 여러 명령어의 서로 다른 단계를 동시에 실행할 수 있다.
명령어 i가 시간 t에 패치되었다고 가정하면, 시간 t+1에 명령어 i는 디코드되고 명령어 i+1이 패치된다. 시간 t+2에 명령어 i가 실행(execute)되고, 명령어 i+1는 디코드되며, 명령어 i+2이 패치된다. 이와 같이 파이프라이닝 기법은 프로세서가 여러 명령어의 여러 단계를 동시에 실행하게 한다.
프로세서의 성능을 향상하기 위해, 또 다른 기법인 수퍼스칼라(superscalar) 기법이 프로세서에 적용될 수 있다. 수퍼스칼라 프로세서는 복수의 하드웨어 자원(hardware resource)을 사용하여 복수의 명령을 동시에 패치하여 실행한다.
프로세서의 성능 향상을 위한 또 다른 기법인 VLIW(Very Long Instruction Word) 기법이 있다. VLIW 기법을 사용하기 위해서는 먼저 다수의 명령어와 오퍼랜드를 조합하여 VLIW를 만들어야 한다. 프로세서는 VLIW를 패치하고, VLIW에 존재하는 다수의 명령어를 동시에 실행한다.
하드웨어 자원을 많이 필요로 하는 수퍼스칼라 기법와 달리 VLIW 기법은 하드웨어 자원 대신 컴파일러의 도움을 받아 성능을 향상시킨다. 컴파일러는 동시에 실행할 수 있는 다수의 명령어를 모아 하나의 VLIW를 생성해야 한다.
프로세서의 명령어는 오프코드(opcode)와 선택적으로 하나 이상의 오퍼랜드로 구성될 수 있다. 예를 들면, ADD 명령어는 하나의 오프코드와 두 개의 오퍼랜드로 구성될 수 있다. 여기서, 오프 코드는 프로세서가 실행할 동작(operation)을 나타내는 비트 코드이다. 오퍼랜드는 레지스터 번호, 메모리 주소, 또는 실제값(immediate value)이 될 수 있다. 명령어는 선택적으로 결과를 저장할 목적 레지스터나 메모리상의 목적 주소를 포함할 수 있다.
프로세서에는 많은 명령어가 존재한다. 예를 들어, ADD, SUBSTRACT, MULTIPLY, DIVIDE 및 MODULAR와 같은 산술 연산을 위한 명령어가 존재할 수 있다. ADD 명령어는 두 개의 오퍼랜드를 더한 후 그 결과를 레지스터나 메모리에 저장한다. SUBTRACT 명령어는 두 개의 오퍼랜드를 뺀 후 그 결과를 레지스터나 메모리에 저장한다. MULTIPLY 명령어는 오퍼랜드를 곱하고, DIVIDE 명령어는 오퍼랜드를 나누고, MODULAR 명령어는 나누기 연산의 나머지 값을 구한다.
또한, 프로세서에는 AND, OR, XOR, 그리고 NOT과 같은 논리 연산을 위한 명령어도 존재한다. 이러한 명령어들은 해당 연산을 실행하고 그 결과를 레지스터나 메모리에 저장한다.
COMPARE (또는 TEST) 명령어는 오퍼랜드들을 비교(테스트)하고 그 테스트 결과를 Flag (또는 PSW) 레지스터에 저장한다.
Flag 레지스터의 비트들은 테스트한 값이 0, 음수, 양수, 큼, 작음, 크거나 같음, 작거나 같음 등을 나타낸다.
산술, 논리, 비교 연산들은 ALU에 의해 실행된다. 예를 들면, ADD 연산은 ALU에 있는 adder에 의해 실행되고, SUBTRACT 역시 2의 보수를 더하는 덧셈으로 변환되어 ALU에 있는 adder에 의해 실행된다. 마찬가지로 논리와 비교 연산들도 ALU에 의해 실행된다.
이러한 각 명령어는 서로 다른 에너지 소비량과 실행 시간을 가진다.
MULTIPLY 명령어, DIVIDE 명령어 및 MODULAR 명령어는 느리고 에너지를 많이 소비할 수 있으며, 상대적으로 ADD 명령어, SUBTRACT 명령어, 및 COMPARE 명령어는 빠르고 에너지를 적게 소비할 수 있다. 그러나 기본적으로 모든 명령의 수행에는 시간이 걸리고 수행할 때 에너지를 소비한다.
프로세서들은 하나의 칩에 여러 개의 코어를 내장하는 멀티-코어 아키텍처를 가질 수 있다. 또한 프로세서들은 수 기가 헤르츠 속도로 동작한다. 그 결과 프로세서들은 많은 에너지를 소비하고 열을 방출한다.
(특허문헌 1) 한국공개특허공보 제1995-0025536호 (1995.09.18. 공개)
본 발명은 명령어의 실행 결과를 테이블에 저장하고, 해당 실행 결과가 저장된 특정 엔트리를 가리키는 인덱스를 이용하여 특정 엔트리를 테이블에서 검색하고, 검색된 특정 엔트리에 저장된 데이터를 목적 레지스터 또는 메모리로 전송하고자 한다.
다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따른 명령어를 처리하는 방법은 명령어의 실행 결과를 테이블에 저장하는 단계; 상기 명령어의 오프코드 및 적어도 하나의 오퍼랜드를 이용하여 상기 테이블의 특정 엔트리를 가리키는 인덱스를 계산하는 단계; 상기 인덱스를 이용하여 상기 특정 엔트리를 검색하는 단계; 및 상기 검색된 특정 엔트리에 저장된 데이터를 목적 레지스터 또는 메모리로 전송하는 단계를 포함할 수 있다.
본 발명의 제 2 측면에 따른 명령어를 처리하는 프로세서 모듈은 명령어의 실행 결과를 테이블에 저장하는 저장부; 상기 명령어의 오프코드 및 적어도 하나의 오퍼랜드를 이용하여 상기 테이블의 특정 엔트리를 가리키는 인덱스를 계산하는 디코드부; 상기 인덱스를 이용하여 상기 특정 엔트리를 검색하는 엔트리 검색부; 및 상기 검색된 특정 엔트리에 저장된 데이터를 목적 레지스터 또는 메모리로 전송하는 전송부를 포함할 수 있다.
상술한 과제 해결 수단은 단지 예시적인 것으로서, 본 발명을 제한하려는 의도로 해석되지 않아야 한다. 상술한 예시적인 실시예 외에도, 도면 및 발명의 상세한 설명에 기재된 추가적인 실시예가 존재할 수 있다.
전술한 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 본 발명은 명령어의 실행 결과를 테이블에 저장하고, 해당 실행 결과가 저장된 특정 엔트리를 가리키는 인덱스를 이용하여 특정 엔트리를 테이블에서 검색하고, 검색된 특정 엔트리에 저장된 데이터를 목적 레지스터 또는 메모리로 전송할 수 있다.
또한, 본 발명은 프로세서의 명령을 실행할 때 연산의 결과를 테이블에서 검색하고, 연산의 결과가 테이블에 존재하는 경우 테이블로부터 연산의 결과를 가져옴으로써 불필요한 연산의 실행(예컨대, 연산을 수행하기 위한 ALU 동작)을 회피할 수 있다.
이를 통해, 본 발명은 명령어를 수행하는데 필요한 시간과 에너지를 절감하고, 프로세서의 발열을 낮출 수 있다. 또한, 본 발명은 적은 에너지를 소비하면서 더 빠르게 명령어를 수행할 수 있는 방법을 제공할 수 있다.
또한, 본 발명은 다수의 코어를 내장한 멀티코어 아키텍처 프로세서에서의 에너지 소비와 발열 문제를 해결할 수 있다.
도 1은 본 발명의 일 실시예에 따른, 프로세서 모듈의 블록도이다.
도 2a는 본 발명의 일 실시예에 따른, 본 발명의 명령어 처리 방법을 설명하기 위한 도면이다.
도 2b는 본 발명의 일 실시예에 따른, 본 발명의 명령어 처리 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른, MULTIPLY 명령어에 대한 디코드 및 실행 단계를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른, MULTIPLY 명령어에 대한 인덱스를 계산하는 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 다른 실시예에 따른, MULTIPLY 명령어에 대한 인덱스를 계산하는 방법을 설명하기 위한 도면이다.
도 6는 본 발명의 일 실시예에 따른, 테이블 크기를 줄이는 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 다른 실시예에 따른, 테이블 크기를 줄이는 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따른, 서로 다른 명령어들 간에 테이블을 공유하는 방법을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시예에 따른, 명령어를 처리하는 방법을 나타낸 흐름도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 명세서에 있어서 '부(部)'란, 하드웨어에 의해 실현되는 유닛(unit), 소프트웨어에 의해 실현되는 유닛, 양방을 이용하여 실현되는 유닛을 포함한다. 또한, 1 개의 유닛이 2 개 이상의 하드웨어를 이용하여 실현되어도 되고, 2 개 이상의 유닛이 1 개의 하드웨어에 의해 실현되어도 된다.
본 명세서에 있어서 단말 또는 디바이스가 수행하는 것으로 기술된 동작이나 기능 중 일부는 해당 단말 또는 디바이스와 연결된 서버에서 대신 수행될 수도 있다. 이와 마찬가지로, 서버가 수행하는 것으로 기술된 동작이나 기능 중 일부도 해당 서버와 연결된 단말 또는 디바이스에서 수행될 수도 있다.
이하, 첨부된 구성도 또는 처리 흐름도를 참고하여, 본 발명의 실시를 위한 구체적인 내용을 설명하도록 한다.
도 1은 본 발명의 일 실시예에 따른, 프로세서 모듈(10)의 블록도이다.
도 1을 참조하면, 프로세서 모듈(10)은 저장부(100), 디코드부(110), 엔트리 검색부(120), 전송부(130), 판단부(140) 및 계산부(150)를 포함할 수 있다. 다만, 도 1에 도시된 프로세서 모듈(10)은 본 발명의 하나의 구현 예에 불과하며, 도 1에 도시된 구성요소들을 기초로 하여 여러 가지 변형이 가능하다.
이하에서는 도 2a 내지 8을 함께 참조하여 도 1을 설명하기로 한다.
먼저, 도 2a 내지 2b를 참조하여 본 발명의 명령어 처리 방법을 개괄적으로 설명하기로 한다.
도 2a를 참조하면, 단계 S201에서 프로세서 모듈(10)은 메모리로부터 명령어를 패치하여 IR 레지스터에 저장할 수 있다. 단계 S203에서 프로세서 모듈(10)은 IR 레지스터에 있는 명령어를 디코드하고, 디코드 결과로서 테이블의 엔트리를 가리키는 인덱스(Index)를 계산할 수 있다. 여기서, 테이블의 엔트리에는 명령어의 실행 결과(연산 결과)가 저장되어 있다. 단계 S205에서 프로세서 모듈(10)은 계산된 인덱스를 이용하여 테이블의 엔트리에서 명령어에 대한 실행 결과를 가져와서 명령어가 지정하는 목적 레지스터 또는 메모리로 전송할 수 있다.
프로세서(10)는 이 세 단계(패치 단계, 디코드 단계 및 실행 단계)를 반복적으로 실행한다.
본 발명의 일 실시예에 따른 명령어는 패치 단계, 디코드 단계 및 실행 단계를 거쳐 수행된다. 이 세 단계 외에 추가 단계가 존재할 수 있다. 또한, 패치 단계, 디코드 단계 및 실행 단계를 더 작은 미세 단계들도 나누고, 각 미세 단계를 독립적인 단계로 간주할 수도 있다.
도 2b를 참조하면, 패치 단계, 디코드 단계 및 실행 단계가 파이프라인 형태로 실행되는 과정을 보여준다. 시간 t 에 먼저 명령어 i를 메모리로부터 패치하여 IR 레지스터에 저장한다. 시간 t+1에 명령어 i+1을 패치하며, 동시에 명령어 i를 디코드한다. 시간 t+2에 명령어 i+2를 패치하고, 동시에 명령어 i+1을 디코드하며, 명령어 i를 실행한다. 이처럼 파이프라이닝 프로세서는 동시에 여러 명령어의 서로 다른 단계들이 동시에 작동되도록 한다. 또한 수퍼스칼라 프로세서는 여러 명령어를 동시에 패치, 디코드, 실행하여 다수의 명령어들을 동시에 수행한다.
다시 도 1로 돌아오면, 저장부(100)는 복수의 명령어 각각에 대한 실행 결과(연산 결과)를 테이블(즉, 테이블의 특정 엔트리)에 저장할 수 있다. 여기서, 테이블에는 복수의 엔트리가 존재하며 각 엔트리마다 명령어들의 실행 결과가 저장되어 있다.
디코드부(110)는 명령어가 패치되어 IR 레지스터에 저장된 경우, IR 레지스터에 저장된 명령어를 디코드하고, 디코드 결과로서 테이블의 특정 엔트리(즉, 명령어가 저장된 특정 엔트리)를 가리키는 인덱스를 계산할 수 있다.
구체적으로, 디코드부(110)는 명령어의 오프코드 및 적어도 하나의 오퍼랜드를 이용하여 테이블의 특정 엔트리를 가리키는 인덱스를 계산할 수 있다. 여기서, 특정 엔트리에는 명령어의 실행 결과가 존재할 수 있다.
예를 들어, MULTIPLY 연산은 'MUL r0, r1, r2'와 같이, 세 개의 오퍼랜드를 가질 수 있다. MUL 명령어는 레지스터 r0와 r1에 있는 값을 더한 후 그 결과값을 레지스터 r2에 저장한다. 이러한, MUL 명령어에 대하여 디코드부(110)는 MUL 명령어의 오프코드, r0와 r1에 있는 값을 가지고 조합(combine) 연산을 수행하여 인덱스를 계산할 수 있다.
여기서, 조합 연산은 ⊙ 기호로 표현될 수 있다. 조합 연산은 비트 이어 붙이기(bit concatenation) 연산이 사용될 수 있으며, 다른 연산이 사용될 수 있다.
여기서, 조합 연산을 이용한 MUL 명령어에 대한 특정 엔트리의 인덱스는 [수학식 1]을 통해 계산될 수 있다.
[수학식 1]
index <= opcode(MUL) ⊙ value(r0) ⊙ value(r1)
예를 들어, 오퍼랜드로 직접값 #v1을 갖는 'MUL #v1, r1, r2' 로 구성된 MUL 명령어에 대하여, 디코드부(110)는 [수학식 2]와 같이 'MUL #v1, r1, r2'의 실행 결과가 저장된 테이블의 특정 엔트리의 인덱스를 계산할 수 있다.
[수학식 2]
index <= opcode(MUL) ⊙ #v1 ⊙ value(r1)
예를 들어, 디코드부(110)는 오퍼랜드로 직접값 #v1과 #v2를 갖는 'MUL #v1, #v2, r2'로 구성된 MUL 명령어에 대하여, 디코드부(110)는 [수학식 3]과 같이 'MUL #v1, #v2, r2'의 실행 결과가 저장된 테이블의 특정 엔트리의 인덱스를 계산할 수 있다.
[수학식 3]
index <= opcode(MUL) ⊙ #v1 ⊙ #v2
예를 들어, 도 3을 참조하면, 디코드부(110)는 오퍼랜드로 직접값 2와 4를 갖는 'MUL 2, 4'로 구성된 MUL 명령어에 대하여, 디코드부(110)는 [수학식 4]와 같이, 'MUL 2, 4'의 실행 결과인 '8'이 저장된 테이블의 특정 엔트리의 인덱스를 계산할 수 있다.
[수학식 4]
index <= opcode(MUL) ⊙ 2 ⊙ 4
디코드부(110)는 명령어의 오프코드, 적어도 하나의 오퍼랜드 및 추가 정보를 이용한 조합 연산을 통해 [수학식 5] 내지 [수학식 7] 중 하나와 같이 테이블의 특정 엔트리를 가리키는 인덱스를 계산할 수 있다.
[수학식 5]
index <= opcode(MUL) ⊙ value(r0) ⊙ value(r1) ⊙ Info
[수학식 6]
index <= opcode(MUL) ⊙ #v1 ⊙ value(r1) ⊙ Info
[수학식 7]
index <= opcode(MUL) ⊙ #v1 ⊙ #v2 ⊙ Info
한편, 인덱스를 계산할 때 부분적으로 하드웨어 회로로 구성된 주소 디코딩 로직(Address Decoding Logic)이 사용될 수 있다.
도 4를 참조하면, 디코드부(110)가 명령어(예컨대, MUL 2, 4)의 오프코드 및 오퍼랜드(또는, 오프코드, 오퍼랜드 및 추가 정보)를 주소 디코딩 로직에 입력하면, 주소 디코딩 로직은 테이블의 특정 엔트리를 가리키는 인덱스를 출력할 수 있다.
만일, 해당 특정 엔트리가 테이블에 존재하지 않거나, 해당 특정 엔트리를 포함한 테이블이 존재하지 않는 경우, 주소 디코딩 로직은 미스 시그널(miss signal)을 출력할 수 있다.
만일, 주소 디코딩 로직이 미스 시그널을 출력하는 경우 해당 명령어는 기존의 방식대로 수행될 수 있다.
한편, 인덱스를 계산할 때, 본 발명은 오퍼랜드의 모든 비트를 사용하지 않고 오퍼랜드를 구성하는 비트 중 일부 비트(즉, 미리 지정된 비트 패턴을 갖지 않는 비트)만 선택적으로 사용할 수 있다.
디코드부(110)는 적어도 하나의 오퍼랜드에 포함된 복수의 비트가 기정의된 패턴으로 구성되어 있는 경우, 복수의 비트에서 기정의된 패턴을 제외한 다른 비트들을 이용하여 테이블의 특정 엔트리를 가리키는 인덱스를 계산할 수 있다. 이 때 기정의된 패턴을 갖는 비트는 예를 들어, 모두 '0'이거나 모두 '1'일 수 있다.
예를 들어, 도 5를 참조하면, 'MUL 2, 4'로 구성된 MUL 명령어가 직접값 2와 4를 오퍼랜드로 가지고 있는 경우, 디코드부(110)는 직접값 2와 4 각각을 나타내는 8개 비트들 중 4개 비트(직접값 2의 경우, '0010'이고, 직접값 4의 경우, '0100')만 선택하여 [수학식 8]과 같이, 테이블의 특정 엔트리의 인덱스를 계산할 수 있다. 이 때, 선택되지 않은 비트들은 모두 '0'을 가지고 있다. 만일 선택되지 않은 비트들이 미리 정해진 비트 패턴을 가지고 있지 않은 경우, 해당 MUL 명령어는 기존 방식대로 연산될 수 있다.
[수학식 8]
index <= opcode(MUL) ⊙ 0010 ⊙ 0100
앞에서 설명한 본 발명의 일 실시 예에서 해당 MUL 명령어의 결과를 저장하는 테이블은
Figure PCTKR2022008913-appb-img-000001
개의 엔트리를 가질 수 있다.
이와 같이 오퍼랜드의 일부 비트만을 이용하여 인덱스를 계산함으로써, 본 발명은 오퍼랜드가 가질 수 있는 값 중 특정 영역에 대한 결과만 테이블에 유지하고 나머지 영역에 대한 결과는 테이블에 유지하지 않음으로써 결과적으로 테이블 크기를 제한할 수 있다.
엔트리 검색부(120)는 계산된 인덱스를 이용하여 테이블에서 해당 인덱스가 가리키는 특정 엔트리를 검색할 수 있다.
이와 같이, 본 발명은 ALU에서 명령어 실행을 바로 실행하는 대신 테이블에 명령어의 실행 결과를 저장하고, 테이블에서 실행 결과를 찾아 사용함으로써 불필요한 ALU 연산 실행을 회피할 수 있다.
만일, 인덱스가 가리키는 특정 엔트리가 테이블에 존재하지 않거나 특정 엔트리를 포함하는 테이블이 존재하지 않는 경우, 해당 명령어는 기존의 방식대로 ALU에서 연산될 수 있다.
전송부(130)는 검색된 특정 엔트리에 저장된 데이터를 목적 레지스터 또는 메모리로 전송할 수 있다.
예를 들어, 'MUL r0, r1, r2'로 구성된 MUL 명령어가 레지스터 r2를 목적 레지스터로 지정한다면, 해당 MUL 명령어의 결과값은 레지스터 r2로 전달된다. 다른 예로, 도 3을 참조하면 'MUL r0, r1'(예컨대, MUL 2, 4)로 구성된 MUL 명령어에 목적 레지스터를 명시하지 않았다면 해당 MUL 명령어의 결과값은 누산기(Accumulator) 레지스터와 같이 미리 지정된 레지스터로 전달된다.
본 발명의 또 다른 일 실시예에 따르면, COMPARE(또는 TEST) 명령어는 'COMPARE r1, r2'와 같이 두 개의 오퍼랜드를 가질 수 있다. 이 경우, 디코드부(110)는 COMPARE 명령어의 오프코드 r1 및 r2에 있는 값을 가지고 조합 연산을 적용하여 인덱스를 계산할 수 있다. 인덱스가 가리키는 특정 엔트리가 검색되면, 전송부(130)는 검색된 특정 엔트리에 저장된 데이터를 Flag(또는 PSW) 레지스터 또는 명령어가 지정하는 목적 레지스터로 전송할 수 있다. 만일, 해당 특정 엔트리가 존재하지 않으면 COMPARE(또는 TEST) 명령어는 기존 방식대로 연산될 수 있다.
DIVIDE, MODULE, ADD, SUBSTRACT와 같은 여러 종류의 명령어들 역시 상기 실시 예와 동일한 방법으로 디코드 및 실행될 수 있다. 구체적으로 오프코드, 오퍼랜드, 그리고 추가 정보를 대상으로 조합 연산을 적용하여 인덱스가 계산되고, 인덱스가 가리키는 테이블의 엔트리의 값이 목적 레지스터나 메모리로 전달됨으로써 해당 명령어들이 실행될 수 있다.
본 발명의 디코드와 실행 방법은 상기 실시 예에서 기술한 명령어에만 적용되는 것은 아니고, 모든 명령어에 적용될 수 있는 것으로 간주되어야 한다.
이상적으로, 프로세서 내부에 필요한 모든 테이블을 유지할 수 있다면, 본 발명의 방법들은 모든 명령의 모든 오퍼랜드 조합에 적용될 수도 있다. 하지만, 현실적으로 프로세서 내부의 공간은 제한적이어서 모든 테이블을 저장할 수 있으며, 따라서 테이블 크기를 줄이는 기법들이 필요하다.
판단부(140)는 명령어 및 적어도 하나의 오프랜드에 대한 범위에 기초하여 오프코드 또는 적어도 하나의 오퍼랜드로부터 예측 가능한 비트열이 테이블에 존재하는지 여부를 판단할 수 있다.
저장부(100)는 명령어의 오프코드 또는 적어도 하나의 오퍼랜드로부터 예측 가능한 비트열(즉, 패턴을 갖는 비트열)이 테이블(즉, 테이블의 엔트리에 저장된 데이터)에 존재하는 경우, 예측 가능한 비트열을 제외한 나머지 비트열을 테이블의 엔트리에 저장할 수 있다. 이 때, 예측할 수 없는 비트열만 테이블의 엔트리에 유지함으로써 테이블 크기를 줄일 수 있다.
예를 들어, 도 6을 참조하면, 'ADD 5, 8'로 구성된 ADD 명령어의 경우, 저장부(100)는 'ADD 5, 8'에 대한 결과값 중 예측 가능한 비트열인 '0000 ... 0000'을 제외한 예측 가능하지 않은 8비트값(601)인 '00001101'을 테이블의 엔트리에 저장할 수 있다.
예를 들어, 'ADD #v1, #v2'로 구성된 ADD 명령어는 두 개의 오퍼랜드(#v1, #v2)를 가지고 있다. 이 때, 오퍼랜드 #v1, #v2 모두가 127 보다 작으면 해당 ADD 명령어의 실행 결과값은
Figure PCTKR2022008913-appb-img-000002
보다 작다. 이 경우 결과값을 저장하는 테이블의 엔트리 크기는 8 비트가 될 수 있다.
다시 도 6을 참조하면, 'ADD 5, 8'로 구성된 ADD 명령어에 대한 실행 단계의 경우, 예측 가능한 비트값(603)은 모두 0으로 채우고, 예측 가능하지 않은 8비트값(601)은 테이블의 엔트리로부터 가져오고, 예측 가능한 비트값(603) 및 예측 가능하지 않은 8비트값(601)의 조합을 통해 최종 결과값(605)이 도출될 수 있다.
한편, 테이블에는 중복된 값을 가지는 엔트리가 복수개 존재할 수 있다. 이러한 중복된 엔트리 중 하나를 제외한 나머지가 제거될 수 있다. 예를 들어, 'MUL r1, r2'로 구성된 MUL 명령어와 'MUL r2, r1'으로 구성된 MUL 명령어는 동일한 값을 가진다.
앞서 예시한 명령어들(즉, 연산 결과가 동일한 명령어 'MUL r1, r2' 및 'MUL r2, r1')이 있는 경우, 디코드부(110)는 명령어에 포함된 적어도 하나의 오퍼랜드의 순서를 변경하여 테이블의 특정 엔트리를 가리키는 복수의 인덱스를 계산할 수 있다.
예를 들어, 'MUL r1, r2'에 대한 제 1 인덱스는 [수학식 9]와 같이 계산되고, 'MUL r2, r1'에 대한 제 2 인덱스는 [수학식 10]과 같이 계산될 수 있다.
[수학식 9]
제 1 인덱스 = opcode(MUL) ⊙ value(r1) ⊙ value(r2)
[수학식 10]
제 2 인덱스 = opcode(MUL) ⊙ value(r2) ⊙ value(r1)
이 때, 테이블에서 제 1 인덱스 및 제 2 인덱스가 가리키는 엔트리들은 결국 동일한 결과값을 가지고 있다. 이 경우, 저장부(100)는 제 1 인덱스 및 제 2 인덱스가 가리키는 중복된 복수의 엔트리 중 하나를 제외한 나머지 엔트리를 테이블에서 삭제할 수도 있다. 여기서, 복수의 인덱스는 결국 테이블에서 동일한 데이터를 가리키게 될 수 있으므로 동일한 데이터를 갖는 여분의 엔트리를 제거함으로써 테이블 크기를 줄일 수 있다.
디코드부(110)는 'MUL r1, r2'을 구성하는 명령어가 디코드될 때, 오퍼랜드 r1 와 r2 간의 순서를 바꾸어 복수의 인덱스(제 1 인덱스, 제 2 인덱스)를 모두 계산할 수 있다.
엔트리 검색부(120)는 테이블에서 복수의 인덱스가 가리키는 엔트리를 검색할 수 있다.
엔트리 검색부(120)는 복수의 인덱스가 가리키는 테이블 내 엔트리들 중 존재하는 엔트리에서 데이터를 가져올 수 있다. 만일, 복수의 인덱스가 가리키는 엔트리가 모두 존재하지 않는 경우 해당 명령어는 기존의 방식대로 연산될 수 있다.
전송부(130)는 검색된 복수의 인덱스가 가리키는 엔트리에 저장된 데이터를 목적 레지스터 또는 상기 메모리로 전송할 수 있다.
한편, 테이블의 크기를 줄이기 위해서, 계산부(150)는 오퍼랜드에 제 1 오퍼랜드 및 제 2 오퍼랜드를 포함하는 경우, 제 1 오퍼랜드 및 제 2 오퍼랜드 각각을 기설정된 크기로 분할하고, 분할된 제 1 오퍼랜드 및 분할된 제 2 오퍼랜드를 이용하여 계산된 부분 결과값들을 합성하여 명령어의 최종 결과값을 계산할 수 있다. 이러한 방식을 이하에서는 '값-분할' 방식이라고 명명하겠다.
예를 들어, 도 7을 참조하면 'COMPARE V1, V2'로 구성된 COMPARE 명령어의 경우, 오퍼랜드를 더 작은 크기의 조각으로 나눌 수 있다. COMPARE 명령어는 두 개의 오퍼랜드 V1와 V2를 가지고 있으며, value(V1)과 value(V2)는 모두 32 비트값일 수 있다. COMPARE 명령어는 value(V1)과 value(V2)를 비교한 후 그 결과를 Flag 레지스터에 저장한다. 이 때, 두 개의 32 비트 오퍼랜드가 만드는 모든 가능한 조합에 대한 결과값을 저장하기 위해서는 테이블은 4G*4G(=
Figure PCTKR2022008913-appb-img-000003
)개의 엔트리를 가지고 있어야 한다.
이 경우, 계산부(150)는 32 비트값을 갖는 value(V1)를 16비트값을 갖는
Figure PCTKR2022008913-appb-img-000004
로 분할하고, value(V2)를 16비트값을 갖는
Figure PCTKR2022008913-appb-img-000005
로 분할할 수 있다.
계산부(150)는 COMPARE 명령어의 오프코드와 두 개의 오퍼랜드,
Figure PCTKR2022008913-appb-img-000006
를 조합하여 제 1 인덱스를 계산한다.
엔트리 검색부(120)는 테이블에서 제 1 인덱스가 가리키는 엔트리를 검색하고, 검색된 엔트리로부터 제 1 부분 결과값
Figure PCTKR2022008913-appb-img-000007
을 가져올 수 있다.
다시, 계산부(150)는 COMPARE 명령어의 오프코드와 두 개의 오퍼랜드,
Figure PCTKR2022008913-appb-img-000008
를 조합하여 제 2 인덱스를 계산한다.
엔트리 검색부(120)는 테이블에서 제 2 인덱스가 가리키는 엔트리를 검색하고, 검색된 엔트리로부터 제 2 부분 결과값
Figure PCTKR2022008913-appb-img-000009
을 가져올 수 있다.
이 경우, 두 개의 16 비트값들을 비교하는 COMPARE 명령어의 결과값들을 저장하기 위해서 필요한 테이블의 엔트리 개수는 16K*16K(=
Figure PCTKR2022008913-appb-img-000010
)가 될 수 있다.
계산부(150)는 합성 연산을 통해 제 1 부분 결과값
Figure PCTKR2022008913-appb-img-000011
및 제 2 부분 결과값
Figure PCTKR2022008913-appb-img-000012
를 합성하여 COMPARE 명령어의 최종 결과값(F, 705)을 계산할 수 있다. 여기서, 합성 연산은 도 7과 같이, ⓧ로 표시하였다.
합성 연산은 다음과 같이 계산될 수 있다.
F의 Zero 비트 = 1,
Figure PCTKR2022008913-appb-img-000013
의 Zero 비트가 모두 1인 경우에는 0
F의 Equal 비트 = 1,
Figure PCTKR2022008913-appb-img-000014
의 Equal 비트가 모두 1인 경우에는 0
본 발명의 상기 실시 예와 같이, 오퍼랜드를 더 작은 조각으로 분할하면, 테이블 크기를 줄일 수 있고, 분할된 작은 조각들로부터 부분 결과값들을 구한 후, 이러한 부분 결과값들을 합성하여 최종 결과값을 구할 수 있다.
이 때 분할된 오퍼랜드들의 부분 결과값(연산 결과)만이 테이블에 저장되기 때문에 테이블 크기를 줄일 수 있다.
다른 일 실시 예로, 'DIVIDE r1, #v2'로 구성된 DIVIDE 명령어의 오퍼랜드를 분할하는 것이다. 이 때, 계산부(150)는 32 비트값을 갖는 value(r1)를 두 개의 16-비트값을 갖는
Figure PCTKR2022008913-appb-img-000015
로 분할할 수 있다. 이 후, 계산부(150)는 DIVIDE 명령어의 오퍼랜드 #v2와,
Figure PCTKR2022008913-appb-img-000016
을 이용하여 결과값 Res를 계산할 수 있다. 이 때, 계산부(150)는 [수학식 11]과 같이 DIVIDE 연산('/'), ADD 연산('+') 및 MODULO 연산('%')을 적용하여 결과값 최종 결과값 Res를 계산할 수 있다.
[수학식 11]
Figure PCTKR2022008913-appb-img-000017
32 비트 오퍼랜드를 나누는 DIVIDE 명령어는 16비트 오퍼랜드를 나누는 두 번의 DIVIDE 연산, 한 번의 MODULO 연산, 그리고 한 번의 ADD 연산으로 실행될 수 있다. 이처럼 부분 결과값을 구하기 위해 다양한 연산이 실행될 수 있다. 최종 결과값인 Res는 부분 결과값인
Figure PCTKR2022008913-appb-img-000018
이 합성되어 계산될 수 있다.
앞서 설명한 바와 같이, 오퍼랜드를 더 작은 조각으로 분할하여 테이블 크기를 줄이는 기법은 상기 실시 예에서 나타난 명령어들에게만 적용되는 것이 아니며, 모든 종류의 명령에 적용될 수 있다.
한편, 명령어들 간에 테이블의 엔트리를 공유함으로써 테이블 크기를 줄일 수 있다. 예를 들어, 'ADD 10, 0' 명령어와 ADD 10, 2' 명령어의 인덱스들은 동일한 테이블의 다른 두 엔트리를 가리킬 수 있다. 이와 같이 ADD 명령어는 서로 다른 오퍼랜드들에 대하여 하나의 테이블을 공유할 수 있다.
예를 들어, 도 8을 참조하면, 결과값이 동일한 경우 SUBTRACT, ADD, MUL, 그리고 MODULO와 같은 명령어들은 동일한 테이블을 공유할 수 있다.
상기 실시 예에서 나타난 명령어들만 테이블을 공유할 수 있는 것이 아니며, 모든 명령어가 테이블을 공유할 수 있다.
저장부(100)는 테이블에서 자주 사용되는 인덱스가 가리키는 엔트리만 선택적으로 테이블에 유지하거나 최근에 사용된 인덱스가 가리키는 엔트리들만 선택적으로 테이블에 유지할 수 있다. 이를 통해, 테이블 크기를 줄일 수 있다.
현대 프로세서들은 하나의 칩에 다수의 코어를 내장하고 있다. 이 때, 다수의 코어가 테이블들을 공유할 수 있다. 또한, 테이블들은 동시에 수행되는 다수의 명령어들 사이에서 공유될 수 있다.
이를 통해, 본 발명은 수백개의 코어를 내장한 멀티코어 아키텍처 프로세서에서 에너지 소비와 발열 문제를 해결할 수 있다.
한편, 당업자라면, 저장부(100), 디코드부(110), 엔트리 검색부(120), 전송부(130), 판단부(140) 및 계산부(150) 각각이 분리되어 구현되거나, 이 중 하나 이상이 통합되어 구현될 수 있음을 충분히 이해할 것이다.
도 9는 본 발명의 일 실시예에 따른, 명령어를 처리하는 방법을 나타낸 흐름도이다.
도 9를 참조하면, 단계 S901에서 프로세서 모듈(10)은 명령어의 실행 결과를 테이블에 저장할 수 있다.
단계 S903에서 프로세서 모듈(10)은 명령어의 오프코드 및 적어도 하나의 오퍼랜드를 이용하여 테이블의 특정 엔트리를 가리키는 인덱스를 계산할 수 있다.
단계 S905에서 프로세서 모듈(10)은 인덱스를 이용하여 특정 엔트리를 검색할 수 있다.
단계 S907에서 프로세서 모듈(10)은 검색된 특정 엔트리에 저장된 데이터를 목적 레지스터 또는 메모리로 전송할 수 있다.
상술한 설명에서, 단계 S901 내지 S907은 본 발명의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (11)

  1. 명령어를 처리하는 방법에 있어서,
    명령어의 실행 결과를 테이블에 저장하는 단계;
    상기 명령어의 오프코드 및 적어도 하나의 오퍼랜드를 이용하여 상기 테이블의 특정 엔트리를 가리키는 인덱스를 계산하는 단계;
    상기 인덱스를 이용하여 상기 특정 엔트리를 검색하는 단계; 및
    상기 검색된 특정 엔트리에 저장된 데이터를 목적 레지스터 또는 메모리로 전송하는 단계
    를 포함하는 것인, 명령어 처리 방법.
  2. 제 1 항에 있어서,
    상기 인덱스를 계산하는 단계는
    상기 명령어의 오프코드, 적어도 하나의 오퍼랜드 및 추가 정보를 이용한 조합 연산을 통해 상기 인덱스를 계산하는 단계를 포함하는 것인, 명령어 처리 방법.
  3. 제 1 항에 있어서,
    상기 인덱스를 계산하는 단계는
    상기 적어도 하나의 오퍼랜드에 포함된 복수의 비트(bit)가 기정의된 패턴으로 구성되어 있는 경우, 상기 복수의 비트에서 상기 기정의된 패턴을 제외한 다른 비트들을 이용하여 상기 인덱스를 계산하는 단계를 포함하는 것인, 명령어 처리 방법.
  4. 제 1 항에 있어서,
    상기 명령어 및 상기 적어도 하나의 오프랜드에 대한 범위에 기초하여 상기 오프코드 또는 상기 적어도 하나의 오퍼랜드로부터 예측 가능한 비트열이 상기 테이블에 존재하는지 여부를 판단하는 단계를 더 포함하는 것인, 명령어 처리 방법.
  5. 제 4 항에 있어서,
    상기 오프코드 또는 상기 적어도 하나의 오퍼랜드로부터 예측 가능한 비트열이 상기 테이블에 존재하는 경우, 상기 비트열을 제외한 나머지 비트열을 상기 테이블의 엔트리에 저장하는 단계를 더 포함하는 것인, 명령어 처리 방법.
  6. 제 1 항에 있어서,
    상기 인덱스를 계산하는 단계는
    상기 적어도 하나의 오퍼랜드의 순서를 변경하여 복수의 인덱스를 계산하는 단계를 포함하는 것인, 명령어 처리 방법.
  7. 제 6 항에 있어서,
    상기 인덱스를 이용하여 상기 특정 엔트리를 검색하는 단계는
    상기 테이블에서 상기 복수의 인덱스가 가리키는 엔트리를 검색하는 단계를 포함하는 것인, 명령어 처리 방법.
  8. 제 7 항에 있어서,
    상기 전송하는 단계는 상기 검색된 복수의 인덱스가 가리키는 엔트리에 저장된 데이터를 상기 목적 레지스터 또는 상기 메모리로 전송하는 단계를 포함하는 것인, 명령어 처리 방법.
  9. 제 7 항에 있어서,
    상기 복수의 인덱스가 가리키는 중복된 복수의 엔트리 중 하나를 제외한 나머지 엔트리를 상기 테이블에서 삭제하는 단계를 더 포함하는 것인, 명령어 처리 방법.
  10. 제 1 항에 있어서,
    상기 적어도 하나의 오퍼랜드에는 제 1 오퍼랜드 및 제 2 오퍼랜드를 포함하고,
    상기 제 1 오퍼랜드 및 상기 제 2 오퍼랜드 각각을 기설정된 크기로 분할하고, 상기 분할된 제 1 오퍼랜드 및 상기 분할된 제 2 오퍼랜드를 이용하여 계산된 부분 결과값들을 합성하여 상기 명령어의 최종 결과값을 계산하는 단계를 더 포함하는 것인, 명령어 처리 방법.
  11. 명령어를 처리하는 프로세서 모듈에 있어서,
    명령어의 실행 결과를 테이블에 저장하는 저장부;
    상기 명령어의 오프코드 및 적어도 하나의 오퍼랜드를 이용하여 상기 테이블의 특정 엔트리를 가리키는 인덱스를 계산하는 디코드부;
    상기 인덱스를 이용하여 상기 특정 엔트리를 검색하는 엔트리 검색부; 및
    상기 검색된 특정 엔트리에 저장된 데이터를 목적 레지스터 또는 메모리로 전송하는 전송부
    를 포함하는 것인, 프로세서 모듈.
PCT/KR2022/008913 2022-05-11 2022-06-23 명령어를 처리하는 방법 및 이를 위한 프로세서 모듈 WO2023219204A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2022-0057742 2022-05-11
KR1020220057742A KR20230158257A (ko) 2022-05-11 2022-05-11 명령어를 처리하는 방법 및 이를 위한 프로세서 모듈

Publications (1)

Publication Number Publication Date
WO2023219204A1 true WO2023219204A1 (ko) 2023-11-16

Family

ID=88730446

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/008913 WO2023219204A1 (ko) 2022-05-11 2022-06-23 명령어를 처리하는 방법 및 이를 위한 프로세서 모듈

Country Status (2)

Country Link
KR (1) KR20230158257A (ko)
WO (1) WO2023219204A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100953207B1 (ko) * 2002-04-30 2010-04-15 어드밴스드 마이크로 디바이시즈, 인코포레이티드 로드/저장 오퍼레이션들을 바이패스하기 위하여 추론적 소스 오퍼랜드를 사용하는 시스템 및 방법
KR101123378B1 (ko) * 2003-07-08 2012-03-27 글로벌파운드리즈 인크. 인덱스 검사를 사용하는 저장-로드 포워딩 버퍼
JP6711480B2 (ja) * 2014-12-23 2020-06-17 インテル・コーポレーション ベクトルインデックスロードおよびストアのための方法および装置
KR102138697B1 (ko) * 2015-05-20 2020-07-28 퀄컴 인코포레이티드 캐시 태그 압축을 위한 방법 및 장치
KR20210011060A (ko) * 2018-06-18 2021-01-29 어드밴스드 마이크로 디바이시즈, 인코포레이티드 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적 수행

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950025536A (ko) 1994-02-28 1995-09-18 김주용 분기 명령 처리를 위한 명령어 공급장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100953207B1 (ko) * 2002-04-30 2010-04-15 어드밴스드 마이크로 디바이시즈, 인코포레이티드 로드/저장 오퍼레이션들을 바이패스하기 위하여 추론적 소스 오퍼랜드를 사용하는 시스템 및 방법
KR101123378B1 (ko) * 2003-07-08 2012-03-27 글로벌파운드리즈 인크. 인덱스 검사를 사용하는 저장-로드 포워딩 버퍼
JP6711480B2 (ja) * 2014-12-23 2020-06-17 インテル・コーポレーション ベクトルインデックスロードおよびストアのための方法および装置
KR102138697B1 (ko) * 2015-05-20 2020-07-28 퀄컴 인코포레이티드 캐시 태그 압축을 위한 방법 및 장치
KR20210011060A (ko) * 2018-06-18 2021-01-29 어드밴스드 마이크로 디바이시즈, 인코포레이티드 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적 수행

Also Published As

Publication number Publication date
KR20230158257A (ko) 2023-11-20

Similar Documents

Publication Publication Date Title
KR910000364B1 (ko) 이뮬레이션 시스템 및 그 방법
JP5960115B2 (ja) プロセッサに関するロード/移動及び複製命令
US6647489B1 (en) Compare branch instruction pairing within a single integer pipeline
JP2987308B2 (ja) 情報処理装置
EP1944696B1 (en) Arithmetic processing apparatus, information processing apparatus, and method for accessing memory of the arithmetic processing apparatus
JP2816248B2 (ja) データプロセッサ
WO2011091768A1 (en) Processor-cache system and method
WO2010058981A2 (ko) 고수준 언어 코드를 hdl 코드로 변환하는 방법 및 시스템
US20050172105A1 (en) Coupling a general purpose processor to an application specific instruction set processor
CN113553209A (zh) 用于存储器损坏检测的硬件装置和方法
KR100254008B1 (ko) 2개의 명령을 동시에 실행할 수 있는 데이타 프로세서
JP2001195250A (ja) 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置
WO2014000624A1 (en) High-performance instruction cache system and method
KR101016257B1 (ko) 프로세서 및 정보 처리 장치
JP5335440B2 (ja) オペランドの早期の条件付き選択
CN107925690B (zh) 指示调用或返回的意图的控制转移指令
WO2023219204A1 (ko) 명령어를 처리하는 방법 및 이를 위한 프로세서 모듈
JP2009524167A5 (ko)
CN104516726A (zh) 一种指令处理的方法及装置
WO2018101607A1 (ko) 벡터 프로세서 및 그 제어 방법
WO2015080440A1 (en) Method and processor for executing instructions, method and apparatus for encoding instructions, and recording medium therefor
WO2015102266A1 (en) Processor and method of controlling the same
WO2023214668A1 (ko) 컴파일러 데이터 의존성 정보를 이용한 프로세서의 명령어 연산 수행 방법
CN113849222A (zh) 流水线化乱序页未命中处理程序
JP3445535B2 (ja) バイパス制御回路

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22941791

Country of ref document: EP

Kind code of ref document: A1